<?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>238516</bug_id>
          
          <creation_ts>2022-03-29 11:29:34 -0700</creation_ts>
          <short_desc>RemoteRenderingBackend should have dedicated IPC::Connection for out-of-stream messages</short_desc>
          <delta_ts>2022-04-19 13:22:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Canvas</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>238608</dependson>
    
    <dependson>238618</dependson>
    
    <dependson>238622</dependson>
          <blocked>237674</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>dino</cc>
    
    <cc>fujii</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1856110</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-03-29 11:29:34 -0700</bug_when>
    <thetext>RemoteRenderingBackend should have dedicated IPC::Connection for out-of-stream messages</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856111</commentid>
    <comment_count>1</comment_count>
      <attachid>456046</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-03-29 11:31:30 -0700</bug_when>
    <thetext>Created attachment 456046
wip for wed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857232</commentid>
    <comment_count>2</comment_count>
      <attachid>456348</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-04-01 04:49:05 -0700</bug_when>
    <thetext>Created attachment 456348
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857243</commentid>
    <comment_count>3</comment_count>
      <attachid>456353</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-04-01 05:38:35 -0700</bug_when>
    <thetext>Created attachment 456353
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858477</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-05 11:30:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/91306116&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859205</commentid>
    <comment_count>5</comment_count>
      <attachid>456913</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-04-07 05:34:15 -0700</bug_when>
    <thetext>Created attachment 456913
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859319</commentid>
    <comment_count>6</comment_count>
      <attachid>456913</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-04-07 10:47:23 -0700</bug_when>
    <thetext>Comment on attachment 456913
Patch

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

&gt; Source/WebKit/ChangeLog:9
&gt; +        of using the WP-GPUP main connection. RemoteDisplayListRecorder starts listenting to

&quot;listenting&quot;

&gt; Source/WebKit/ChangeLog:14
&gt; +        is a &quot;message queue&quot;. This way when each out-of-stream message marker is processed, the

&quot;in a&quot;?

&gt; Source/WebKit/ChangeLog:36
&gt; +        After, untrusted WP instantiates these IPC stream dedicated connections.
&gt; +        This is accounted in the case where IPC::Connection ensures that IPC::MessageNames::InitializeConnection
&gt; +        message is not acted on twice.

Is this a problem?

&gt; Source/WebKit/Platform/IPC/StreamClientConnection.cpp:56
&gt; +    // For Connection, &quot;server&quot; means the connection which was created first, the connection which is not sent through IPC to other party.
&gt; +    // For Connection, &quot;client&quot; means the connection which was established by receiving it through IPC and creating IPC::Connection out from the identifier.
&gt; +    // For StreamClientConnection, &quot;Client&quot; means the party that mostly does sending, e.g. untrusted party.
&gt; +    // For StreamServerConnection, &quot;Server&quot; means the party that mostly does receiving, e.g. the trusted party which holds the destination object to communicate with.

This is confusing. For StreamClientConnection can we call the &quot;sender&quot; and &quot;receiver&quot; instead?

&gt; Source/WebKit/Platform/IPC/StreamClientConnection.cpp:63
&gt; +StreamClientConnection::StreamClientConnection(Ref&lt;Connection&gt;&amp;&amp; connection, size_t size, std::unique_ptr&lt;DedicatedConnectionClient&gt;&amp;&amp; dedicatedConnectionClient)

size -&gt; bufferSize

&gt; Source/WebKit/Platform/IPC/StreamClientConnection.h:66
&gt; +    // Creates StreamClientConnection where the out of stream messages and server replies are
&gt; +    // sent through the passed IPC::Connection. The messages from the server are delivered to
&gt; +    // the caller through the passed IPC::Connection.
&gt; +    // Note: This function should be used only in cases where the
&gt; +    // stream server starts listening to messages with new identifiers on the same thread as
&gt; +    // in which the server IPC::Connection dispatch messages. At the time of writing,
&gt; +    // IPC::Connection dispatches messages only in main thread.

Which code paths use this non-dedicated connection setup?

&gt; Source/WebKit/Platform/IPC/StreamServerConnection.cpp:36
&gt; +// Part 2. of the workaround for not having non-dispatching Connection. We have a dummy Connection::Client which is expected to
&gt; +// never get any messages.

This would be better as // FIXME: Need to have non-dispatching Connections webkit.org/b/NNNN

&gt; Source/WebKit/Platform/IPC/StreamServerConnection.cpp:95
&gt; +        // Part 1. of the workaround for not having non-dispatching Connection. Divert all messages to the receive queue.

This would be better as // FIXME: Need to have non-dispatching Connections webkit.org/b/NNNN

&gt; Source/WebKit/Platform/IPC/StreamServerConnection.h:68
&gt; +    // Creates StreamClientConnection where the out of stream messages and server replies are
&gt; +    // received through the passed IPC::Connection. The messages from the server are sent to
&gt; +    // the passed IPC::Connection.
&gt; +    // Note: This function should be used only in cases where the
&gt; +    // stream server starts listening to messages with new identifiers on the same thread as
&gt; +    // in which the server IPC::Connection dispatch messages. At the time of writing,
&gt; +    // IPC::Connection dispatches messages only in main thread.
&gt; +    static Ref&lt;StreamServerConnection&gt; create(Connection&amp;, StreamConnectionBuffer&amp;&amp;, StreamConnectionWorkQueue&amp;);
&gt; +
&gt; +    // Creates StreamServerConnection where the out of stream messages and server replies are
&gt; +    // received through a dedidcated, new IPC::Connection. The messages from the server are sent to
&gt; +    // the dedicated conneciton.
&gt; +    static Ref&lt;StreamServerConnection&gt; createWithDedicatedConnection(Attachment&amp;&amp; connectionIdentifier, StreamConnectionBuffer&amp;&amp;, StreamConnectionWorkQueue&amp;);

Do we need the repeated comments?

&gt; Source/WebKit/Platform/IPC/StreamServerConnection.h:90
&gt; +    enum class HasDedicatedConnection { No, Yes };

: bool</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859626</commentid>
    <comment_count>7</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-04-08 01:38:53 -0700</bug_when>
    <thetext>Thanks!

(In reply to Simon Fraser (smfr) from comment #6)
&gt; &gt; Source/WebKit/ChangeLog:36
&gt; &gt; +        After, untrusted WP instantiates these IPC stream dedicated connections.
&gt; &gt; +        This is accounted in the case where IPC::Connection ensures that IPC::MessageNames::InitializeConnection
&gt; &gt; +        message is not acted on twice.
&gt; 
&gt; Is this a problem?

This was just a remark why the change in IPC::Connection was made.

&gt; 
&gt; &gt; Source/WebKit/Platform/IPC/StreamClientConnection.cpp:56
&gt; &gt; +    // For Connection, &quot;server&quot; means the connection which was created first, the connection which is not sent through IPC to other party.
&gt; &gt; +    // For Connection, &quot;client&quot; means the connection which was established by receiving it through IPC and creating IPC::Connection out from the identifier.
&gt; &gt; +    // For StreamClientConnection, &quot;Client&quot; means the party that mostly does sending, e.g. untrusted party.
&gt; &gt; +    // For StreamServerConnection, &quot;Server&quot; means the party that mostly does receiving, e.g. the trusted party which holds the destination object to communicate with.
&gt; 
&gt; This is confusing. For StreamClientConnection can we call the &quot;sender&quot; and
&gt; &quot;receiver&quot; instead?

This was just a remark trying why &quot;server&quot; Connection is being given tho Stream*Client*Connection.
Rephrased, to be a bit clearer.

Might be good to rename StreamClientConnection and StreamServerConnection back to *Sender* and *Receiver* connection like they originally were, but maybe not in this commit.



&gt; 
&gt; &gt; Source/WebKit/Platform/IPC/StreamClientConnection.h:66
&gt; &gt; +    // Creates StreamClientConnection where the out of stream messages and server replies are
&gt; &gt; +    // sent through the passed IPC::Connection. The messages from the server are delivered to
&gt; &gt; +    // the caller through the passed IPC::Connection.
&gt; &gt; +    // Note: This function should be used only in cases where the
&gt; &gt; +    // stream server starts listening to messages with new identifiers on the same thread as
&gt; &gt; +    // in which the server IPC::Connection dispatch messages. At the time of writing,
&gt; &gt; +    // IPC::Connection dispatches messages only in main thread.
&gt; 
&gt; Which code paths use this non-dedicated connection setup?

WebGL and WebGPU for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859627</commentid>
    <comment_count>8</comment_count>
      <attachid>457030</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-04-08 01:40:04 -0700</bug_when>
    <thetext>Created attachment 457030
For landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859631</commentid>
    <comment_count>9</comment_count>
      <attachid>457031</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-04-08 02:02:55 -0700</bug_when>
    <thetext>Created attachment 457031
For landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860265</commentid>
    <comment_count>10</comment_count>
      <attachid>457250</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-04-11 05:56:16 -0700</bug_when>
    <thetext>Created attachment 457250
For landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860639</commentid>
    <comment_count>11</comment_count>
      <attachid>457323</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-04-12 02:48:05 -0700</bug_when>
    <thetext>Created attachment 457323
[fast-cq] For landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861050</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-13 00:30:26 -0700</bug_when>
    <thetext>Committed r292803 (249585@main): &lt;https://commits.webkit.org/249585@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 457323.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862633</commentid>
    <comment_count>13</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2022-04-19 10:52:59 -0700</bug_when>
    <thetext>The changed in https://github.com/WebKit/WebKit/commit/df139fb58a6cf833efe7bc3d5e83e9b3e46cd486

broke this API test TestWebKitAPI.IPCTestingAPI.CanReceiveIPCSemaphore

tracking in https://bugs.webkit.org/show_bug.cgi?id=239507</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862697</commentid>
    <comment_count>14</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2022-04-19 13:22:59 -0700</bug_when>
    <thetext>One more regression:
  Bug 239488 – WinCairo WebKit2 significant performance regression</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456046</attachid>
            <date>2022-03-29 11:31:30 -0700</date>
            <delta_ts>2022-04-01 04:49:00 -0700</delta_ts>
            <desc>wip for wed</desc>
            <filename>bug-238516-20220329213128.patch</filename>
            <type>text/plain</type>
            <size>21858</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFhMmI0ZmVjYTUzMDQ1OWRl
MWM1ZDQwNzA4MzBkYjhmZjZhNDI1YzguLmFlMWNmOGJhYTg5MDBmZTUzZGI1NzE5M2Q1ZDY1M2Q0
YWZhYTY0NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjItMDMtMjkgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kIHNob3VsZCBoYXZlIGRlZGljYXRlZCBJUEM6OkNvbm5lY3Rpb24gZm9yIG91dC1vZi1z
dHJlYW0gbWVzc2FnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzODUxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVyaW5nQmFja2VuZCk6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0
ZVN0cmVhbUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6Cisg
ICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6On5SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5Ojpjb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRDbG9zZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpkaXNjb25uZWN0R1BVUHJvY2Vzc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp3YWl0Rm9yRGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNr
ZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp3YWl0
Rm9yRGlkRmx1c2gpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OnN0cmVhbUNvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgorCiAyMDIyLTAzLTI5ICBLaW1tbyBLaW5u
dW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBBdXhpbGlhcnlQcm9j
ZXNzOjpjcmVhdGVJUENDb25uZWN0aW9uUGFpciB0byBJUEM6OkNvbm5lY3Rpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAppbmRleCBiNDNkYmJlZjg0NjQ2MjMwN2Y4MjZkZDBhZTFkODJkYTk2ZGI4NzEzLi45N2QyZmRm
N2UwNzkxNWJiN2Y0ZThhZjc0M2E3ZTEzZDhlNGMwZTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC01MzIs
MTAgKzUzMiwxMCBAQCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eSYgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6aW1hZ2VEZWNvZGVyQVZGUHJveHkoKQogfQogI2VuZGlmCiAKLXZvaWQgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYgY3JlYXRpb25QYXJhbWV0ZXJzLCBJUEM6
OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW1CdWZmZXIpCit2b2lkIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIGNyZWF0aW9uUGFyYW1ldGVycywgSVBDOjpBdHRhY2ht
ZW50JiYgY29ubmVjdGlvbklkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYm
IHN0cmVhbUJ1ZmZlcikKIHsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZE1hcC5lbnN1cmUoY3JlYXRpb25QYXJhbWV0ZXJzLmlkZW50aWZpZXIsIFsmXSgpIHsK
LSAgICAgICAgcmV0dXJuIElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZSB7IFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShjcmVhdGlvblBhcmFt
ZXRlcnMpLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlcikpIH07CisgICAgICAgIHJldHVybiBJUEM6OlNj
b3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUgeyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpj
cmVhdGUoKnRoaXMsIFdURk1vdmUoY3JlYXRpb25QYXJhbWV0ZXJzKSwgV1RGTW92ZShjb25uZWN0
aW9uSWRlbnRpZmllciksIFdURk1vdmUoc3RyZWFtQnVmZmVyKSkgfTsKICAgICB9KTsKICAgICBB
U1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
aW5kZXggYjcyYzBiMzczNjJiNzM5ZGJmYTNlZDlhMGM0YTAxZTNiMjFiMWU5OS4uMDM0NGUzY2Mw
YzRmODEzMmU3ZGYzOTU1NTA3MTUzOTU4NjNlNjBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0yMTcsNyArMjE3
LDcgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlciYgbWVkaWFSZWNv
cmRlck1hbmFnZXIoKTsKICNlbmRpZgogCi0gICAgdm9pZCBjcmVhdGVSZW5kZXJpbmdCYWNrZW5k
KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiwgSVBDOjpTdHJlYW1D
b25uZWN0aW9uQnVmZmVyJiYpOworICAgIHZvaWQgY3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYsIElQQzo6QXR0YWNobWVudCYm
LCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CiAgICAgdm9pZCByZWxlYXNlUmVuZGVy
aW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAKICNpZiBFTkFCTEUoV0VC
R0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDFiODMyYTMxODNmODI5NGVjMDU3
Y2NhOWM3NmZhYmEwMDI0ZTU0YmIuLmVhM2MxNDdlYzQxOWMzZjQ5NTU2MzFjZTIwNTNkZTIwZDZi
NjViZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yMyw3ICsyMyw3IEBACiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiBtZXNzYWdlcyAtPiBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzIFdhbnRzRGlzcGF0Y2hNZXNzYWdlIHsKLSAgICB2b2lkIENyZWF0ZVJlbmRlcmluZ0Jh
Y2tlbmQoc3RydWN0IFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1l
dGVycyBjcmVhdGlvblBhcmFtZXRlcnMsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciBzdHJl
YW1CdWZmZXIpCisgICAgdm9pZCBDcmVhdGVSZW5kZXJpbmdCYWNrZW5kKHN0cnVjdCBXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMgY3JlYXRpb25QYXJhbWV0
ZXJzLCBJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlciBzdHJlYW1CdWZmZXIpCiAgICAgdm9pZCBSZWxlYXNlUmVuZGVyaW5nQmFj
a2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKQogI2lmIEVOQUJMRShXRUJHTCkKICAgICB2b2lkIENyZWF0ZUdyYXBoaWNzQ29u
dGV4dEdMKHN0cnVjdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmli
dXRlcywgV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCBXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgc3RyZWFtKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IDFkYzgyZmQxM2EyN2U2M2UyYTRiZTc1NGU3MWUy
M2UwNWFjOTllMDEuLmIyNmNjZjgxOGE0OTQ2Y2Q5YTg2NTFmZTc3MTdkOTFmNWI0YzZlZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTc2LDE2ICs3NiwzNCBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmPFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
Q3JlYXRpb25QYXJhbWV0ZXJzJiYgY3JlYXRpb25QYXJhbWV0ZXJzLCBJUEM6OlN0cmVhbUNvbm5l
Y3Rpb25CdWZmZXImJiBzdHJlYW1CdWZmZXIpCitSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4g
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlv
blBhcmFtZXRlcnMmJiBjcmVhdGlvblBhcmFtZXRlcnMsIElQQzo6QXR0YWNobWVudCYmIGNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW1CdWZm
ZXIpCiB7Ci0gICAgYXV0byBpbnN0YW5jZSA9IGFkb3B0UmVmKCpuZXcgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZChncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBXVEZNb3ZlKGNyZWF0aW9uUGFyYW1l
dGVycyksIFdURk1vdmUoc3RyZWFtQnVmZmVyKSkpOworICAgIGF1dG8gaW5zdGFuY2UgPSBhZG9w
dFJlZigqbmV3IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cywgV1RGTW92ZShjcmVhdGlvblBhcmFtZXRlcnMpLCBXVEZNb3ZlKGNvbm5lY3Rpb25JZGVudGlm
aWVyKSwgV1RGTW92ZShzdHJlYW1CdWZmZXIpKSk7CiAgICAgaW5zdGFuY2UtPnN0YXJ0TGlzdGVu
aW5nRm9ySVBDKCk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQogCi1SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlv
blBhcmFtZXRlcnMmJiBjcmVhdGlvblBhcmFtZXRlcnMsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlciYmIHN0cmVhbUJ1ZmZlcikKKy8vIFdvcmthcm91bmQgY29uc3RydWN0b3IgZnVuY3Rpb24g
dW50aWwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGlzIGEgZmlyc3QtY2xhc3MgY2l0aXpl
biBpbiBJUEMgbWVzc2FnZXMuCitzdGF0aWMgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlv
bj4gY3JlYXRlU3RyZWFtQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OkNsaWVudCYgY2xpZW50
LCBJUEM6OkF0dGFjaG1lbnQmJiBjb25uZWN0aW9uSWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyJiYgc3RyZWFtQnVmZmVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVl
dWUmIHdvcmtRdWV1ZSkKK3sKKyNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKKyAgICBJUEM6
OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbkhhbmRsZSB7IGNvbm5lY3Rpb25JZGVu
dGlmaWVyLnJlbGVhc2VGaWxlRGVzY3JpcHRvcigpIH07CisjZWxpZiBPUyhEQVJXSU4pCisgICAg
SVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25IYW5kbGUgeyBjb25uZWN0aW9u
SWRlbnRpZmllci5wb3J0KCkgfTsKKyNlbGlmIE9TKFdJTkRPV1MpCisgICAgSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25IYW5kbGUgeyBjb25uZWN0aW9uSWRlbnRpZmllci5o
YW5kbGUoKSB9OworI2Vsc2UKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIElQQzo6Q29ubmVj
dGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSGFuZGxlIHt9OworI2VuZGlmCisgICAgYXV0byBj
b25uZWN0aW9uID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKGNvbm5l
Y3Rpb25IYW5kbGUsIGNsaWVudCk7CisgICAgY29ubmVjdGlvbi0+b3BlbigpOworICAgIHJldHVy
biBJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb246OmNyZWF0ZShjb25uZWN0aW9uLmdldCgpLCBX
VEZNb3ZlKHN0cmVhbUJ1ZmZlciksIHdvcmtRdWV1ZSk7Cit9CisKK1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYg
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9u
UGFyYW1ldGVycyYmIGNyZWF0aW9uUGFyYW1ldGVycywgSVBDOjpBdHRhY2htZW50JiYgY29ubmVj
dGlvbklkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbUJ1ZmZl
cikKICAgICA6IG1fd29ya1F1ZXVlKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6Y3Jl
YXRlKCJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIHdvcmsgcXVldWUiKSkKLSAgICAsIG1fc3RyZWFt
Q29ubmVjdGlvbihJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb246OmNyZWF0ZShncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKSwgV1RGTW92ZShzdHJlYW1CdWZmZXIpLCBtX3dv
cmtRdWV1ZS5nZXQoKSkpCisgICAgLCBtX3N0cmVhbUNvbm5lY3Rpb24oY3JlYXRlU3RyZWFtQ29u
bmVjdGlvbigqdGhpcywgV1RGTW92ZShjb25uZWN0aW9uSWRlbnRpZmllciksIFdURk1vdmUoc3Ry
ZWFtQnVmZmVyKSwgbV93b3JrUXVldWUuZ2V0KCkpKQogICAgICwgbV9yZW1vdGVSZXNvdXJjZUNh
Y2hlKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mud2ViUHJvY2Vzc0lkZW50aWZpZXIoKSkKICAg
ICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KQogICAgICwgbV9yZXNvdXJjZU93bmVyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mud2ViUHJv
Y2Vzc0lkZW50aXR5KCkpCkBAIC0xNDIsNyArMTYwLDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKIAogSVBDOjpDb25uZWN0
aW9uKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuICZtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rp
b24oKTsKKyAgICByZXR1cm4gJm1fc3RyZWFtQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpOwogfQog
CiB1aW50NjRfdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlU2VuZGVyRGVzdGluYXRp
b25JRCgpIGNvbnN0CkBAIC0xNTAsNiArMTY4LDE0IEBAIHVpbnQ2NF90IFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKICAgICByZXR1cm4g
bV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgpOwogfQogCit2b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCit7Cit9CisKK3Zv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpCit7Cit9CisKIHZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6ZGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKEltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSBoYW5kbGUsIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXImIHJlbW90
ZURpc3BsYXlMaXN0KQogewogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IDJjMjkwOTVk
YTg1YzI1YzNhNWVkNWU3ZjFlZTU2ODllZmY2NzFhMjguLjUwMzA5ZTQwMDcyODRkNTUxMmE3ZjY0
Y2I2YTMxMDBhYjg2MWU1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtNzMsOSArNzMsOSBA
QCBzdHJ1Y3QgUHJlcGFyZUJhY2tpbmdTdG9yZUJ1ZmZlcnNPdXRwdXREYXRhOwogc3RydWN0IFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM7CiBlbnVtIGNsYXNzIFN3YXBC
dWZmZXJzRGlzcGxheVJlcXVpcmVtZW50IDogdWludDhfdDsKIAotY2xhc3MgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZCA6IHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpTdHJl
YW1NZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCA6IHByaXZh
dGUgSVBDOjpNZXNzYWdlU2VuZGVyLCBwcml2YXRlIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50LCBw
dWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYsIElQQzo6U3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmLCBJUEM6OkF0dGFjaG1lbnQmJiwgSVBDOjpTdHJl
YW1Db25uZWN0aW9uQnVmZmVyJiYpOwogICAgIHZpcnR1YWwgflJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQoKTsKICAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoKTsKIApAQCAtOTYsNyArOTYsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBwZXJmb3JtV2l0aE1lZGlhUGxheWVyT25NYWluVGhyZWFkKFdl
YkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpNZWRp
YVBsYXllciYpPiYmKTsKIAogcHJpdmF0ZToKLSAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKKyAgICBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYsIElQQzo6QXR0YWNobWVudCYmLCBJUEM6OlN0
cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CiAgICAgdm9pZCBzdGFydExpc3RlbmluZ0ZvcklQQygp
OwogCiAgICAgc3RkOjpvcHRpb25hbDxTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4gdXBkYXRlU2hh
cmVkTWVtb3J5Rm9yR2V0UGl4ZWxCdWZmZXJIZWxwZXIoc2l6ZV90IGJ5dGVDb3VudCk7CkBAIC0x
MDYsNiArMTA2LDEwIEBAIHByaXZhdGU6CiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2Vu
ZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5k
ZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICAvLyBJUEM6OkNvbm5lY3Rp
b246OkNsaWVudC4KKyAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOworCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2
ZWQuCiAgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
IGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFdlYkNvcmU6OlBpeGVs
Rm9ybWF0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQg
Z2V0UGl4ZWxCdWZmZXJGb3JJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIsIFdlYkNvcmU6OlBpeGVsQnVmZmVyRm9ybWF0JiYsIFdlYkNvcmU6OkludFJlY3Qm
JiBzcmNSZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IGIzMTVkOThlZWNlNTJjOWIyYTM4NWVlYjFjNzQ3
YzY0MWUzMzMwYTMuLjE5NjQ3ZDg5MGIwYzhmYmI3YTA4OTFhOWU1MjNjMTBjM2ZhNmRlNDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiRGVj
b2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZVF1
ZXVlTWFwLmgiCkBAIC0yMTIsNiArMjEzLDEwIEBAIHB1YmxpYzoKICAgICB9OwogICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPENvbm5lY3Rpb25JZGVudGlmaWVyUGFpcj4gY3JlYXRlQ29ubmVjdGlv
bklkZW50aWZpZXJQYWlyKCk7CiAKKyAgICBzdGF0aWMgUmVmPENvbm5lY3Rpb24+IGNyZWF0ZUNs
aWVudENvbm5lY3Rpb24oQ2xpZW50Jik7CisgICAgLy8gRklYTUU6V0lQIE1BWUJFIFJFTU9WRQor
ICAgIEF0dGFjaG1lbnQgY3JlYXRlUmVjZWl2ZUlkZW50aWZpZXIoKTsKKwogICAgIH5Db25uZWN0
aW9uKCk7CiAKICAgICBDbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKaW5kZXggNmI5NDc4ZGVk
NTIxZTMzYTQ4NTBjNmJkZGE4OWY0MDc3NmE2NjE3MC4uNjRiMzJmYmZiNTZjOGNkZDZkNzdjM2Q2
ZWI1ZTJkY2Q5Y2YzNjYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmNwcApAQCAtNjEsNDMgKzYxLDU2IEBAIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KFdlYlBhZ2UmIHdlYlBhZ2UpCiAKIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6flJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpCiB7Ci0gICAg
aWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBV
bi1yZWdpc3RlciBpdHNlbGYgYXMgYSBNZXNzYWdlUmVjZWl2ZXIuCi0gICAgbV9ncHVQcm9jZXNz
Q29ubmVjdGlvbi0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKCp0
aGlzKTsKLQotICAgIC8vIFJlbGVhc2UgdGhlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuCi0gICAg
bV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKHJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyKCkpLCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2
ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CisgICAgZGlzY29ubmVjdEdQVVByb2Nlc3NJZk5l
ZWRlZCgpOwogfQogCiBHUFVQcm9jZXNzQ29ubmVjdGlvbiYgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5OjplbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpCiB7CiAgICAgaWYgKCFtX2dwdVBy
b2Nlc3NDb25uZWN0aW9uKSB7Ci0gICAgICAgIGF1dG8mIGdwdVByb2Nlc3NDb25uZWN0aW9uID0g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKLSAg
ICAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uYWRkQ2xpZW50KCp0aGlzKTsKLSAgICAgICAgZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAqdGhpcyk7Cisg
ICAgICAgIG1fY29ubmVjdGlvbiA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlQ2xpZW50Q29ubmVj
dGlvbigqdGhpcyk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+b3BlbigpOworCisgICAgICAgIG1f
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24gPSAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKyAgICAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+YWRk
Q2xpZW50KCp0aGlzKTsKKyAgICAgICAgLy8gZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZVJl
Y2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgcmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIoKS50b1VJbnQ2NCgpLCAqdGhpcyk7CiAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0
byBjb25uZWN0aW9uQnVmZmVyU2l6ZSA9IDEgPDwgMjE7Ci0gICAgICAgIG1fc3RyZWFtQ29ubmVj
dGlvbiA9IG1ha2VVbmlxdWU8SVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uPihncHVQcm9jZXNz
Q29ubmVjdGlvbi5jb25uZWN0aW9uKCksIGNvbm5lY3Rpb25CdWZmZXJTaXplKTsKLSAgICAgICAg
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQobV9wYXJhbWV0ZXJzLCBt
X3N0cmVhbUNvbm5lY3Rpb24tPnN0cmVhbUJ1ZmZlcigpKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpE
aXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwotICAgICAgICBtX2dw
dVByb2Nlc3NDb25uZWN0aW9uID0gZ3B1UHJvY2Vzc0Nvbm5lY3Rpb247CisgICAgICAgIG1fc3Ry
ZWFtQ29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8SVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uPigq
bV9jb25uZWN0aW9uLCBjb25uZWN0aW9uQnVmZmVyU2l6ZSk7CisgICAgICAgIG1fbmVlZHNXYWtl
VXBTZW1hcGhvcmVGb3JEaXNwbGF5TGlzdFN0cmVhbSA9IHRydWU7CisgICAgICAgIG1fZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpDcmVhdGVSZW5kZXJpbmdCYWNrZW5kKG1fcGFyYW1ldGVycywgbV9jb25u
ZWN0aW9uLT5jcmVhdGVSZWNlaXZlSWRlbnRpZmllcigpLCBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0
cmVhbUJ1ZmZlcigpKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hl
bldhaXRpbmdGb3JTeW5jUmVwbHkpOwogICAgIH0KICAgICByZXR1cm4gKm1fZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb247CiB9CiAKLUlQQzo6Q29ubmVjdGlvbiYgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpncHVQcm9jZXNzQ29ubmVjdGlvbigpCitJUEM6OkNvbm5lY3Rpb24mIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6Y29ubmVjdGlvbigpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUdQVVBy
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworICAgIGVuc3VyZUdQVVByb2Nlc3NDb25u
ZWN0aW9uKCk7CisgICAgcmV0dXJuICptX2Nvbm5lY3Rpb247CiB9CiAKLXZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nl
c3NDb25uZWN0aW9uJiBwcmV2aW91c0Nvbm5lY3Rpb24pCit2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVj
dGlvbiYpCiB7Ci0gICAgcHJldmlvdXNDb25uZWN0aW9uLnJlbW92ZUNsaWVudCgqdGhpcyk7Ci0g
ICAgcHJldmlvdXNDb25uZWN0aW9uLm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcigqdGhpcyk7Ci0gICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbiA9IG51bGxwdHI7Cisg
ICAgZGlzY29ubmVjdEdQVVByb2Nlc3NJZk5lZWRlZCgpOworfQogCi0gICAgbV9yZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkucmVtb3RlUmVzb3VyY2VDYWNoZVdhc0Rlc3Ryb3llZCgpOwordm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCit7
CisgICAgZGlzY29ubmVjdEdQVVByb2Nlc3NJZk5lZWRlZCgpOworfQogCit2b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9
CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaXNjb25uZWN0R1BVUHJvY2Vz
c0lmTmVlZGVkKCkKK3sKKyAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCisgICAgICAg
IHJldHVybjsKKyAgICAvLyBSZWxlYXNlIHRoZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLgorICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
UmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQocmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSksIDAs
IElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1Jl
cGx5KTsKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5yZW1vdmVDbGllbnQoKnRoaXMpOwor
ICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24gPSBudWxscHRyOworICAgIG1fcmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5LnJlbW90ZVJlc291cmNlQ2FjaGVXYXNEZXN0cm95ZWQoKTsKICAgICBpZiAo
bV9kZXN0cm95R2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1vcnlUaW1lci5pc0FjdGl2ZSgpKQogICAg
ICAgICBtX2Rlc3Ryb3lHZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeVRpbWVyLnN0b3AoKTsKICAg
ICBtX2dldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5ID0gbnVsbHB0cjsKQEAgLTEwNywxNCArMTIw
LDE0IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpncHVQcm9jZXNzQ29ubmVj
dGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0CiAKIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6RGlkUmVjZWl2ZUJhY2tlbmRDcmVhdGlvblJlc3VsdCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OndhaXRGb3JEaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoKQogewotICAgIGlm
ICghZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxN
ZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpEaWRDcmVhdGVJbWFnZUJ1ZmZl
ckJhY2tlbmQ+KHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCksIDFfcywgSVBDOjpXYWl0Rm9y
T3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpKQorICAgIGlmICgh
Y29ubmVjdGlvbigpLndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZD4ocmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSwgMV9zLCBJUEM6OldhaXRGb3JPcHRpb246OkludGVy
cnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcykpCiAgICAgICAgIHJldHVybiBEaWRSZWNl
aXZlQmFja2VuZENyZWF0aW9uUmVzdWx0OjpUaW1lb3V0T3JJUENGYWlsdXJlOwogICAgIHJldHVy
biBEaWRSZWNlaXZlQmFja2VuZENyZWF0aW9uUmVzdWx0OjpSZWNlaXZlZEFueVJlc3BvbnNlOwog
fQogCiBib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6d2FpdEZvckRpZEZsdXNoKCkK
IHsKLSAgICByZXR1cm4gZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS53YWl0Rm9yQW5kRGlzcGF0Y2hJ
bW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpEaWRGbHVz
aD4ocmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSwgMV9zLCBJUEM6OldhaXRGb3JPcHRpb246
OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CisgICAgcmV0dXJuIGNvbm5l
Y3Rpb24oKS53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjpEaWRGbHVzaD4ocmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIo
KSwgMV9zLCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdl
QXJyaXZlcyk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVS
ZW1vdGVJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpCkBAIC00MTYsNyArNDI5
LDcgQEAgSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uJiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OnN0cmVhbUNvbm5lY3Rpb24oKQogewogICAgIGVuc3VyZUdQVVByb2Nlc3NDb25uZWN0
aW9uKCk7CiAgICAgaWYgKFVOTElLRUxZKG1fbmVlZHNXYWtlVXBTZW1hcGhvcmVGb3JEaXNwbGF5
TGlzdFN0cmVhbSkpCi0gICAgICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkud2FpdEZvckFuZERp
c3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
RGlkQ3JlYXRlV2FrZVVwU2VtYXBob3JlRm9yRGlzcGxheUxpc3RTdHJlYW0+KHJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyKCksIDNfcywgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0
aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOworICAgICAgICBjb25uZWN0aW9uKCkud2FpdEZvckFu
ZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6RGlkQ3JlYXRlV2FrZVVwU2VtYXBob3JlRm9yRGlzcGxheUxpc3RTdHJlYW0+KHJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyKCksIDNfcywgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRX
YWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOwogICAgIHJldHVybiAqbV9zdHJlYW1Db25uZWN0
aW9uOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAppbmRleCBjYjg1
ODhjODNlMTU5NmI4OWMyMTEwYTJiM2U0Mzg0YWQxMjM4ODU4Li43MGI3YTMwZjBkODAxYzY2NDJi
YjRjMjhmNTlkYjU5ZjA2YjYwNWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LmgKQEAgLTYzLDggKzYzLDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdl
OwogCiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkKLSAgICA6IHByaXZhdGUgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIKLSAgICAsIHB1YmxpYyBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xp
ZW50IHsKKyAgICA6IHByaXZhdGUgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQsCisgICAgICBwdWJs
aWMgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk+IGNyZWF0ZShXZWJQYWdl
Jik7CiAKQEAgLTE0OCw3ICsxNDgsMTAgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShXZWJQYWdlJik7CisgICAgR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24mIGVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CisgICAgdm9pZCBkaXNj
b25uZWN0R1BVUHJvY2Vzc0lmTmVlZGVkKCk7CiAKKyAgICBJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24oKTsKICAgICBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24mIHN0cmVhbUNvbm5lY3Rp
b24oKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0xNjAsOCArMTYzLDkgQEAgcHJp
dmF0ZToKICAgICAvLyBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50CiAgICAgdm9pZCBncHVQ
cm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikgZmluYWw7CiAK
LSAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsK
LSAgICBJUEM6OkNvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uKCk7CisgICAgLy8gSVBD
Q29ubmVjdGlvbjo6Q2xpZW50CisgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBm
aW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6Ok1lc3NhZ2VOYW1lKSBmaW5hbDsKIAogICAgIC8vIFJldHVybnMgc3RkOjpudWxsb3B0
IGlmIG5vIHVwZGF0ZSBpcyBuZWVkZWQgb3IgYWxsb2NhdGlvbiBmYWlsZWQuCiAgICAgLy8gUmV0
dXJucyBoYW5kbGUgaWYgdGhhdCBzaG91bGQgYmUgc2VudCB0byB0aGUgcmVjZWl2ZXIgcHJvY2Vz
cy4KQEAgLTE3Myw5ICsxNzcsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZsdXNoKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlKFJl
bmRlcmluZ1VwZGF0ZUlEIGRpZFJlbmRlcmluZ1VwZGF0ZUlEKTsKIAorICAgIEdQVVByb2Nlc3ND
b25uZWN0aW9uKiBtX2dwdVByb2Nlc3NDb25uZWN0aW9uIHsgbnVsbHB0ciB9OworICAgIFJlZlB0
cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpTdHJlYW1DbGllbnRDb25uZWN0aW9uPiBtX3N0cmVhbUNvbm5lY3Rpb247CiAgICAgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7Ci0gICAgV2Vh
a1B0cjxHUFVQcm9jZXNzQ29ubmVjdGlvbj4gbV9ncHVQcm9jZXNzQ29ubmVjdGlvbjsKICAgICBS
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgeyAqdGhp
cyB9OwogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IG1fZ2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1v
cnk7CiAgICAgV2ViQ29yZTo6VGltZXIgbV9kZXN0cm95R2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1v
cnlUaW1lciB7ICp0aGlzLCAmUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkZXN0cm95R2V0
UGl4ZWxCdWZmZXJTaGFyZWRNZW1vcnkgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456348</attachid>
            <date>2022-04-01 04:49:05 -0700</date>
            <delta_ts>2022-04-01 05:38:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238516-20220401144903.patch</filename>
            <type>text/plain</type>
            <size>49509</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNmYmQ3NjY4YTcyOWMyZDNl
ZGJkZGRkNTk2Y2FkMDFlY2JiMTQ2NjQuLmMzNzFlZTQ1NDMxZmM5ZDA2YWJhNjAxYWRlZWViZDky
NDZjMTAyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMjItMDMtMzAgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kIHNob3VsZCBoYXZlIGRlZGljYXRlZCBJUEM6OkNvbm5lY3Rpb24gZm9yIG91dC1vZi1z
dHJlYW0gbWVzc2FnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzODUxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVzZSBkZWRpY2F0ZWQgSVBDOjpDb25uZWN0aW9uIGZvciBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kIElQQyBzdHJlYW0gY29ubmVjdGlvbiBpbnN0ZWFkCisgICAgICAgIG9mIHVzaW5nIHRo
ZSBXUC1HUFVQIG1haW4gY29ubmVjdGlvbi4gUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlciBzdGFy
dHMgbGlzdGVudGluZyB0bworICAgICAgICBpdHMgbWVzc2FnZXMgaW4gdGhlIHdvcmtlciB0aHJl
YWQuIEF0IHRoYXQgcG9pbnQsIHNvbWUgb3V0LW9mLXN0cmVhbSBtZXNzYWdlIGZvciB0aGF0Cisg
ICAgICAgIGlkIG1pZ2h0IGFscmVhZHkgaGF2ZSBiZWVuIGRpc3BhdGNoZWQgdG8gbWFpbiB0aHJl
YWQsIGNhdXNpbmcgbWlzc2luZyBtZXNzYWdlIGFuZCBhc3NlcnQuCisKKyAgICAgICAgSW5zdGVh
ZCwgdXNlIGRlZGljYXRlZCBjb25uZWN0aW9uIGFuZCByb3V0ZSBhbGwgdGhlIG1lc3NhZ2VzIHRv
IHRoZSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uCisgICAgICAgIGlzIGEgIm1lc3NhZ2UgcXVldWUi
LiBUaGlzIHdheSB3aGVuIGVhY2ggb3V0LW9mLXN0cmVhbSBtZXNzYWdlIG1hcmtlciBpcyBwcm9j
ZXNzZWQsIHRoZQorICAgICAgICBtZXNzYWdlIHdpbGwgYmUsIGRpcmVjdGx5IG9yIGV2ZW50dWFs
bHksIGZvdW5kIGZyb20gdGhlIG1lc3NhZ2UgcXVldWUuCisKKyAgICAgICAgUmVtb3ZlIHdvcmth
cm91bmRzOgorICAgICAgICAgLSBBZGRpbmcgYSBsaXN0ZW5lciB0byB0aGUgbWFpbiBXUC1HUFVQ
IGNvbm5lY3Rpb24gZm9yIGFsbCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyIG1lc3NhZ2VzCisg
ICAgICAgICAgIGFuZCByb3V0aW5nIHRoZW0gdG8gcGFydGljdWxhciBTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uLiBUaGlzIHdhcyBwcm9ibGVtYXRpYyBzaW5jZQorICAgICAgICAgICB0aGVyZSBhcmUg
bWFueSBSUkIgU3RyZWFtU2VydmVyQ29ubmVjdGlvbiBpbnN0YW5jZXMsIG9uZSBwZXIgUGFnZSwg
YnV0IG9ubHkgb25lIFdQLUdQVVAKKyAgICAgICAgICAgY29ubmVjdGlvbi4KKyAgICAgICAgIC0g
UkVMRUFTRV9MT0cgaW4gTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcCBhYm91dCB3YXJuaW5nIGZvciB0
aGUgYWJvdmUuIFR1cm4gdGhpcyBiYWNrIGludG8gYW4KKyAgICAgICAgICAgQVNTRVJULgorCisg
ICAgICAgIFNpbmNlIElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBhbmQgSVBDOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uIGFyZSBsaWtlIElQQzo6Q29ubmVjdGlvbiwKKyAgICAgICAgYWRkIG9w
ZW4oKSBhbmQgaW52YWxpZGF0ZSgpIGNhbGxzLiBUaGVzZSBoYXZlIHNhbWUgY29udHJhY3QgYXMg
d2l0aCBJUEM6OkNvbm5lY3Rpb246CisgICAgICAgIG9wZW4oKSBzaG91bGQgYmUgY2FsbGVkIGlm
IGNvbm5lY3Rpb24gaXMgdG8gYmUgdXNlZCwgaW52YWxpZGF0ZSgpIG11c3QgYmUgY2FsbGVkIGlm
IG9wZW4oKSB3YXMgY2FsbGVkLgorICAgICAgICBUaGVzZSBjYWxscyBoYXZlIGFuIGVmZmVjdCBj
dXJyZW50bHkgb25seSB3aXRoIGRlZGljYXRlZCBjb25uZWN0aW9ucywgYnV0IHRoZXNlIGFyZSBh
ZGRlZCB0byBhbGwKKyAgICAgICAgSVBDOjpTdHJlYW0qQ29ubmVjdGlvbiBjbGllbnRzIGZvciBj
b25zaXN0ZW5jeSBhbmQgZnV0dXJlIHVzZXMuCisKKyAgICAgICAgVGVzdGVkIGJ5IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvbGlua3MvbGlua3MtY3JlYXRl
ZC1ieS1hLWFuZC1hcmVhLWVsZW1lbnRzL3RhcmdldF9ibGFua19pbXBsaWNpdF9ub29wZW5lci5o
dG1sCisgICAgICAgICAgICAgICAgICAtLWNoaWxkLXByb2Nlc3Nlcz0xIC0tZXhwZXJpbWVudGFs
LWZlYXR1cmU9VXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZ0VuYWJsZWQ9dHJ1ZSAtLWl0ZXJh
dGlvbnM9MTAwIC0tZm9yY2UgLS1zaW11bGF0b3IKKworICAgICAgICAqIEdQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQpOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpjcmVh
dGVTdHJlYW1Db25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp+UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjplbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6Y29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZGlkQ2xvc2UpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6ZGlzY29ubmVjdEdQVVByb2Nlc3NJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6d2FpdEZvckRpZENyZWF0ZUltYWdlQnVmZmVyQmFj
a2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6d2Fp
dEZvckRpZEZsdXNoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpzdHJlYW1Db25uZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaDoKKwogMjAyMi0wMy0zMSAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBoZXVyaXN0aWMg
dG8gaWRlbnRpZnkgYW5kIGV4dHJhY3QgdGhlIHByb21pbmVudCB2aWRlbyBlbGVtZW50IGluIGVs
ZW1lbnQgZnVsbHNjcmVlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDhhNTY1ZGY0ZmY4NDMxNTJmNjU3NTIx
YWU2N2UzMTk2ZDAwOGQ0YzkuLjMzMGIwMzljZGY4NTZmODkyMGNjZWM5YWUzNzlmYTk3ZTg5ZTc1
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKQEAgLTUzMiwxMCArNTMyLDEwIEBAIFJlbW90ZUltYWdlRGVjb2Rl
ckFWRlByb3h5JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjppbWFnZURlY29kZXJBVkZQcm94
eSgpCiB9CiAjZW5kaWYKIAotdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVS
ZW5kZXJpbmdCYWNrZW5kKFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMm
JiBjcmVhdGlvblBhcmFtZXRlcnMsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVh
bUJ1ZmZlcikKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVyaW5n
QmFja2VuZChSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYgY3JlYXRp
b25QYXJhbWV0ZXJzLCBJUEM6OkF0dGFjaG1lbnQmJiBjb25uZWN0aW9uSWRlbnRpZmllciwgSVBD
OjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtQnVmZmVyKQogewogICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVuc3VyZShjcmVhdGlvblBhcmFt
ZXRlcnMuaWRlbnRpZmllciwgWyZdKCkgewotICAgICAgICByZXR1cm4gSVBDOjpTY29wZWRBY3Rp
dmVNZXNzYWdlUmVjZWl2ZVF1ZXVlIHsgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKCp0
aGlzLCBXVEZNb3ZlKGNyZWF0aW9uUGFyYW1ldGVycyksIFdURk1vdmUoc3RyZWFtQnVmZmVyKSkg
fTsKKyAgICAgICAgcmV0dXJuIElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZSB7
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShjcmVhdGlvblBh
cmFtZXRlcnMpLCBXVEZNb3ZlKGNvbm5lY3Rpb25JZGVudGlmaWVyKSwgV1RGTW92ZShzdHJlYW1C
dWZmZXIpKSB9OwogICAgIH0pOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1
bHQuaXNOZXdFbnRyeSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBiNzJjMGIzNzM2MmI3MzlkYmZhM2VkOWEw
YzRhMDFlM2IyMWIxZTk5Li4wMzQ0ZTNjYzBjNGY4MTMyZTdkZjM5NTU1MDcxNTM5NTg2M2U2MGFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKQEAgLTIxNyw3ICsyMTcsNyBAQCBwcml2YXRlOgogICAgIFJlbW90ZU1lZGlh
UmVjb3JkZXJNYW5hZ2VyJiBtZWRpYVJlY29yZGVyTWFuYWdlcigpOwogI2VuZGlmCiAKLSAgICB2
b2lkIGNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9u
UGFyYW1ldGVycyYmLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisgICAgdm9pZCBj
cmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFt
ZXRlcnMmJiwgSVBDOjpBdHRhY2htZW50JiYsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYm
KTsKICAgICB2b2lkIHJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyKTsKIAogI2lmIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
aW5kZXggMWI4MzJhMzE4M2Y4Mjk0ZWMwNTdjY2E5Yzc2ZmFiYTAwMjRlNTRiYi4uZWEzYzE0N2Vj
NDE5YzNmNDk1NTYzMWNlMjA1M2RlMjBkNmI2NWJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KQEAgLTIzLDcgKzIzLDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIG1lc3Nh
Z2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3NhZ2Ugewot
ICAgIHZvaWQgQ3JlYXRlUmVuZGVyaW5nQmFja2VuZChzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzIGNyZWF0aW9uUGFyYW1ldGVycywgSVBDOjpT
dHJlYW1Db25uZWN0aW9uQnVmZmVyIHN0cmVhbUJ1ZmZlcikKKyAgICB2b2lkIENyZWF0ZVJlbmRl
cmluZ0JhY2tlbmQoc3RydWN0IFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9u
UGFyYW1ldGVycyBjcmVhdGlvblBhcmFtZXRlcnMsIElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9u
SWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHN0cmVhbUJ1ZmZlcikKICAg
ICB2b2lkIFJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCiAjaWYgRU5BQkxFKFdFQkdMKQog
ICAgIHZvaWQgQ3JlYXRlR3JhcGhpY3NDb250ZXh0R0woc3RydWN0IFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFdlYktpdDo6UmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIElQQzo6U3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlciBzdHJlYW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCA2
ZGI2NDQwY2Y5NmQ5MmFjMmQ3ZjViZTFkNTIyM2FlMDVhMDE3MWI0Li5mMDI0MmFmN2E0NTAwYTUw
NDI2YzNiMjI1NTQxNDIzNjY4MzZjNzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKQEAg
LTg2LDYgKzg2LDcgQEAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6On5SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTCgpCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjppbml0aWFsaXplKEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCiB7CiAgICAgYXNzZXJ0SXNNYWlu
UnVuTG9vcCgpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+b3BlbigpOwogICAgIHJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkuZGlzcGF0Y2goW2F0dHJpYnV0ZXMgPSBX
VEZNb3ZlKGF0dHJpYnV0ZXMpLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oKSBtdXRh
YmxlIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+d29ya1F1ZXVlSW5pdGlhbGl6ZShXVEZNb3Zl
KGF0dHJpYnV0ZXMpKTsKICAgICB9KTsKQEAgLTk1LDYgKzk2LDcgQEAgdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6aW5pdGlhbGl6ZShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBh
dHRyaWJ1dGUKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnN0b3BMaXN0ZW5pbmdGb3JJ
UEMoUmVmPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiYmIHJlZkZyb21Db25uZWN0aW9uKQogewog
ICAgIGFzc2VydElzTWFpblJ1bkxvb3AoKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPmludmFs
aWRhdGUoKTsKICAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSk7CiAgICAgcmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9
IFdURk1vdmUocmVmRnJvbUNvbm5lY3Rpb24pXSgpIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+
d29ya1F1ZXVlVW5pbml0aWFsaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggMWRj
ODJmZDEzYTI3ZTYzZTJhNGJlNzU0ZTcxZTIzZTA1YWM5OWUwMS4uM2RiOGE0MDMwMmNlNGM2NDBk
MTA3ZGNkZWY3ZDU1MTU3ZTgxMzYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtNzYs
MTYgKzc2LDE2IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCi1SZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiBjcmVhdGlvblBh
cmFtZXRlcnMsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbUJ1ZmZlcikKK1Jl
ZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUo
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIGNyZWF0aW9uUGFyYW1ldGVy
cywgSVBDOjpBdHRhY2htZW50JiYgY29ubmVjdGlvbklkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlciYmIHN0cmVhbUJ1ZmZlcikKIHsKLSAgICBhdXRvIGluc3RhbmNlID0gYWRv
cHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MsIFdURk1vdmUoY3JlYXRpb25QYXJhbWV0ZXJzKSwgV1RGTW92ZShzdHJlYW1CdWZmZXIpKSk7
CisgICAgYXV0byBpbnN0YW5jZSA9IGFkb3B0UmVmKCpuZXcgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZChncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBXVEZNb3ZlKGNyZWF0aW9uUGFyYW1ldGVycyks
IFdURk1vdmUoY29ubmVjdGlvbklkZW50aWZpZXIpLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlcikpKTsK
ICAgICBpbnN0YW5jZS0+c3RhcnRMaXN0ZW5pbmdGb3JJUEMoKTsKICAgICByZXR1cm4gaW5zdGFu
Y2U7CiB9CiAKLVJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQo
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIGNyZWF0aW9uUGFyYW1ldGVy
cywgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtQnVmZmVyKQorUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
Q3JlYXRpb25QYXJhbWV0ZXJzJiYgY3JlYXRpb25QYXJhbWV0ZXJzLCBJUEM6OkF0dGFjaG1lbnQm
JiBjb25uZWN0aW9uSWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3Ry
ZWFtQnVmZmVyKQogICAgIDogbV93b3JrUXVldWUoSVBDOjpTdHJlYW1Db25uZWN0aW9uV29ya1F1
ZXVlOjpjcmVhdGUoIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgd29yayBxdWV1ZSIpKQotICAgICwg
bV9zdHJlYW1Db25uZWN0aW9uKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRlKGdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZl
ciksIG1fd29ya1F1ZXVlLmdldCgpKSkKKyAgICAsIG1fc3RyZWFtQ29ubmVjdGlvbihJUEM6OlN0
cmVhbVNlcnZlckNvbm5lY3Rpb246OmNyZWF0ZVdpdGhEZWRpY2F0ZWRDb25uZWN0aW9uKFdURk1v
dmUoY29ubmVjdGlvbklkZW50aWZpZXIpLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlciksIG1fd29ya1F1
ZXVlLmdldCgpKSkKICAgICAsIG1fcmVtb3RlUmVzb3VyY2VDYWNoZShncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLndlYlByb2Nlc3NJZGVudGlmaWVyKCkpCiAgICAgLCBtX2dwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykKICAgICAsIG1fcmVzb3VyY2VP
d25lcihncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLndlYlByb2Nlc3NJZGVudGl0eSgpKQpAQCAt
MTAzLDE3ICsxMDMsMTUgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdGFydExpc3Rl
bmluZ0ZvcklQQygpCiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3JlbW90ZURpc3BsYXlMaXN0
c0xvY2sgfTsKICAgICAgICAgbV9jYW5SZWdpc3RlclJlbW90ZURpc3BsYXlMaXN0cyA9IHRydWU7
CiAgICAgfQotCiAgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdGFydFJlY2VpdmluZ01lc3NhZ2Vz
KCp0aGlzLCBNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0KCkpOwotICAgIC8v
IFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIgbWVzc2FnZXMgZGVwZW5kIG9uIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQsIGJlY2F1c2UgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBjcmVhdGVzIFJlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXIgYW5kCi0gICAgLy8gbWFrZXMgYSByZWNlaXZlIHF1ZXVlIGZv
ciBpdC4gSW4gb3JkZXIgdG8gZ3VhcmFudGVlIGNvcnJlY3Qgb3JkZXJpbmcsIGVuc3VyZSB0aGF0
IGFsbCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyIG1lc3NhZ2VzIGFyZSBwcm9jZXNzZWQgaW4K
LSAgICAvLyB0aGUgc2FtZSBzZXF1ZW5jZSBhcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIG1lc3Nh
Z2VzLgotICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyhNZXNz
YWdlczo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsK
KyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPm9wZW4oKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpzdG9wTGlzdGVuaW5nRm9ySVBDKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOworICAgIG1f
c3RyZWFtQ29ubmVjdGlvbi0+c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIudG9VSW50NjQoKSk7CiAKICAgICAvLyBUaGlzIGl0ZW0gaXMgZGlzcGF0Y2hl
ZCB0byB0aGUgV29ya1F1ZXVlIGJlZm9yZSBjYWxsaW5nIHN0b3BBbmRXYWl0Rm9yQ29tcGxldGlv
bigpIHN1Y2ggdGhhdCBpdCB3aWxsIHByb2Nlc3MgaXQgbGFzdCwgYWZ0ZXIgYW55IGV4aXN0aW5n
IHdvcmsuCiAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFsmXSB7CkBAIC0xMjQsOCArMTIyLDYg
QEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdG9wTGlzdGVuaW5nRm9ySVBDKCkKICAg
ICB9KTsKICAgICBtX3dvcmtRdWV1ZS0+c3RvcEFuZFdhaXRGb3JDb21wbGV0aW9uKCk7CiAKLSAg
ICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhNZXNzYWdlczo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3JlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyLnRvVUludDY0KCkpOwotICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3Rv
cFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwogCiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9yZW1vdGVEaXNwbGF5TGlzdHNMb2NrIH07CkBAIC0xNDIsNyArMTM4LDcgQEAgdm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKIAog
SVBDOjpDb25uZWN0aW9uKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlU2VuZGVyQ29u
bmVjdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICZtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MtPmNvbm5lY3Rpb24oKTsKKyAgICByZXR1cm4gJm1fc3RyZWFtQ29ubmVjdGlvbi0+Y29ubmVj
dGlvbigpOwogfQogCiB1aW50NjRfdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlU2Vu
ZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCAyYzI5MDk1
ZGE4NWMyNWMzYTVlZDVlN2YxZWU1Njg5ZWZmNjcxYTI4Li4yNDVkN2ZhMDg5Mzg3NDljZmI0Zjdm
NGIxODE4MzdlZTFkM2JkODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTc1LDcgKzc1LDcg
QEAgZW51bSBjbGFzcyBTd2FwQnVmZmVyc0Rpc3BsYXlSZXF1aXJlbWVudCA6IHVpbnQ4X3Q7CiAK
IGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgOiBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRl
ciwgcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmLCBJUEM6
OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisgICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiwgSVBDOjpBdHRhY2htZW50JiYsIElQQzo6
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kKCk7CiAgICAgdm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBDKCk7CiAKQEAgLTk2LDcgKzk2
LDcgQEAgcHVibGljOgogICAgIHZvaWQgcGVyZm9ybVdpdGhNZWRpYVBsYXllck9uTWFpblRocmVh
ZChXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6
TWVkaWFQbGF5ZXImKT4mJik7CiAKIHByaXZhdGU6Ci0gICAgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0
aW9uUGFyYW1ldGVycyYmLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisgICAgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmLCBJUEM6OkF0dGFjaG1lbnQmJiwgSVBD
OjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYpOwogICAgIHZvaWQgc3RhcnRMaXN0ZW5pbmdGb3JJ
UEMoKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+IHVwZGF0
ZVNoYXJlZE1lbW9yeUZvckdldFBpeGVsQnVmZmVySGVscGVyKHNpemVfdCBieXRlQ291bnQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVHUFUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVHUFUuY3BwCmluZGV4IGRmNTIzODRlMzliMTQ0Njc4YTVkMjY1MmU3ZDZkZWM1NTk2MGQ2ODAu
LjFiMDc3Yjg5NGFiYWQxNmRmNDA1ZGZkYWVlNmZlZmZkZjA2ZTBlMmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5jcHAK
QEAgLTYwLDYgKzYwLDcgQEAgUmVtb3RlR1BVOjp+UmVtb3RlR1BVKCkgPSBkZWZhdWx0Owogdm9p
ZCBSZW1vdGVHUFU6OmluaXRpYWxpemUoKQogewogICAgIGFzc2VydElzTWFpblJ1bkxvb3AoKTsK
KyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPm9wZW4oKTsKICAgICB3b3JrUXVldWUoKS5kaXNwYXRj
aChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKCkgbXV0YWJsZSB7CiAgICAgICAgIHBy
b3RlY3RlZFRoaXMtPndvcmtRdWV1ZUluaXRpYWxpemUoKTsKICAgICB9KTsKQEAgLTY5LDYgKzcw
LDcgQEAgdm9pZCBSZW1vdGVHUFU6OmluaXRpYWxpemUoKQogdm9pZCBSZW1vdGVHUFU6OnN0b3BM
aXN0ZW5pbmdGb3JJUEMoUmVmPFJlbW90ZUdQVT4mJiByZWZGcm9tQ29ubmVjdGlvbikKIHsKICAg
ICBhc3NlcnRJc01haW5SdW5Mb29wKCk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5pbnZhbGlk
YXRlKCk7CiAgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdG9wUmVjZWl2aW5nTWVzc2FnZXMoTWVz
c2FnZXM6OlJlbW90ZUdQVTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9V
SW50NjQoKSk7CiAgICAgd29ya1F1ZXVlKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZN
b3ZlKHJlZkZyb21Db25uZWN0aW9uKV0oKSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPndvcmtR
dWV1ZVVuaW5pdGlhbGl6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcAppbmRleCBkZTJkNDE2ZDQ5OTNkMWRmOTg5NTUy
OGYxOTZlYjYwZjFmNTE1YzRiLi5iNzNmOGMyYjhiMGFiOTZkYzI3NDdlOTNjYjE4YzhhZGI0OWJl
NmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2
ZVF1ZXVlTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVj
ZWl2ZVF1ZXVlTWFwLmNwcApAQCAtMzksMTAgKzM5LDcgQEAgdm9pZCBNZXNzYWdlUmVjZWl2ZVF1
ZXVlTWFwOjphZGRJbXBsKFN0b3JlVHlwZSYmIHF1ZXVlLCBSZWNlaXZlck1hdGNoZXIgbWF0Y2hl
cikKICAgICB1aW50OF90IHJlY2VpdmVyTmFtZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KCptYXRj
aGVyLnJlY2VpdmVyTmFtZSk7CiAgICAgaWYgKCFtYXRjaGVyLmRlc3RpbmF0aW9uSUQpIHsKICAg
ICAgICAgYXV0byByZXN1bHQgPSBtX2FueUlEUXVldWVzLmFkZChyZWNlaXZlck5hbWUsIFdURk1v
dmUocXVldWUpKTsKLSAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGFuIGFzc2VydGlvbi4gU2VlIHdlYmtpdC5vcmcv
Yi8yMzc2NzQgYW5kIHdlYmtpdC5vcmcvYi8yMzgzOTEuCi0gICAgICAgICAgICBBTFdBWVNfTE9H
X1dJVEhfU1RSRUFNKHN0cmVhbSA8PCAiTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6YWRkSW1wbCAt
IGFkZGluZyBkdXBsaWNhdGUgYW55IGlkIHJlY2VpdmVyICIgPDwgc3RhdGljX2Nhc3Q8dWludDhf
dD4ocmVjZWl2ZXJOYW1lKSk7Ci0gICAgICAgIH0KKyAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRv
IHJlc3VsdCA9IG1fcXVldWVzLmFkZChzdGQ6Om1ha2VfcGFpcihyZWNlaXZlck5hbWUsICptYXRj
aGVyLmRlc3RpbmF0aW9uSUQpLCBXVEZNb3ZlKHF1ZXVlKSk7CkBAIC01OSwxMCArNTYsNyBAQCB2
b2lkIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OnJlbW92ZShSZWNlaXZlck1hdGNoZXIgbWF0Y2hl
cikKICAgICB1aW50OF90IHJlY2VpdmVyTmFtZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KCptYXRj
aGVyLnJlY2VpdmVyTmFtZSk7CiAgICAgaWYgKCFtYXRjaGVyLmRlc3RpbmF0aW9uSUQpIHsKICAg
ICAgICAgYXV0byByZXN1bHQgPSBtX2FueUlEUXVldWVzLnJlbW92ZShyZWNlaXZlck5hbWUpOwot
ICAgICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
YmUgYW4gYXNzZXJ0aW9uLiBTZWUgd2Via2l0Lm9yZy9iLzIzNzY3NCBhbmQgd2Via2l0Lm9yZy9i
LzIzODM5MS4KLSAgICAgICAgICAgIEFMV0FZU19MT0dfV0lUSF9TVFJFQU0oc3RyZWFtIDw8ICJN
ZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwOjphZGRJbXBsIC0gYWRkaW5nIGR1cGxpY2F0ZSBhbnkgaWQg
cmVjZWl2ZXIgIiA8PCBzdGF0aWNfY2FzdDx1aW50OF90PihyZWNlaXZlck5hbWUpKTsKLSAgICAg
ICAgfQorICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBhdXRvIHJlc3VsdCA9IG1fcXVldWVzLnJlbW92ZShzdGQ6Om1ha2Vf
cGFpcihyZWNlaXZlck5hbWUsICptYXRjaGVyLmRlc3RpbmF0aW9uSUQpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5k
ZXggYjEwMWUwMmZkYjVlNWE0YTU2ODYxZGM3ZWViZjFiYTJhMWNlMmI5OS4uNjk5ZTMxMmQzNGQ0
MzU0NjRkY2MzNTdhZThiNWYzODdmOGU0MzA1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTI4LDggKzI4LDQx
IEBACiAKIG5hbWVzcGFjZSBJUEMgewogCi1TdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJlYW1D
bGllbnRDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemVfdCBzaXplKQotICAg
IDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCitjbGFzcyBTdHJlYW1DbGllbnRDb25uZWN0aW9u
OjpEZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50IGZpbmFsIDogcHVibGljIENvbm5lY3Rpb246OkNs
aWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoRGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudCk7CitwdWJsaWM6CisgICAgRGVkaWNhdGVk
Q29ubmVjdGlvbkNsaWVudChNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyKQorICAgICAgICA6IG1f
cmVjZWl2ZXIocmVjZWl2ZXIpCisgICAgeworICAgIH0KKyAgICAvLyBDb25uZWN0aW9uOjpDbGll
bnQuCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBE
ZWNvZGVyJiBkZWNvZGVyKSBmaW5hbCB7IG1fcmVjZWl2ZXIuZGlkUmVjZWl2ZU1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2Rlcik7IH0KKyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8RW5jb2Rlcj4m
IHJlcGx5RW5jb2RlcikgZmluYWwgeyByZXR1cm4gbV9yZWNlaXZlci5kaWRSZWNlaXZlU3luY01l
c3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsgfQorICAgIHZvaWQgZGlk
Q2xvc2UoQ29ubmVjdGlvbiYpIGZpbmFsIHsgfSAvLyBDbGllbnQgaXMgZXhwZWN0ZWQgdG8gbGlz
dGVuIHRvIENvbm5lY3Rpb246OmRpZENsb3NlKCkgZnJvbSB0aGUgY29ubmVjdGlvbiBpdCBzZW50
IHRvIHRoZSBkZWRpY2F0ZWQgY29ubmVjdGlvbiB0by4KKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZh
bGlkTWVzc2FnZShDb25uZWN0aW9uJiwgTWVzc2FnZU5hbWUpIGZpbmFsIHsgQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0gLy8gVGhlIHNlbmRlciBpcyBleHBlY3RlZCB0byBiZSB0cnVzdGVkLCBzbyBh
bGwgaW52YWxpZCBtZXNzYWdlcyBhcmUgcHJvZ3JhbW1pbmcgZXJyb3JzLgorcHJpdmF0ZToKKyAg
ICBNZXNzYWdlUmVjZWl2ZXImIG1fcmVjZWl2ZXI7Cit9OworCitTdHJlYW1DbGllbnRDb25uZWN0
aW9uOjpTdHJlYW1Db25uZWN0aW9uV2l0aERlZGljYXRlZENvbm5lY3Rpb24gU3RyZWFtQ2xpZW50
Q29ubmVjdGlvbjo6Y3JlYXRlV2l0aERlZGljYXRlZENvbm5lY3Rpb24oTWVzc2FnZVJlY2VpdmVy
JiByZWNlaXZlciwgc2l6ZV90IGJ1ZmZlclNpemUpCit7CisgICAgYXV0byBjb25uZWN0aW9uSWRl
bnRpZmllcnMgPSBDb25uZWN0aW9uOjpjcmVhdGVDb25uZWN0aW9uSWRlbnRpZmllclBhaXIoKTsK
KyAgICAvLyBDcmVhdGUgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiB3aXRoICJzZXJ2ZXIiIHR5cGUg
Q29ubmVjdGlvbi4gVGhlIGNhbGxlciB3aWxsIHNlbmQgdGhlICJjbGllbnQiIHR5cGUgY29ubmVj
dGlvbiBpZGVudGlmaWVyIHZpYQorICAgIC8vIElQQyB0byB0aGUgb3RoZXIgc2lkZSwgd2hlcmUg
U3RyZWFtU2VydmVyQ29ubmVjdGlvbiB3aWxsIGJlIGNyZWF0ZWQgd2l0aCAiY2xpZW50IiB0eXBl
IENvbm5lY3Rpb24uCisgICAgLy8gRm9yIENvbm5lY3Rpb24sICJzZXJ2ZXIiIG1lYW5zIHRoZSBj
b25uZWN0aW9uIHdoaWNoIHdhcyBjcmVhdGVkIGZpcnN0LCB0aGUgY29ubmVjdGlvbiB3aGljaCBp
cyBub3Qgc2VudCB0aHJvdWdoIElQQyB0byBvdGhlciBwYXJ0eS4KKyAgICAvLyBGb3IgQ29ubmVj
dGlvbiwgImNsaWVudCIgbWVhbnMgdGhlIGNvbm5lY3Rpb24gd2hpY2ggd2FzIGVzdGFibGlzaGVk
IGJ5IHJlY2VpdmluZyBpdCB0aHJvdWdoIElQQyBhbmQgY3JlYXRpbmcgSVBDOjpDb25uZWN0aW9u
IG91dCBmcm9tIHRoZSBpZGVudGlmaWVyLgorICAgIC8vIEZvciBTdHJlYW1DbGllbnRDb25uZWN0
aW9uLCAiQ2xpZW50IiBtZWFucyB0aGUgcGFydHkgdGhhdCBtb3N0bHkgZG9lcyBzZW5kaW5nLCBl
LmcuIHVudHJ1c3RlZCBwYXJ0eS4KKyAgICAvLyBGb3IgU3RyZWFtU2VydmVyQ29ubmVjdGlvbiwg
IlNlcnZlciIgbWVhbnMgdGhlIHBhcnR5IHRoYXQgbW9zdGx5IGRvZXMgcmVjZWl2aW5nLCBlLmcu
IHRoZSB0cnVzdGVkIHBhcnR5IHdoaWNoIGhvbGRzIHRoZSBkZXN0aW5hdGlvbiBvYmplY3QgdG8g
Y29tbXVuaWNhdGUgd2l0aC4KKyAgICBhdXRvIGRlZGljYXRlZENvbm5lY3Rpb25DbGllbnQgPSBt
YWtlVW5pcXVlPERlZGljYXRlZENvbm5lY3Rpb25DbGllbnQ+KHJlY2VpdmVyKTsKKyAgICBhdXRv
IGRlZGljYXRlZENvbm5lY3Rpb24gPSBDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9u
KGNvbm5lY3Rpb25JZGVudGlmaWVycy0+c2VydmVyLCAqZGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVu
dCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFN0cmVhbUNsaWVudENvbm5lY3Rpb24+IHN0cmVhbUNv
bm5lY3Rpb24geyBuZXcgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbihXVEZNb3ZlKGRlZGljYXRlZENv
bm5lY3Rpb24pLCBidWZmZXJTaXplLCBXVEZNb3ZlKGRlZGljYXRlZENvbm5lY3Rpb25DbGllbnQp
KSB9OworICAgIHJldHVybiB7IFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbiksIGNvbm5lY3Rpb25J
ZGVudGlmaWVycy0+Y2xpZW50IH07Cit9CisKK1N0cmVhbUNsaWVudENvbm5lY3Rpb246OlN0cmVh
bUNsaWVudENvbm5lY3Rpb24oUmVmPENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgc2l6ZV90IHNp
emUsIHN0ZDo6dW5pcXVlX3B0cjxEZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50PiYmIGRlZGljYXRl
ZENvbm5lY3Rpb25DbGllbnQpCisgICAgOiBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9u
KSkKKyAgICAsIG1fZGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudChXVEZNb3ZlKGRlZGljYXRlZENv
bm5lY3Rpb25DbGllbnQpKQogICAgICwgbV9idWZmZXIoc2l6ZSkKIHsKICAgICAvLyBSZWFkIHN0
YXJ0cyBmcm9tIDAgd2l0aCBsaW1pdCBvZiAwIGFuZCByZWFkZXIgc2xlZXBpbmcuCkBAIC0zOCw2
ICs3MSwyOCBAQCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0aW9u
KENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemVfdCBzaQogICAgIHNoYXJlZENsaWVudExpbWl0
KCkuc3RvcmUoc3RhdGljX2Nhc3Q8Q2xpZW50TGltaXQ+KDApLCBzdGQ6Om1lbW9yeV9vcmRlcl9y
ZWxheGVkKTsKIH0KIAorU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3RyZWFtQ2xpZW50Q29ubmVj
dGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBzaXplX3QgYnVmZmVyU2l6ZSkKKyAgICA6IFN0
cmVhbUNsaWVudENvbm5lY3Rpb24oUmVmIHsgY29ubmVjdGlvbiB9LCBidWZmZXJTaXplLCB7IH0p
Cit7Cit9CisKK1N0cmVhbUNsaWVudENvbm5lY3Rpb246On5TdHJlYW1DbGllbnRDb25uZWN0aW9u
KCkKK3sKKyAgICBBU1NFUlQoIW1fZGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudCB8fCAhbV9jb25u
ZWN0aW9uLT5pc1ZhbGlkKCkpOworfQorCit2b2lkIFN0cmVhbUNsaWVudENvbm5lY3Rpb246Om9w
ZW4oKQoreworICAgIGlmIChtX2RlZGljYXRlZENvbm5lY3Rpb25DbGllbnQpCisgICAgICAgIG1f
Y29ubmVjdGlvbi0+b3BlbigpOworfQorCit2b2lkIFN0cmVhbUNsaWVudENvbm5lY3Rpb246Omlu
dmFsaWRhdGUoKQoreworICAgIGlmIChtX2RlZGljYXRlZENvbm5lY3Rpb25DbGllbnQpCisgICAg
ICAgIG1fY29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOworfQorCiB2b2lkIFN0cmVhbUNsaWVudENv
bm5lY3Rpb246OnNldFdha2VVcFNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSkK
IHsKICAgICBtX3dha2VVcFNlbWFwaG9yZSA9IFdURk1vdmUoc2VtYXBob3JlKTsKQEAgLTgzLDQg
KzEzOCw5IEBAIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImIFN0cmVhbUNsaWVudENvbm5lY3Rpb246
OmJ1ZmZlckZvclRlc3RpbmcoKQogICAgIHJldHVybiBtX2J1ZmZlcjsKIH0KIAorQ29ubmVjdGlv
biYgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvclRlc3RpbmcoKQoreworICAg
IHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaAppbmRleCAyYjQ3ZTI1ZWNi
YzExODI0OTFkMmRmZGU3MjgwZDdiYzMwNTExZTc0Li40ZTQyMGQ0ZmY2MTViNTcwZWUwYjUyMjY5
Mjg5YjM0NjgwMWY3N2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
dHJlYW1DbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC01Nyw4ICs1NywzMSBAQCBjbGFzcyBTdHJlYW1D
bGllbnRDb25uZWN0aW9uIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdHJlYW1DbGllbnRDb25uZWN0aW9uKTsKIHB1YmxpYzoK
KyAgICAvLyBDcmVhdGVzIFN0cmVhbUNsaWVudENvbm5lY3Rpb24gd2hlcmUgdGhlIG91dCBvZiBz
dHJlYW0gbWVzc2FnZXMgYW5kIHNlcnZlciByZXBsaWVzIGFyZQorICAgIC8vIHNlbnQgdGhyb3Vn
aCB0aGUgcGFzc2VkIElQQzo6Q29ubmVjdGlvbi4gVGhlIG1lc3NhZ2VzIGZyb20gdGhlIHNlcnZl
ciBhcmUgZGVsaXZlcmVkIHRvCisgICAgLy8gdGhlIGNhbGxlciB0aHJvdWdoIHRoZSBwYXNzZWQg
SVBDOjpDb25uZWN0aW9uLgorICAgIC8vIE5vdGU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVz
ZWQgb25seSBpbiBjYXNlcyB3aGVyZSB0aGUKKyAgICAvLyBzdHJlYW0gc2VydmVyIHN0YXJ0cyBs
aXN0ZW5pbmcgdG8gbWVzc2FnZXMgd2l0aCBuZXcgaWRlbnRpZmllcnMgb24gdGhlIHNhbWUgdGhy
ZWFkIGFzCisgICAgLy8gaW4gd2hpY2ggdGhlIHNlcnZlciBJUEM6OkNvbm5lY3Rpb24gZGlzcGF0
Y2ggbWVzc2FnZXMuIEF0IHRoZSB0aW1lIG9mIHdyaXRpbmcsCisgICAgLy8gSVBDOjpDb25uZWN0
aW9uIGRpc3BhdGNoZXMgbWVzc2FnZXMgb25seSBpbiBtYWluIHRocmVhZC4KICAgICBTdHJlYW1D
bGllbnRDb25uZWN0aW9uKENvbm5lY3Rpb24mLCBzaXplX3QgYnVmZmVyU2l6ZSk7CiAKKyAgICBz
dHJ1Y3QgU3RyZWFtQ29ubmVjdGlvbldpdGhEZWRpY2F0ZWRDb25uZWN0aW9uIHsKKyAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFN0cmVhbUNsaWVudENvbm5lY3Rpb24+IHN0cmVhbUNvbm5lY3Rpb247
CisgICAgICAgIEF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXI7CisgICAgICAgIC8vIEZJ
WE1FOiBPbmNlIElQQyBjYW4gdHJlYXQgaGFuZGxlcyBhcyBmaXJzdCBjbGFzcyBvYmplY3RzLCBh
ZGQgc3RyZWFtIGJ1ZmZlciBhcworICAgICAgICAvLyBhIGhhbmRsZSBoZXJlLgorICAgIH07CisK
KyAgICAvLyBDcmVhdGVzIFN0cmVhbUNsaWVudENvbm5lY3Rpb24gd2hlcmUgdGhlIG91dCBvZiBz
dHJlYW0gbWVzc2FnZXMgYW5kIHNlcnZlciByZXBsaWVzIGFyZQorICAgIC8vIHNlbnQgdGhyb3Vn
aCBhIGRlZGlkY2F0ZWQsIG5ldyBJUEM6OkNvbm5lY3Rpb24uIFRoZSBtZXNzYWdlcyBmcm9tIHRo
ZSBzZXJ2ZXIgYXJlIGRlbGl2ZXJlZCB0bworICAgIC8vIHRoZSBjYWxsZXIgdGhyb3VnaCB0aGUg
cGFzc2VkIElQQzo6TWVzc2FnZVJlY2VpdmVyLgorICAgIC8vIFRoZSBjYWxsZXIgc2hvdWxkIHNl
bmQgU3RyZWFtQ29ubmVjdGlvbldpdGhEZWRpY2F0ZWRDb25uZWN0aW9uOjpjb25uZWN0aW9uSWRl
bnRpZmllciBhbmQKKyAgICAvLyBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzdHJlYW1CdWZmZXIo
KSB0byB0aGUgc2VydmVyIHZpYSBhbiBleGlzdGluZyBJUEM6OkNvbm5lY3Rpb24uCisgICAgc3Rh
dGljIFN0cmVhbUNvbm5lY3Rpb25XaXRoRGVkaWNhdGVkQ29ubmVjdGlvbiBjcmVhdGVXaXRoRGVk
aWNhdGVkQ29ubmVjdGlvbihNZXNzYWdlUmVjZWl2ZXImLCBzaXplX3QgYnVmZmVyU2l6ZSk7CisK
KyAgICB+U3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpOworCiAgICAgU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlciYgc3RyZWFtQnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KICAgICB2b2lkIHNldFdh
a2VVcFNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmKTsKICAgICBib29sIGhhc1dha2VVcFNlbWFw
aG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2FrZVVwU2VtYXBob3JlLmhhc192YWx1ZSgpOyB9CkBA
IC03MCw2ICs5Myw5IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdm9pZCBzZW5kRGVmZXJyZWRXYWtl
VXBNZXNzYWdlSWZOZWVkZWQoKTsKIAorICAgIHZvaWQgb3BlbigpOworICAgIHZvaWQgaW52YWxp
ZGF0ZSgpOworCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gYm9vbCBzZW5k
KFQmJiBtZXNzYWdlLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFRpbWVvdXQp
OwogCiAgICAgdXNpbmcgU2VuZFN5bmNSZXN1bHQgPSBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3Vs
dDsKQEAgLTgwLDkgKzEwNiwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCB3YWl0Rm9yQW5kRGlzcGF0
Y2hJbW1lZGlhdGVseShPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFRpbWVvdXQs
IE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPiA9IHsgfSk7CiAKICAgICBTdHJlYW1Db25uZWN0aW9u
QnVmZmVyJiBidWZmZXJGb3JUZXN0aW5nKCk7CisgICAgQ29ubmVjdGlvbiYgY29ubmVjdGlvbkZv
clRlc3RpbmcoKTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgV2ViS2l0OjpJUENUZXN0
aW5nQVBJOjpKU0lQQ1N0cmVhbUNsaWVudENvbm5lY3Rpb247CisgICAgY2xhc3MgRGVkaWNhdGVk
Q29ubmVjdGlvbkNsaWVudDsKKyAgICBTdHJlYW1DbGllbnRDb25uZWN0aW9uKFJlZjxDb25uZWN0
aW9uPiYmLCBzaXplX3QgYnVmZmVyU2l6ZSwgc3RkOjp1bmlxdWVfcHRyPERlZGljYXRlZENvbm5l
Y3Rpb25DbGllbnQ+JiYpOwogCiAgICAgc3RydWN0IFNwYW4gewogICAgICAgICB1aW50OF90KiBk
YXRhOwpAQCAtMTIyLDE0ICsxNTAsMTYgQEAgcHJpdmF0ZToKICAgICB1aW50OF90KiBkYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CiAgICAgc2l6ZV90IGRhdGFTaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YVNpemUoKTsgfQogCi0gICAgQ29ubmVjdGlvbiYg
bV9jb25uZWN0aW9uOworICAgIFJlZjxDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPERlZGljYXRlZENvbm5lY3Rpb25DbGllbnQ+IG1fZGVkaWNhdGVkQ29ubmVj
dGlvbkNsaWVudDsKICAgICB1aW50NjRfdCBtX2N1cnJlbnREZXN0aW5hdGlvbklEIHsgMCB9Owot
CiAgICAgc2l6ZV90IG1fY2xpZW50T2Zmc2V0IHsgMCB9OwogICAgIFN0cmVhbUNvbm5lY3Rpb25C
dWZmZXIgbV9idWZmZXI7CiAgICAgc3RkOjpvcHRpb25hbDxTZW1hcGhvcmU+IG1fd2FrZVVwU2Vt
YXBob3JlOwogICAgIHVuc2lnbmVkIG1fcmVtYWluaW5nTWVzc2FnZUNvdW50QmVmb3JlU2VuZGlu
Z1dha2VVcCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX3dha2VVcE1lc3NhZ2VIeXN0ZXJlc2lzIHsg
MCB9OworCisgICAgZnJpZW5kIGNsYXNzIFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6SlNJUENTdHJl
YW1DbGllbnRDb25uZWN0aW9uOwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VT4KQEAgLTE0Niw3ICsxNzYsNyBAQCBib29sIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmQo
VCYmIG1lc3NhZ2UsIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRAogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHNlbmRQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdl
KFdURk1vdmUoKnNwYW4pKTsKLSAgICBpZiAoIW1fY29ubmVjdGlvbi5zZW5kKFdURk1vdmUobWVz
c2FnZSksIGRlc3RpbmF0aW9uSUQsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZl
bldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KSkKKyAgICBpZiAoIW1fY29ubmVjdGlvbi0+c2VuZChX
VEZNb3ZlKG1lc3NhZ2UpLCBkZXN0aW5hdGlvbklELCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNo
TWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTE4MSwxMyArMjExLDEzIEBAIFN0cmVhbUNsaWVu
dENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmRT
eW5jKFQmJiBtZXNzCiAgICAgICAgICAgICByZXR1cm4gV1RGTW92ZSgqbWF5YmVTZW5kUmVzdWx0
KTsKICAgICB9CiAgICAgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoV1RGTW92ZSgqc3Bh
bikpOwotICAgIHJldHVybiBtX2Nvbm5lY3Rpb24uc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwg
V1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCk7CisgICAg
cmV0dXJuIG1fY29ubmVjdGlvbi0+c2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShy
ZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCk7CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CiBib29sIFN0cmVhbUNsaWVudENvbm5lY3Rpb246Ondh
aXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5KE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRp
b25JRCwgVGltZW91dCB0aW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9w
dGlvbnMpCiB7Ci0gICAgcmV0dXJuIG1fY29ubmVjdGlvbi53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1l
ZGlhdGVseTxUPihkZXN0aW5hdGlvbklELCB0aW1lb3V0LCB3YWl0Rm9yT3B0aW9ucyk7CisgICAg
cmV0dXJuIG1fY29ubmVjdGlvbi0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8VD4oZGVz
dGluYXRpb25JRCwgdGltZW91dCwgd2FpdEZvck9wdGlvbnMpOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgpAQCAtMTk1LDggKzIyNSw4IEBAIHN0ZDo6b3B0aW9uYWw8U3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQ+IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyCiB7CiAg
ICAgLy8gSW4gdGhpcyBmdW5jdGlvbiwgU2VuZFN5bmNSZXN1bHQgeyB9IG1lYW5zIGVycm9yIGhh
cHBlbmVkIGFuZCBjYWxsZXIgc2hvdWxkIHN0b3AgcHJvY2Vzc2luZy4KICAgICAvLyBzdGQ6Om51
bGxvcHQgbWVhbnMgd2UgY291bGRuJ3Qgc2VuZCB0aHJvdWdoIHRoZSBzdHJlYW0sIHNvIHRyeSBz
ZW5kaW5nIG91dCBvZiBzdHJlYW0uCi0gICAgYXV0byBzeW5jUmVxdWVzdElEID0gbV9jb25uZWN0
aW9uLm1ha2VTeW5jUmVxdWVzdElEKCk7Ci0gICAgaWYgKCFtX2Nvbm5lY3Rpb24ucHVzaFBlbmRp
bmdTeW5jUmVxdWVzdElEKHN5bmNSZXF1ZXN0SUQpKQorICAgIGF1dG8gc3luY1JlcXVlc3RJRCA9
IG1fY29ubmVjdGlvbi0+bWFrZVN5bmNSZXF1ZXN0SUQoKTsKKyAgICBpZiAoIW1fY29ubmVjdGlv
bi0+cHVzaFBlbmRpbmdTeW5jUmVxdWVzdElEKHN5bmNSZXF1ZXN0SUQpKQogICAgICAgICByZXR1
cm4gU2VuZFN5bmNSZXN1bHQgeyB9OwogCiAgICAgYXV0byByZXN1bHQgPSBbJl0oKSAtPiBzdGQ6
Om9wdGlvbmFsPFNlbmRTeW5jUmVzdWx0PiB7CkBAIC0yMjAsOSArMjUwLDkgQEAgc3RkOjpvcHRp
b25hbDxTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdD4gU3RyZWFtQ2xpZW50
Q29ubmVjdGlvbjo6dHIKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICBtX2NsaWVudE9mZnNldCA9IDA7Ci0gICAgICAgIHJldHVybiBtX2Nvbm5lY3Rpb24ud2FpdEZv
clN5bmNSZXBseShzeW5jUmVxdWVzdElELCBUOjpuYW1lKCksIHRpbWVvdXQsIHsgfSk7CisgICAg
ICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPndhaXRGb3JTeW5jUmVwbHkoc3luY1JlcXVlc3RJRCwg
VDo6bmFtZSgpLCB0aW1lb3V0LCB7IH0pOwogICAgIH0oKTsKLSAgICBtX2Nvbm5lY3Rpb24ucG9w
UGVuZGluZ1N5bmNSZXF1ZXN0SUQoc3luY1JlcXVlc3RJRCk7CisgICAgbV9jb25uZWN0aW9uLT5w
b3BQZW5kaW5nU3luY1JlcXVlc3RJRChzeW5jUmVxdWVzdElEKTsKICAgICBpZiAocmVzdWx0ICYm
ICpyZXN1bHQpIHsKICAgICAgICAgYXV0byYgZGVjb2RlciA9ICoqcmVzdWx0OwogICAgICAgICBz
dGQ6Om9wdGlvbmFsPHR5cGVuYW1lIFQ6OlJlcGx5QXJndW1lbnRzPiByZXBseUFyZ3VtZW50czsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVj
dGlvbi5jcHAKaW5kZXggMTk3YTU2YTM2YTY5MWUyYWQ4NDc2NDc3OWFjMWM2N2RmOTQxMTcyYi4u
NDlmZTczNGIxZWUzYjE3OTIxZDRiNTg4ZTk3ODNlZjhiOTg2MWNhZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAg
LTI4LDQyICsyOCw5OCBAQAogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlN0
cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCIKKyNpbmNsdWRlIDxtdXRleD4KKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIElQQyB7CiAKLVN0cmVhbVNlcnZlckNv
bm5lY3Rpb25CYXNlOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZShDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtLCBTdHJlYW1Db25uZWN0aW9u
V29ya1F1ZXVlJiB3b3JrUXVldWUpCi0gICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKK25h
bWVzcGFjZSB7CisvLyBQYXJ0IDIuIG9mIHRoZSB3b3JrYXJvdW5kIGZvciBub3QgaGF2aW5nIG5v
bi1kaXNwYXRjaGluZyBDb25uZWN0aW9uLiBXZSBoYXZlIGEgZHVtbXkgQ29ubmVjdGlvbjo6Q2xp
ZW50IHdoaWNoIGlzIGV4cGVjdGVkIHRvCisvLyBuZXZlciBnZXQgYW55IG1lc3NhZ2VzLgorY2xh
c3MgRGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudCBmaW5hbCA6IHB1YmxpYyBDb25uZWN0aW9uOjpD
bGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKERlZGljYXRlZENvbm5lY3Rpb25DbGllbnQpOworcHVibGljOgorICAgIERlZGljYXRl
ZENvbm5lY3Rpb25DbGllbnQoKSA9IGRlZmF1bHQ7CisgICAgLy8gQ29ubmVjdGlvbjo6Q2xpZW50
LgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVj
b2RlciYgZGVjb2RlcikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIGJvb2wg
ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRl
Y29kZXIsIFVuaXF1ZVJlZjxFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKSBmaW5hbCB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIGRpZENsb3NlKENvbm5lY3Rp
b24mKSBmaW5hbCB7IH0gLy8gQ2xpZW50IGlzIGV4cGVjdGVkIHRvIGxpc3RlbiB0byBDb25uZWN0
aW9uOjpkaWRDbG9zZSgpIGZyb20gdGhlIGNvbm5lY3Rpb24gaXQgc2VudCB0byB0aGUgZGVkaWNh
dGVkIGNvbm5lY3Rpb24gdG8uCisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoQ29u
bmVjdGlvbiYsIE1lc3NhZ2VOYW1lKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9IC8v
IFRoZSBzZW5kZXIgaXMgZXhwZWN0ZWQgdG8gYmUgdHJ1c3RlZCwgc28gYWxsIGludmFsaWQgbWVz
c2FnZXMgYXJlIHByb2dyYW1taW5nIGVycm9ycy4KK3ByaXZhdGU6Cit9OworCit9CisKK1JlZjxT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGUoQ29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbUJ1ZmZl
ciwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYgd29ya1F1ZXVlKQoreworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFN0cmVhbVNlcnZlckNvbm5lY3Rpb24oUmVmIHsgY29ubmVjdGlvbiB9LCBX
VEZNb3ZlKHN0cmVhbUJ1ZmZlciksIHdvcmtRdWV1ZSwgSGFzRGVkaWNhdGVkQ29ubmVjdGlvbjo6
Tm8pKTsKK30KKworUmVmPFN0cmVhbVNlcnZlckNvbm5lY3Rpb24+IFN0cmVhbVNlcnZlckNvbm5l
Y3Rpb246OmNyZWF0ZVdpdGhEZWRpY2F0ZWRDb25uZWN0aW9uKEF0dGFjaG1lbnQmJiBjb25uZWN0
aW9uSWRlbnRpZmllciwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbUJ1ZmZlciwgU3Ry
ZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYgd29ya1F1ZXVlKQoreworI2lmIFVTRShVTklYX0RPTUFJ
Tl9TT0NLRVRTKQorICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSGFu
ZGxlIHsgY29ubmVjdGlvbklkZW50aWZpZXIucmVsZWFzZUZpbGVEZXNjcmlwdG9yKCkgfTsKKyNl
bGlmIE9TKERBUldJTikKKyAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlv
bkhhbmRsZSB7IGNvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSB9OworI2VsaWYgT1MoV0lORE9X
UykKKyAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbkhhbmRsZSB7IGNv
bm5lY3Rpb25JZGVudGlmaWVyLmhhbmRsZSgpIH07CisjZWxzZQorICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25IYW5kbGUgeyB9
OworI2VuZGlmCisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxEZWRpY2F0ZWRDb25uZWN0
aW9uQ2xpZW50PiBzX2RlZGljYXRlZENvbm5lY3Rpb25DbGllbnQ7CisgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIHNfb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uoc19vbmNlRmxhZywgW10g
eworICAgICAgICBzX2RlZGljYXRlZENvbm5lY3Rpb25DbGllbnQuY29uc3RydWN0KCk7CisgICAg
fSk7CisgICAgYXV0byBjb25uZWN0aW9uID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVDbGllbnRD
b25uZWN0aW9uKGNvbm5lY3Rpb25IYW5kbGUsIHNfZGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudC5n
ZXQoKSk7CisgICAgYXV0byBzdHJlYW1Db25uZWN0aW9uID0gYWRvcHRSZWYoKm5ldyBTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbiksIFdURk1vdmUoc3RyZWFtQnVmZmVy
KSwgd29ya1F1ZXVlLCBIYXNEZWRpY2F0ZWRDb25uZWN0aW9uOjpZZXMpKTsKKyAgICByZXR1cm4g
c3RyZWFtQ29ubmVjdGlvbjsKK30KKworCitTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6U3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UoUmVmPENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgU3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbSwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYg
d29ya1F1ZXVlLCBIYXNEZWRpY2F0ZWRDb25uZWN0aW9uIGhhc0RlZGljYXRlZENvbm5lY3Rpb24p
CisgICAgOiBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKICAgICAsIG1fd29ya1F1
ZXVlKHdvcmtRdWV1ZSkKICAgICAsIG1fYnVmZmVyKFdURk1vdmUoc3RyZWFtKSkKKyAgICAsIG1f
aGFzRGVkaWNhdGVkQ29ubmVjdGlvbihoYXNEZWRpY2F0ZWRDb25uZWN0aW9uID09IEhhc0RlZGlj
YXRlZENvbm5lY3Rpb246OlllcykKIHsKIH0KIAotdm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
QmFzZTo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlc0ltcGwoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFt
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK1N0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjp+
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UoKQogewotICAgIC8vIEZJWE1FOiBDYW4gd2UgYXZv
aWQgc3luY2hyb25vdXMgZGlzcGF0Y2ggaGVyZSBieSBhZGp1c3RpbmcgdGhlIGFzc2VydGlvbiBp
biBgQ29ubmVjdGlvbjo6ZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXNUb01lc3NhZ2VSZWNlaXZlUXVl
dWVgPwotICAgIGNhbGxPbk1haW5SdW5Mb29wQW5kV2FpdChbJl0gewotICAgICAgICBtX2Nvbm5l
Y3Rpb24tPmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUoKnRoaXMsIHsgcmVjZWl2ZXJOYW1lLCBkZXN0
aW5hdGlvbklEIH0pOwotICAgIH0pOwotICAgIG1fd29ya1F1ZXVlLmFkZFN0cmVhbUNvbm5lY3Rp
b24oKnRoaXMpOworICAgIEFTU0VSVCghbV9oYXNEZWRpY2F0ZWRDb25uZWN0aW9uIHx8ICFtX2Nv
bm5lY3Rpb24tPmlzVmFsaWQoKSk7CiB9CiAKLXZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJh
c2U6OnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBsKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUp
Cit2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpvcGVuKCkKIHsKLSAgICBjYWxsT25N
YWluUnVuTG9vcEFuZFdhaXQoWyZdIHsKLSAgICAgICAgbV9jb25uZWN0aW9uLT5hZGRNZXNzYWdl
UmVjZWl2ZVF1ZXVlKCp0aGlzLCB7IHJlY2VpdmVyTmFtZSB9KTsKLSAgICB9KTsKLSAgICBtX3dv
cmtRdWV1ZS5hZGRTdHJlYW1Db25uZWN0aW9uKCp0aGlzKTsKKyAgICBpZiAobV9oYXNEZWRpY2F0
ZWRDb25uZWN0aW9uKSB7CisgICAgICAgIC8vIFBhcnQgMS4gb2YgdGhlIHdvcmthcm91bmQgZm9y
IG5vdCBoYXZpbmcgbm9uLWRpc3BhdGNoaW5nIENvbm5lY3Rpb24uIERpdmVydCBhbGwgbWVzc2Fn
ZXMgdG8gdGhlIHJlY2VpdmUgcXVldWUuCisgICAgICAgIG1fY29ubmVjdGlvbi0+YWRkTWVzc2Fn
ZVJlY2VpdmVRdWV1ZSgqdGhpcywgeyB9KTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5vcGVuKCk7
CisgICAgfQogfQogCi12b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzdG9wUmVjZWl2
aW5nTWVzc2FnZXNJbXBsKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUpCit2b2lkIFN0cmVhbVNl
cnZlckNvbm5lY3Rpb25CYXNlOjppbnZhbGlkYXRlKCkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPnJl
bW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUoeyByZWNlaXZlck5hbWUgfSk7Ci0gICAgbV93b3JrUXVl
dWUucmVtb3ZlU3RyZWFtQ29ubmVjdGlvbigqdGhpcyk7CisgICAgaWYgKG1faGFzRGVkaWNhdGVk
Q29ubmVjdGlvbikgeworICAgICAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZU1lc3NhZ2VSZWNlaXZl
UXVldWUoeyB9KTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5pbnZhbGlkYXRlKCk7CisgICAgfQor
fQorCit2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzdGFydFJlY2VpdmluZ01lc3Nh
Z2VzSW1wbChSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
KQoreworICAgIGlmICghbV9oYXNEZWRpY2F0ZWRDb25uZWN0aW9uKQorICAgICAgICBtX2Nvbm5l
Y3Rpb24tPmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUoKnRoaXMsIHsgcmVjZWl2ZXJOYW1lLCBkZXN0
aW5hdGlvbklEIH0pOworICAgIG1fd29ya1F1ZXVlLmFkZFN0cmVhbUNvbm5lY3Rpb24oKnRoaXMp
OwogfQogCiB2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzdG9wUmVjZWl2aW5nTWVz
c2FnZXNJbXBsKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQpCiB7Ci0gICAgbV9jb25uZWN0aW9uLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKHsgcmVj
ZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEIH0pOworICAgIGlmICghbV9oYXNEZWRpY2F0ZWRDb25u
ZWN0aW9uKQorICAgICAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUo
eyByZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQgfSk7CiAgICAgbV93b3JrUXVldWUucmVtb3Zl
U3RyZWFtQ29ubmVjdGlvbigqdGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaAppbmRleCBlNmE0MjUxNGY0Y2U3MDg1
ZTdjN2NkMTJiMTc2MTNlNjQ4NmQyNmQ3Li4yNmQ1MDI5YjA1NzQ2NTYxOGQzZjEzMDBjOWExZmYy
YzdhZmIyZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFt
U2VydmVyQ29ubmVjdGlvbi5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFN0cmVhbUNvbm5lY3Rp
b25Xb3JrUXVldWU7CiBjbGFzcyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZT4sIHByb3RlY3Rl
ZCBNZXNzYWdlUmVjZWl2ZVF1ZXVlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uQmFzZSk7CiBwdWJsaWM6Ci0gICAgflN0cmVhbVNlcnZlckNvbm5lY3Rp
b25CYXNlKCkgb3ZlcnJpZGUgPSBkZWZhdWx0OworICAgIH5TdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
QmFzZSgpIG92ZXJyaWRlOwogCiAgICAgQ29ubmVjdGlvbiYgY29ubmVjdGlvbigpIHsgcmV0dXJu
IG1fY29ubmVjdGlvbjsgfQogCkBAIC01NiwxNSArNTYsMTUgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KICAgICB2b2lkIHNlbmRTeW5j
UmVwbHkoQ29ubmVjdGlvbjo6U3luY1JlcXVlc3RJRCwgQXJndW1lbnRzJiYuLi4pOwogCisgICAg
dm9pZCBvcGVuKCk7CisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiBwcm90ZWN0ZWQ6Ci0gICAgU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UoSVBDOjpDb25uZWN0aW9uJiwgU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlciYmLCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJik7CisgICAgZW51bSBjbGFzcyBI
YXNEZWRpY2F0ZWRDb25uZWN0aW9uIHsgTm8sIFllcyB9OworICAgIFN0cmVhbVNlcnZlckNvbm5l
Y3Rpb25CYXNlKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIm
JiwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYsIEhhc0RlZGljYXRlZENvbm5lY3Rpb24pOwog
CiAgICAgdm9pZCBzdGFydFJlY2VpdmluZ01lc3NhZ2VzSW1wbChSZWNlaXZlck5hbWUsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQpOwogICAgIHZvaWQgc3RvcFJlY2VpdmluZ01lc3NhZ2VzSW1wbChS
ZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwogCi0gICAgdm9pZCBzdGFydFJl
Y2VpdmluZ01lc3NhZ2VzSW1wbChSZWNlaXZlck5hbWUpOwotICAgIHZvaWQgc3RvcFJlY2Vpdmlu
Z01lc3NhZ2VzSW1wbChSZWNlaXZlck5hbWUpOwotCiAgICAgLy8gTWVzc2FnZVJlY2VpdmVRdWV1
ZQogICAgIHZvaWQgZW5xdWV1ZU1lc3NhZ2UoQ29ubmVjdGlvbiYsIHN0ZDo6dW5pcXVlX3B0cjxE
ZWNvZGVyPiYmKSBmaW5hbDsKIApAQCAtMTAxLDYgKzEwMSw3IEBAIHByb3RlY3RlZDoKICAgICBE
ZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4+IG1fb3V0T2ZTdHJlYW1NZXNzYWdlcyBXVEZf
R1VBUkRFRF9CWV9MT0NLKG1fb3V0T2ZTdHJlYW1NZXNzYWdlc0xvY2spOwogCiAgICAgYm9vbCBt
X2lzRGlzcGF0Y2hpbmdTdHJlYW1NZXNzYWdlIHsgZmFsc2UgfTsKKyAgICBjb25zdCBib29sIG1f
aGFzRGVkaWNhdGVkQ29ubmVjdGlvbjsKIAogICAgIGZyaWVuZCBjbGFzcyBTdHJlYW1Db25uZWN0
aW9uV29ya1F1ZXVlOwogfTsKQEAgLTEzNywyNyArMTM4LDMzIEBAIHZvaWQgU3RyZWFtU2VydmVy
Q29ubmVjdGlvbkJhc2U6OnNlbmRTeW5jUmVwbHkoQ29ubmVjdGlvbjo6U3luY1JlcXVlc3RJRCBz
eW5jUmVxCiAvLyBUaGUgU3RyZWFtU2VydmVyQ29ubmVjdGlvbiBkb2VzIG5vdCB0cnVzdCB0aGUg
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbi4KIGNsYXNzIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24gZmlu
YWwgOiBwdWJsaWMgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gY3JlYXRlKENvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW1CdWZmZXIsIFN0cmVhbUNvbm5l
Y3Rpb25Xb3JrUXVldWUmIHdvcmtRdWV1ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFN0cmVhbVNlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbiwgV1RGTW92ZShzdHJlYW1C
dWZmZXIpLCB3b3JrUXVldWUpKTsKLSAgICB9CisgICAgLy8gQ3JlYXRlcyBTdHJlYW1DbGllbnRD
b25uZWN0aW9uIHdoZXJlIHRoZSBvdXQgb2Ygc3RyZWFtIG1lc3NhZ2VzIGFuZCBzZXJ2ZXIgcmVw
bGllcyBhcmUKKyAgICAvLyByZWNlaXZlZCB0aHJvdWdoIHRoZSBwYXNzZWQgSVBDOjpDb25uZWN0
aW9uLiBUaGUgbWVzc2FnZXMgZnJvbSB0aGUgc2VydmVyIGFyZSBzZW50IHRvCisgICAgLy8gdGhl
IHBhc3NlZCBJUEM6OkNvbm5lY3Rpb24uCisgICAgLy8gTm90ZTogVGhpcyBmdW5jdGlvbiBzaG91
bGQgYmUgdXNlZCBvbmx5IGluIGNhc2VzIHdoZXJlIHRoZQorICAgIC8vIHN0cmVhbSBzZXJ2ZXIg
c3RhcnRzIGxpc3RlbmluZyB0byBtZXNzYWdlcyB3aXRoIG5ldyBpZGVudGlmaWVycyBvbiB0aGUg
c2FtZSB0aHJlYWQgYXMKKyAgICAvLyBpbiB3aGljaCB0aGUgc2VydmVyIElQQzo6Q29ubmVjdGlv
biBkaXNwYXRjaCBtZXNzYWdlcy4gQXQgdGhlIHRpbWUgb2Ygd3JpdGluZywKKyAgICAvLyBJUEM6
OkNvbm5lY3Rpb24gZGlzcGF0Y2hlcyBtZXNzYWdlcyBvbmx5IGluIG1haW4gdGhyZWFkLgorICAg
IHN0YXRpYyBSZWY8U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gY3JlYXRlKENvbm5lY3Rpb24mLCBT
dHJlYW1Db25uZWN0aW9uQnVmZmVyJiYsIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmKTsKKwor
ICAgIC8vIENyZWF0ZXMgU3RyZWFtU2VydmVyQ29ubmVjdGlvbiB3aGVyZSB0aGUgb3V0IG9mIHN0
cmVhbSBtZXNzYWdlcyBhbmQgc2VydmVyIHJlcGxpZXMgYXJlCisgICAgLy8gcmVjZWl2ZWQgdGhy
b3VnaCBhIGRlZGlkY2F0ZWQsIG5ldyBJUEM6OkNvbm5lY3Rpb24uIFRoZSBtZXNzYWdlcyBmcm9t
IHRoZSBzZXJ2ZXIgYXJlIHNlbnQgdG8KKyAgICAvLyB0aGUgZGVkaWNhdGVkIGNvbm5lY2l0b24u
CisgICAgc3RhdGljIFJlZjxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiBjcmVhdGVXaXRoRGVkaWNh
dGVkQ29ubmVjdGlvbihBdHRhY2htZW50JiYgY29ubmVjdGlvbklkZW50aWZpZXIsIFN0cmVhbUNv
bm5lY3Rpb25CdWZmZXImJiwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYpOworCiAgICAgflN0
cmVhbVNlcnZlckNvbm5lY3Rpb24oKSBmaW5hbCA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIHN0YXJ0
UmVjZWl2aW5nTWVzc2FnZXMoU3RyZWFtTWVzc2FnZVJlY2VpdmVyJiwgUmVjZWl2ZXJOYW1lLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKICAgICAvLyBTdG9wcyB0aGUgbWVzc2FnZSByZWNlaXB0
LiBOb3RlOiBhbHJlYWR5IHJlY2VpdmVkIG1lc3NhZ2VzIG1pZ2h0IHN0aWxsIGJlIGRlbGl2ZXJl
ZC4KICAgICB2b2lkIHN0b3BSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZlck5hbWUsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQpOwogCi0gICAgaW5saW5lIHZvaWQgc3RhcnRSZWNlaXZpbmdNZXNzYWdl
cyhSZWNlaXZlck5hbWUpOwotICAgIGlubGluZSB2b2lkIHN0b3BSZWNlaXZpbmdNZXNzYWdlcyhS
ZWNlaXZlck5hbWUpOwotCiAgICAgLy8gU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2Ugb3ZlcnJp
ZGVzLgogICAgIERpc3BhdGNoUmVzdWx0IGRpc3BhdGNoU3RyZWFtTWVzc2FnZXMoc2l6ZV90IG1l
c3NhZ2VMaW1pdCkgZmluYWw7CiAKK3Byb3RlY3RlZDoKKyAgICB1c2luZyBTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uQmFzZTo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U7CisKIHByaXZhdGU6Ci0g
ICAgU3RyZWFtU2VydmVyQ29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTdHJlYW1D
b25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtQnVmZmVyLCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVl
JiB3b3JrUXVldWUpCi0gICAgICAgIDogU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UoY29ubmVj
dGlvbiwgV1RGTW92ZShzdHJlYW1CdWZmZXIpLCB3b3JrUXVldWUpCi0gICAgewotICAgIH0KICAg
ICBib29sIHByb2Nlc3NTZXRTdHJlYW1EZXN0aW5hdGlvbklEKERlY29kZXImJiwgUmVmUHRyPFN0
cmVhbU1lc3NhZ2VSZWNlaXZlcj4mIGN1cnJlbnRSZWNlaXZlcik7CiAgICAgYm9vbCBkaXNwYXRj
aFN0cmVhbU1lc3NhZ2UoRGVjb2RlciYmLCBTdHJlYW1NZXNzYWdlUmVjZWl2ZXImKTsKICAgICBi
b29sIGRpc3BhdGNoT3V0T2ZTdHJlYW1NZXNzYWdlKERlY29kZXImJik7CkBAIC0xNjcsMTQgKzE3
NCw0IEBAIHByaXZhdGU6CiAgICAgdWludDY0X3QgbV9jdXJyZW50RGVzdGluYXRpb25JRCB7IDAg
fTsKIH07CiAKLXZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRSZWNlaXZpbmdNZXNz
YWdlcyhSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lKQotewotICAgIFN0cmVhbVNlcnZlckNvbm5l
Y3Rpb25CYXNlOjpzdGFydFJlY2VpdmluZ01lc3NhZ2VzSW1wbChyZWNlaXZlck5hbWUpOwotfQot
Ci12b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb246OnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhSZWNl
aXZlck5hbWUgcmVjZWl2ZXJOYW1lKQotewotICAgIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNl
OjpzdG9wUmVjZWl2aW5nTWVzc2FnZXNJbXBsKHJlY2VpdmVyTmFtZSk7Ci19Ci0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1N0cmVhbVRlc3Rlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9JUENTdHJlYW1UZXN0ZXIuY3BwCmluZGV4IGFiYjZhYzQ5ZDY4MTdjZTYw
MjBmOWM3ZDNhYzdiMjY1YTYxZmRiMzguLjgyMjY3ZTIxYWRlNjJhOWI2Njc0NWYzZGM4N2E2Y2E1
YzMwYjJlZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1N0cmVhbVRlc3Rl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDU3RyZWFtVGVzdGVyLmNwcApAQCAt
NTUsNiArNTUsNyBAQCBJUENTdHJlYW1UZXN0ZXI6On5JUENTdHJlYW1UZXN0ZXIoKSA9IGRlZmF1
bHQ7CiB2b2lkIElQQ1N0cmVhbVRlc3Rlcjo6aW5pdGlhbGl6ZSgpCiB7CiAgICAgbV9zdHJlYW1D
b25uZWN0aW9uLT5zdGFydFJlY2VpdmluZ01lc3NhZ2VzKCp0aGlzLCBNZXNzYWdlczo6SVBDU3Ry
ZWFtVGVzdGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPm9wZW4oKTsKICAgICB3b3JrUXVldWUoKS5kaXNw
YXRjaChbdGhpc10gewogICAgICAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpJUENTdHJlYW1UZXN0ZXJQcm94eTo6V2FzQ3JlYXRlZCh3b3JrUXVldWUo
KS53YWtlVXBTZW1hcGhvcmUoKSksIG1faWRlbnRpZmllcik7CiAgICAgfSk7CkBAIC02Miw2ICs2
Myw3IEBAIHZvaWQgSVBDU3RyZWFtVGVzdGVyOjppbml0aWFsaXplKCkKIAogdm9pZCBJUENTdHJl
YW1UZXN0ZXI6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPElQQ1N0cmVhbVRlc3Rlcj4mJiByZWZG
cm9tQ29ubmVjdGlvbikKIHsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsK
ICAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhNZXNzYWdlczo6
SVBDU3RyZWFtVGVzdGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJ
bnQ2NCgpKTsKICAgICB3b3JrUXVldWUoKS5zdG9wQW5kV2FpdEZvckNvbXBsZXRpb24oKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCmluZGV4IDVlOTIyZjc5
YThmZWJiNzM2NjIwZTg0ODE3MTNkN2NjZjhlNzQwNjguLmE1Y2ZjMTcwNDhhZjAwYjM4MzZiZGY5
ODQ3ZDUwY2E1MzY2M2VjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmNwcApAQCAtNTUsNiArNTUsNyBAQCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KEdQVVByb2Nlc3NDb25uZWN0aW9uJgogICAgIG1f
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmFkZENsaWVudCgqdGhpcyk7CiAgICAgbV9ncHVQcm9jZXNz
Q29ubmVjdGlvbi0+bWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKICAgICBt
X2dwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6R1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlR3JhcGhpY3NDb250ZXh0R0woYXR0cmlidXRlcywg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIHJlbmRlcmluZ0JhY2tlbmQsIG1fc3RyZWFt
Q29ubmVjdGlvbi5zdHJlYW1CdWZmZXIoKSksIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hN
ZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rp
b24ub3BlbigpOwogICAgIC8vIFRPRE86IFdlIG11c3Qgd2FpdCB1bnRpbCBpbml0aWFsaXplZCwg
YmVjYXVzZSBhdCB0aGUgbW9tZW50IHdlIGNhbm5vdCByZWNlaXZlIElQQyBtZXNzYWdlcwogICAg
IC8vIGR1cmluZyB3YWl0IHdoaWxlIGluIHN5bmNocm9ub3VzIHN0cmVhbSBzZW5kLiBTaG91bGQg
YmUgZml4ZWQgYXMgcGFydCBvZiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE3MjExLgogICAgIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7CkBAIC0zMzcsNiArMzM4LDcg
QEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjphYmFuZG9uR3B1UHJvY2Vzcygp
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2Nvbm5lY3RHcHVQcm9jZXNz
SWZOZWVkZWQoKQogewogICAgIGlmIChhdXRvIGdwdVByb2Nlc3NDb25uZWN0aW9uID0gc3RkOjpl
eGNoYW5nZShtX2dwdVByb2Nlc3NDb25uZWN0aW9uLCBudWxscHRyKSkgeworICAgICAgICBtX3N0
cmVhbUNvbm5lY3Rpb24uaW52YWxpZGF0ZSgpOwogICAgICAgICBncHVQcm9jZXNzQ29ubmVjdGlv
bi0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKICAgICAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1l
c3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICAgICAgZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpSZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wobV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpLCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0Zv
clN5bmNSZXBseSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKaW5k
ZXggODMyNzY2MzNjYjU3N2Q5NThiNDQ0NWFhNzRiOTcxMTQ0NTA3MTQzZi4uZTkyNGVhZjU5YjJj
OTYwYWYwOTgyMjI0MzA1ZjJiYTZhNzIzOTJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LmNwcApAQCAtNzAsMTMgKzcwLDE0IEBAIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTo6flJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpCiBHUFVQcm9jZXNzQ29ubmVj
dGlvbiYgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjplbnN1cmVHUFVQcm9jZXNzQ29ubmVj
dGlvbigpCiB7CiAgICAgaWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0aW9uKSB7Ci0gICAgICAgIGF1
dG8mIGdwdVByb2Nlc3NDb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKLSAgICAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uYWRk
Q2xpZW50KCp0aGlzKTsKLSAgICAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZVJlY2Vp
dmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgcmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24g
PSAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsK
KyAgICAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+YWRkQ2xpZW50KCp0aGlzKTsKKwogICAg
ICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY29ubmVjdGlvbkJ1ZmZlclNpemUgPSAxIDw8IDIx
OwotICAgICAgICBtX3N0cmVhbUNvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPElQQzo6U3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbj4oZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLCBjb25uZWN0
aW9uQnVmZmVyU2l6ZSk7Ci0gICAgICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVSZW5kZXJp
bmdCYWNrZW5kKG1fcGFyYW1ldGVycywgbV9zdHJlYW1Db25uZWN0aW9uLT5zdHJlYW1CdWZmZXIo
KSksIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9y
U3luY1JlcGx5KTsKLSAgICAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbiA9IGdwdVByb2Nlc3ND
b25uZWN0aW9uOworICAgICAgICBhdXRvIFtzdHJlYW1Db25uZWN0aW9uLCBkZWRpY2F0ZWRDb25u
ZWN0aW9uQ2xpZW50SWRlbnRpZmVyXSA9IElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6Y3Jl
YXRlV2l0aERlZGljYXRlZENvbm5lY3Rpb24oKnRoaXMsIGNvbm5lY3Rpb25CdWZmZXJTaXplKTsK
KyAgICAgICAgbV9zdHJlYW1Db25uZWN0aW9uID0gV1RGTW92ZShzdHJlYW1Db25uZWN0aW9uKTsK
KyAgICAgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5vcGVuKCk7CisgICAgICAgIG1fZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpDcmVhdGVSZW5kZXJpbmdCYWNrZW5kKG1fcGFyYW1ldGVycywgZGVkaWNhdGVk
Q29ubmVjdGlvbkNsaWVudElkZW50aWZlciwgbV9zdHJlYW1Db25uZWN0aW9uLT5zdHJlYW1CdWZm
ZXIoKSksIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5n
Rm9yU3luY1JlcGx5KTsKICAgICB9CiAgICAgcmV0dXJuICptX2dwdVByb2Nlc3NDb25uZWN0aW9u
OwogfQpAQCAtMTAxLDYgKzEwMiw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpkaXNjb25uZWN0R1BVUHJvY2VzcygpCiAgICAgbV9nZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9y
eSA9IG51bGxwdHI7CiAgICAgbV9yZW5kZXJpbmdVcGRhdGVJRCA9IHsgfTsKICAgICBtX2RpZFJl
bmRlcmluZ1VwZGF0ZUlEID0geyB9OworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+aW52YWxpZGF0
ZSgpOwogICAgIG1fc3RyZWFtQ29ubmVjdGlvbiA9IG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCmluZGV4IDAxYWUwODBjMWQ1MTVjZGMwMmU1OTNmNGZj
N2Q5MTgxMzYwMzYzY2MuLmYxNTFlZjM1ZTJlZDUxNmY5OTZiNGNhOWI5MDE1ZDkyZmEyN2E0NWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaApAQCAtMTczLDkgKzE3Mywx
MCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRmx1c2goV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
Rmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwog
ICAgIHZvaWQgZGlkRmluYWxpemVSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlSUQgZGlk
UmVuZGVyaW5nVXBkYXRlSUQpOwogCisgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24qIG1fZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24geyBudWxscHRyIH07CisgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4g
bV9jb25uZWN0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OlN0cmVhbUNsaWVudENvbm5l
Y3Rpb24+IG1fc3RyZWFtQ29ubmVjdGlvbjsKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3Jl
YXRpb25QYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKLSAgICBXZWFrUHRyPEdQVVByb2Nlc3NDb25u
ZWN0aW9uPiBtX2dwdVByb2Nlc3NDb25uZWN0aW9uOwogICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB7ICp0aGlzIH07CiAgICAgUmVmUHRyPFNo
YXJlZE1lbW9yeT4gbV9nZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeTsKICAgICBXZWJDb3JlOjpU
aW1lciBtX2Rlc3Ryb3lHZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeVRpbWVyIHsgKnRoaXMsICZS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRlc3Ryb3lHZXRQaXhlbEJ1ZmZlclNoYXJlZE1l
bW9yeSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlR1BVUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVUHJveHkuY3BwCmluZGV4IDg0MzA0YTc3NjVkNzlm
Mjc1MTg4OTE1YWFkZDMwMThlYjE2MTZkYjIuLmE2ZDg4MTJiYWRkN2Q5MDVkYjdjYjNkNjEwYTQ1
YjA2YmYzM2VjZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5jcHAKQEAgLTUxLDYgKzUx
LDcgQEAgUmVtb3RlR1BVUHJveHk6OlJlbW90ZUdQVVByb3h5KEdQVVByb2Nlc3NDb25uZWN0aW9u
JiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgV2ViR1AKICAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9u
LT5hZGRDbGllbnQoKnRoaXMpOwogICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VS
ZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR1BVUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CiAg
ICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZVJlbW90ZUdQVShpZGVudGlmaWVyLCByZW5k
ZXJpbmdCYWNrZW5kLCBtX3N0cmVhbUNvbm5lY3Rpb24uc3RyZWFtQnVmZmVyKCkpLCAwLCBJUEM6
OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7
CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLm9wZW4oKTsKICAgICAvLyBUT0RPOiBXZSBtdXN0IHdh
aXQgdW50aWwgaW5pdGlhbGl6ZWQsIGJlY2F1c2UgYXQgdGhlIG1vbWVudCB3ZSBjYW5ub3QgcmVj
ZWl2ZSBJUEMgbWVzc2FnZXMKICAgICAvLyBkdXJpbmcgd2FpdCB3aGlsZSBpbiBzeW5jaHJvbm91
cyBzdHJlYW0gc2VuZC4gU2hvdWxkIGJlIGZpeGVkIGFzIHBhcnQgb2YgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzIxMS4KICAgICB3YWl0VW50aWxJbml0aWFsaXpl
ZCgpOwpAQCAtNjgsNiArNjksNyBAQCB2b2lkIFJlbW90ZUdQVVByb3h5OjpncHVQcm9jZXNzQ29u
bmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBjb25uZWN0aQogdm9pZCBSZW1v
dGVHUFVQcm94eTo6YWJhbmRvbkdQVVByb2Nlc3MoKQogewogICAgIGF1dG8gZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIG51bGxwdHIp
OworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi5pbnZhbGlkYXRlKCk7CiAgICAgZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6UmVtb3RlR1BVUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9iYWNraW5nLnRv
VUludDY0KCkpOwogICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24gPSBudWxscHRyOwogICAgIG1f
bG9zdCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9JUENUZXN0aW5nQVBJLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQ
Q1Rlc3RpbmdBUEkuY3BwCmluZGV4IGRiNWFhOGU0MGQzZGJmNmFiYmM3NGZmYTBhY2MwOGIyZGQy
YjU2ZjUuLmVkZmU5MDZlODRlODA1MDY3N2Q3NjY1YWU3ZTBhMTgzYmRhYTQyMjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCkBA
IC01NDEsMTAgKzU0MSwxMSBAQCBKU1ZhbHVlUmVmIEpTSVBDU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6c2VuZE1lc3NhZ2UoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZQogCiAgICAgYXV0byBb
ZGVzdGluYXRpb25JRCwgbWVzc2FnZU5hbWUsIHRpbWVvdXRdID0gKmluZm87CiAgICAgYXV0byYg
c3RyZWFtQ29ubmVjdGlvbiA9IGpzU3RyZWFtQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpOworICAg
IGF1dG8mIGNvbm5lY3Rpb24gPSBzdHJlYW1Db25uZWN0aW9uLmNvbm5lY3Rpb25Gb3JUZXN0aW5n
KCk7CiAKICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4obWVz
c2FnZU5hbWUsIGRlc3RpbmF0aW9uSUQpOwogICAgIGlmIChwcmVwYXJlVG9TZW5kT3V0T2ZTdHJl
YW1NZXNzYWdlKGNvbnRleHQsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cywgKmpzU3RyZWFtQ29u
bmVjdGlvbi0+bV9qc0lQQywgc3RyZWFtQ29ubmVjdGlvbiwgZW5jb2Rlci5nZXQoKSwgZGVzdGlu
YXRpb25JRCwgdGltZW91dCwgZXhjZXB0aW9uKSkKLSAgICAgICAgc3RyZWFtQ29ubmVjdGlvbi5t
X2Nvbm5lY3Rpb24uc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgeyB9KTsKKyAgICAgICAg
Y29ubmVjdGlvbi5zZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCB7IH0pOwogCiAgICAgcmV0
dXJuIHJldHVyblZhbHVlOwogfQpAQCAtNTY2LDEzICs1NjcsMTQgQEAgSlNWYWx1ZVJlZiBKU0lQ
Q1N0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmRTeW5jTWVzc2FnZShKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlMKIAogICAgIGF1dG8gW2Rlc3RpbmF0aW9uSUQsIG1lc3NhZ2VOYW1lLCB0aW1lb3V0
XSA9ICppbmZvOwogICAgIGF1dG8mIHN0cmVhbUNvbm5lY3Rpb24gPSBqc1N0cmVhbUNvbm5lY3Rp
b24tPmNvbm5lY3Rpb24oKTsKKyAgICBhdXRvJiBjb25uZWN0aW9uID0gc3RyZWFtQ29ubmVjdGlv
bi5jb25uZWN0aW9uRm9yVGVzdGluZygpOwogCiAgICAgSVBDOjpDb25uZWN0aW9uOjpTeW5jUmVx
dWVzdElEIHN5bmNSZXF1ZXN0SUQ7Ci0gICAgYXV0byBlbmNvZGVyID0gc3RyZWFtQ29ubmVjdGlv
bi5tX2Nvbm5lY3Rpb24uY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKG1lc3NhZ2VOYW1lLCBkZXN0
aW5hdGlvbklELCBzeW5jUmVxdWVzdElEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBjb25uZWN0aW9u
LmNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCwgc3lu
Y1JlcXVlc3RJRCk7CiAgICAgaWYgKCFwcmVwYXJlVG9TZW5kT3V0T2ZTdHJlYW1NZXNzYWdlKGNv
bnRleHQsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cywgKmpzU3RyZWFtQ29ubmVjdGlvbi0+bV9q
c0lQQywgc3RyZWFtQ29ubmVjdGlvbiwgZW5jb2Rlci5nZXQoKSwgZGVzdGluYXRpb25JRCwgdGlt
ZW91dCwgZXhjZXB0aW9uKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOwogCi0gICAgaWYgKGF1dG8gcmVwbHlEZWNvZGVyID0gc3RyZWFtQ29ubmVjdGlvbi5t
X2Nvbm5lY3Rpb24uc2VuZFN5bmNNZXNzYWdlKHN5bmNSZXF1ZXN0SUQsIFdURk1vdmUoZW5jb2Rl
ciksIHRpbWVvdXQsIHsgfSkpIHsKKyAgICBpZiAoYXV0byByZXBseURlY29kZXIgPSBjb25uZWN0
aW9uLnNlbmRTeW5jTWVzc2FnZShzeW5jUmVxdWVzdElELCBXVEZNb3ZlKGVuY29kZXIpLCB0aW1l
b3V0LCB7IH0pKSB7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKGds
b2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIGF1dG8qIGpzUmVzdWx0ID0ganNSZXN1bHRGcm9t
UmVwbHlEZWNvZGVyKGdsb2JhbE9iamVjdCwgbWVzc2FnZU5hbWUsICpyZXBseURlY29kZXIpOwog
ICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456353</attachid>
            <date>2022-04-01 05:38:35 -0700</date>
            <delta_ts>2022-04-07 05:34:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238516-20220401153833.patch</filename>
            <type>text/plain</type>
            <size>53448</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNmYmQ3NjY4YTcyOWMyZDNl
ZGJkZGRkNTk2Y2FkMDFlY2JiMTQ2NjQuLmY4NWUxNTU1NWQ0ZGNkYzFkZWEwMDA2NzRjYWQyNTFi
ZWQ1MTBlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAyIEBACisyMDIyLTA0LTAxICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCBzaG91bGQgaGF2ZSBkZWRpY2F0ZWQgSVBDOjpDb25uZWN0aW9uIGZvciBvdXQtb2Yt
c3RyZWFtIG1lc3NhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzg1MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVc2UgZGVkaWNhdGVkIElQQzo6Q29ubmVjdGlvbiBmb3IgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCBJUEMgc3RyZWFtIGNvbm5lY3Rpb24gaW5zdGVhZAorICAgICAgICBvZiB1c2luZyB0
aGUgV1AtR1BVUCBtYWluIGNvbm5lY3Rpb24uIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIgc3Rh
cnRzIGxpc3RlbnRpbmcgdG8KKyAgICAgICAgaXRzIG1lc3NhZ2VzIGluIHRoZSB3b3JrZXIgdGhy
ZWFkLiBBdCB0aGF0IHBvaW50LCBzb21lIG91dC1vZi1zdHJlYW0gbWVzc2FnZSBmb3IgdGhhdAor
ICAgICAgICBpZCBtaWdodCBhbHJlYWR5IGhhdmUgYmVlbiBkaXNwYXRjaGVkIHRvIG1haW4gdGhy
ZWFkLCBjYXVzaW5nIG1pc3NpbmcgbWVzc2FnZSBhbmQgYXNzZXJ0LgorCisgICAgICAgIEluc3Rl
YWQsIHVzZSBkZWRpY2F0ZWQgY29ubmVjdGlvbiBhbmQgcm91dGUgYWxsIHRoZSBtZXNzYWdlcyB0
byB0aGUgU3RyZWFtU2VydmVyQ29ubmVjdGlvbgorICAgICAgICBpcyBhICJtZXNzYWdlIHF1ZXVl
Ii4gVGhpcyB3YXkgd2hlbiBlYWNoIG91dC1vZi1zdHJlYW0gbWVzc2FnZSBtYXJrZXIgaXMgcHJv
Y2Vzc2VkLCB0aGUKKyAgICAgICAgbWVzc2FnZSB3aWxsIGJlLCBkaXJlY3RseSBvciBldmVudHVh
bGx5LCBmb3VuZCBmcm9tIHRoZSBtZXNzYWdlIHF1ZXVlLgorCisgICAgICAgIFJlbW92ZSB3b3Jr
YXJvdW5kczoKKyAgICAgICAgIC0gQWRkaW5nIGEgbGlzdGVuZXIgdG8gdGhlIG1haW4gV1AtR1BV
UCBjb25uZWN0aW9uIGZvciBhbGwgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlciBtZXNzYWdlcwor
ICAgICAgICAgICBhbmQgcm91dGluZyB0aGVtIHRvIHBhcnRpY3VsYXIgU3RyZWFtU2VydmVyQ29u
bmVjdGlvbi4gVGhpcyB3YXMgcHJvYmxlbWF0aWMgc2luY2UKKyAgICAgICAgICAgdGhlcmUgYXJl
IG1hbnkgUlJCIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24gaW5zdGFuY2VzLCBvbmUgcGVyIFBhZ2Us
IGJ1dCBvbmx5IG9uZSBXUC1HUFVQCisgICAgICAgICAgIGNvbm5lY3Rpb24uCisgICAgICAgICAt
IFJFTEVBU0VfTE9HIGluIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAgYWJvdXQgd2FybmluZyBmb3Ig
dGhlIGFib3ZlLiBUdXJuIHRoaXMgYmFjayBpbnRvIGFuCisgICAgICAgICAgIEFTU0VSVC4KKwor
ICAgICAgICBTaW5jZSBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24gYW5kIElQQzo6U3RyZWFt
U2VydmVyQ29ubmVjdGlvbiBhcmUgbGlrZSBJUEM6OkNvbm5lY3Rpb24sCisgICAgICAgIGFkZCBv
cGVuKCkgYW5kIGludmFsaWRhdGUoKSBjYWxscy4gVGhlc2UgaGF2ZSBzYW1lIGNvbnRyYWN0IGFz
IHdpdGggSVBDOjpDb25uZWN0aW9uOgorICAgICAgICBvcGVuKCkgc2hvdWxkIGJlIGNhbGxlZCBp
ZiBjb25uZWN0aW9uIGlzIHRvIGJlIHVzZWQsIGludmFsaWRhdGUoKSBtdXN0IGJlIGNhbGxlZCBp
ZiBvcGVuKCkgd2FzIGNhbGxlZC4KKyAgICAgICAgVGhlc2UgY2FsbHMgaGF2ZSBhbiBlZmZlY3Qg
Y3VycmVudGx5IG9ubHkgd2l0aCBkZWRpY2F0ZWQgY29ubmVjdGlvbnMsIGJ1dCB0aGVzZSBhcmUg
YWRkZWQgdG8gYWxsCisgICAgICAgIElQQzo6U3RyZWFtKkNvbm5lY3Rpb24gY2xpZW50cyBmb3Ig
Y29uc2lzdGVuY3kgYW5kIGZ1dHVyZSB1c2VzLgorCisgICAgICAgIENoYW5nZXMgc2VtYW50aWNz
IG9mIElQQzo6Q29ubmVjdGlvbiBzbGlnaHRseToKKyAgICAgICAgQmVmb3JlLCB0aGVyZSB3YXMg
bm8gdW50cnVzdGVkIGhvbGRlcnMgb2YgInNlcnZlciIgSVBDOjpDb25uZWN0aW9uLCBlLmcuIHRo
ZSBJUEM6OkNvbm5lY3Rpb24gaW5zdGFuY2VzCisgICAgICAgIHdlcmUgbmV2ZXIgaW5zdGFudGlh
dGVkIGJ5IFdQLgorICAgICAgICBBZnRlciwgdW50cnVzdGVkIFdQIGluc3RhbnRpYXRlcyB0aGVz
ZSBJUEMgc3RyZWFtIGRlZGljYXRlZCBjb25uZWN0aW9ucy4KKyAgICAgICAgVGhpcyBpcyBhY2Nv
dW50ZWQgaW4gdGhlIGNhc2Ugd2hlcmUgSVBDOjpDb25uZWN0aW9uIGVuc3VyZXMgdGhhdCBJUEM6
Ok1lc3NhZ2VOYW1lczo6SW5pdGlhbGl6ZUNvbm5lY3Rpb24KKyAgICAgICAgbWVzc2FnZSBpcyBu
b3QgYWN0ZWQgb24gdHdpY2UuCisKKyAgICAgICAgVGVzdGVkIGJ5IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvbGlua3MvbGlua3MtY3JlYXRlZC1ieS1hLWFu
ZC1hcmVhLWVsZW1lbnRzL3RhcmdldF9ibGFua19pbXBsaWNpdF9ub29wZW5lci5odG1sCisgICAg
ICAgICAgICAgICAgICAtLWNoaWxkLXByb2Nlc3Nlcz0xIC0tZXhwZXJpbWVudGFsLWZlYXR1cmU9
VXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZ0VuYWJsZWQ9dHJ1ZSAtLWl0ZXJhdGlvbnM9MTAw
IC0tZm9yY2UgLS1zaW11bGF0b3IKKworICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6c3RvcExpc3RlbmluZ0ZvcklQQyk6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN0YXJ0TGlzdGVuaW5nRm9ySVBDKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c3RvcExpc3RlbmluZ0ZvcklQ
Qyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VTZW5k
ZXJDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVHUFUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHUFU6OmluaXRpYWxpemUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHUFU6OnN0b3BMaXN0ZW5pbmdGb3JJUEMpOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcDoKKyAgICAgICAg
KElQQzo6TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6YWRkSW1wbCk6CisgICAgICAgIChJUEM6Ok1l
c3NhZ2VSZWNlaXZlUXVldWVNYXA6OnJlbW92ZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0
cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjpjcmVhdGVXaXRoRGVkaWNhdGVkQ29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0
cmVhbUNsaWVudENvbm5lY3Rpb246OlN0cmVhbUNsaWVudENvbm5lY3Rpb24pOgorICAgICAgICAo
SVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp+U3RyZWFtQ2xpZW50Q29ubmVjdGlvbik6Cisg
ICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246Om9wZW4pOgorICAgICAgICAoSVBD
OjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjppbnZhbGlkYXRlKToKKyAgICAgICAgKElQQzo6U3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvclRlc3RpbmcpOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OlN0cmVh
bUNsaWVudENvbm5lY3Rpb246OnNlbmQpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjpzZW5kU3luYyk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246
OndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbjo6dHJ5U2VuZFN5bmNTdHJlYW0pOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVy
Q29ubmVjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlv
bjo6Y3JlYXRlV2l0aERlZGljYXRlZENvbm5lY3Rpb24pOgorICAgICAgICAoSVBDOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uQmFzZTo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UpOgorICAgICAg
ICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6flN0cmVhbVNlcnZlckNvbm5lY3Rp
b25CYXNlKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6Om9wZW4p
OgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6aW52YWxpZGF0ZSk6
CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzdGFydFJlY2Vpdmlu
Z01lc3NhZ2VzSW1wbCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNl
OjpzdG9wUmVjZWl2aW5nTWVzc2FnZXNJbXBsKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFNoYXJlZC9JUENTdHJlYW1UZXN0ZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpJUENTdHJlYW1UZXN0ZXI6OmluaXRpYWxpemUpOgorICAg
ICAgICAoV2ViS2l0OjpJUENTdHJlYW1UZXN0ZXI6OnN0b3BMaXN0ZW5pbmdGb3JJUEMpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzY29ubmVjdEdwdVByb2Nlc3NJZk5lZWRlZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjplbnN1
cmVHUFVQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6ZGlzY29ubmVjdEdQVVByb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdQVVByb3h5OjpSZW1vdGVHUFVQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdQVVByb3h5OjphYmFuZG9uR1BVUHJvY2Vzcyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJUENU
ZXN0aW5nQVBJOjpKU0lQQ1N0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmRNZXNzYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6SlNJUENTdHJlYW1DbGllbnRDb25uZWN0aW9u
OjpzZW5kU3luY01lc3NhZ2UpOgorCiAyMDIyLTAzLTMxICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIGhldXJpc3RpYyB0byBpZGVudGlmeSBh
bmQgZXh0cmFjdCB0aGUgcHJvbWluZW50IHZpZGVvIGVsZW1lbnQgaW4gZWxlbWVudCBmdWxsc2Ny
ZWVuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAKaW5kZXggOGE1NjVkZjRmZjg0MzE1MmY2NTc1MjFhZTY3ZTMxOTZkMDA4
ZDRjOS4uMzMwYjAzOWNkZjg1NmY4OTIwY2NlYzlhZTM3OWZhOTdlODllNzU1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcApAQCAtNTMyLDEwICs1MzIsMTAgQEAgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkmIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmltYWdlRGVjb2RlckFWRlByb3h5KCkKIH0KICNlbmRp
ZgogCi12b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tl
bmQoUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIGNyZWF0aW9uUGFy
YW1ldGVycywgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtQnVmZmVyKQordm9p
ZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiBjcmVhdGlvblBhcmFtZXRlcnMs
IElQQzo6QXR0YWNobWVudCYmIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5l
Y3Rpb25CdWZmZXImJiBzdHJlYW1CdWZmZXIpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAuZW5zdXJlKGNyZWF0aW9uUGFyYW1ldGVycy5pZGVudGlm
aWVyLCBbJl0oKSB7Ci0gICAgICAgIHJldHVybiBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNl
aXZlUXVldWUgeyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUo
Y3JlYXRpb25QYXJhbWV0ZXJzKSwgV1RGTW92ZShzdHJlYW1CdWZmZXIpKSB9OworICAgICAgICBy
ZXR1cm4gSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlIHsgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGNyZWF0aW9uUGFyYW1ldGVycyksIFdU
Rk1vdmUoY29ubmVjdGlvbklkZW50aWZpZXIpLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlcikpIH07CiAg
ICAgfSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCmluZGV4IGI3MmMwYjM3MzYyYjczOWRiZmEzZWQ5YTBjNGEwMWUzYjIxYjFl
OTkuLjAzNDRlM2NjMGM0ZjgxMzJlN2RmMzk1NTUwNzE1Mzk1ODYzZTYwYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApA
QCAtMjE3LDcgKzIxNyw3IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFn
ZXImIG1lZGlhUmVjb3JkZXJNYW5hZ2VyKCk7CiAjZW5kaWYKIAotICAgIHZvaWQgY3JlYXRlUmVu
ZGVyaW5nQmFja2VuZChSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYs
IElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKKyAgICB2b2lkIGNyZWF0ZVJlbmRlcmlu
Z0JhY2tlbmQoUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmLCBJUEM6
OkF0dGFjaG1lbnQmJiwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYpOwogICAgIHZvaWQg
cmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogCiAj
aWYgRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAxYjgzMmEz
MTgzZjgyOTRlYzA1N2NjYTljNzZmYWJhMDAyNGU1NGJiLi5lYTNjMTQ3ZWM0MTljM2Y0OTU1NjMx
Y2UyMDUzZGUyMGQ2YjY1YmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjMs
NyArMjMsNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogbWVzc2FnZXMgLT4gR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyBXYW50c0Rpc3BhdGNoTWVzc2FnZSB7Ci0gICAgdm9pZCBDcmVh
dGVSZW5kZXJpbmdCYWNrZW5kKHN0cnVjdCBXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRD
cmVhdGlvblBhcmFtZXRlcnMgY3JlYXRpb25QYXJhbWV0ZXJzLCBJUEM6OlN0cmVhbUNvbm5lY3Rp
b25CdWZmZXIgc3RyZWFtQnVmZmVyKQorICAgIHZvaWQgQ3JlYXRlUmVuZGVyaW5nQmFja2VuZChz
dHJ1Y3QgV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzIGNy
ZWF0aW9uUGFyYW1ldGVycywgSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyLCBJ
UEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgc3RyZWFtQnVmZmVyKQogICAgIHZvaWQgUmVsZWFz
ZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgdm9pZCBDcmVh
dGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyIHN0cmVhbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCmluZGV4IDZkYjY0NDBjZjk2ZDky
YWMyZDdmNWJlMWQ1MjIzYWUwNWEwMTcxYjQuLmYwMjQyYWY3YTQ1MDBhNTA0MjZjM2IyMjU1NDE0
MjM2NjgzNmM3MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcApAQCAtODYsNiArODYsNyBA
QCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKCkKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmluaXRpYWxpemUoR3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKIHsKICAgICBhc3NlcnRJc01haW5SdW5Mb29wKCk7Cisg
ICAgbV9zdHJlYW1Db25uZWN0aW9uLT5vcGVuKCk7CiAgICAgcmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xTdHJlYW1Xb3JrUXVldWUoKS5kaXNwYXRjaChbYXR0cmlidXRlcyA9IFdURk1vdmUoYXR0cmli
dXRlcyksIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSgpIG11dGFibGUgewogICAgICAg
ICBwcm90ZWN0ZWRUaGlzLT53b3JrUXVldWVJbml0aWFsaXplKFdURk1vdmUoYXR0cmlidXRlcykp
OwogICAgIH0pOwpAQCAtOTUsNiArOTYsNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Ojppbml0aWFsaXplKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZQogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6c3RvcExpc3RlbmluZ0ZvcklQQyhSZWY8UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w+JiYgcmVmRnJvbUNvbm5lY3Rpb24pCiB7CiAgICAgYXNzZXJ0SXNN
YWluUnVuTG9vcCgpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOwogICAg
IG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICByZW1vdGVHcmFwaGljc0NvbnRleHRH
TFN0cmVhbVdvcmtRdWV1ZSgpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShyZWZG
cm9tQ29ubmVjdGlvbildKCkgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT53b3JrUXVldWVVbmlu
aXRpYWxpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCAxZGM4MmZkMTNhMjdlNjNl
MmE0YmU3NTRlNzFlMjNlMDVhYzk5ZTAxLi4zZGI4YTQwMzAyY2U0YzY0MGQxMDdkY2RlZjdkNTUx
NTdlODEzNjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC03NiwxNiArNzYsMTYgQEAK
IG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIGNyZWF0aW9uUGFyYW1ldGVycywgSVBD
OjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtQnVmZmVyKQorUmVmPFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZShHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYgY3JlYXRpb25QYXJhbWV0ZXJzLCBJUEM6OkF0dGFj
aG1lbnQmJiBjb25uZWN0aW9uSWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVy
JiYgc3RyZWFtQnVmZmVyKQogewotICAgIGF1dG8gaW5zdGFuY2UgPSBhZG9wdFJlZigqbmV3IFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgV1RGTW92ZShj
cmVhdGlvblBhcmFtZXRlcnMpLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlcikpKTsKKyAgICBhdXRvIGlu
c3RhbmNlID0gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKGdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MsIFdURk1vdmUoY3JlYXRpb25QYXJhbWV0ZXJzKSwgV1RGTW92ZShjb25u
ZWN0aW9uSWRlbnRpZmllciksIFdURk1vdmUoc3RyZWFtQnVmZmVyKSkpOwogICAgIGluc3RhbmNl
LT5zdGFydExpc3RlbmluZ0ZvcklQQygpOwogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAotUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYgY3JlYXRpb25QYXJhbWV0ZXJzLCBJUEM6OlN0cmVh
bUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW1CdWZmZXIpCitSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFt
ZXRlcnMmJiBjcmVhdGlvblBhcmFtZXRlcnMsIElQQzo6QXR0YWNobWVudCYmIGNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW1CdWZmZXIpCiAg
ICAgOiBtX3dvcmtRdWV1ZShJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OmNyZWF0ZSgi
UmVtb3RlUmVuZGVyaW5nQmFja2VuZCB3b3JrIHF1ZXVlIikpCi0gICAgLCBtX3N0cmVhbUNvbm5l
Y3Rpb24oSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGUoZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jb25uZWN0aW9uKCksIFdURk1vdmUoc3RyZWFtQnVmZmVyKSwgbV93b3JrUXVl
dWUuZ2V0KCkpKQorICAgICwgbV9zdHJlYW1Db25uZWN0aW9uKElQQzo6U3RyZWFtU2VydmVyQ29u
bmVjdGlvbjo6Y3JlYXRlV2l0aERlZGljYXRlZENvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9u
SWRlbnRpZmllciksIFdURk1vdmUoc3RyZWFtQnVmZmVyKSwgbV93b3JrUXVldWUuZ2V0KCkpKQog
ICAgICwgbV9yZW1vdGVSZXNvdXJjZUNhY2hlKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mud2Vi
UHJvY2Vzc0lkZW50aWZpZXIoKSkKICAgICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyhn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQogICAgICwgbV9yZXNvdXJjZU93bmVyKGdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3Mud2ViUHJvY2Vzc0lkZW50aXR5KCkpCkBAIC0xMDMsMTcgKzEwMywx
NSBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN0YXJ0TGlzdGVuaW5nRm9ySVBDKCkK
ICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcmVtb3RlRGlzcGxheUxpc3RzTG9jayB9OwogICAg
ICAgICBtX2NhblJlZ2lzdGVyUmVtb3RlRGlzcGxheUxpc3RzID0gdHJ1ZTsKICAgICB9Ci0KICAg
ICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoKnRoaXMsIE1lc3Nh
Z2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50NjQoKSk7Ci0gICAgLy8gUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlciBtZXNzYWdlcyBkZXBlbmQgb24gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCwg
YmVjYXVzZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIGNyZWF0ZXMgUmVtb3RlRGlzcGxheUxpc3RS
ZWNvcmRlciBhbmQKLSAgICAvLyBtYWtlcyBhIHJlY2VpdmUgcXVldWUgZm9yIGl0LiBJbiBvcmRl
ciB0byBndWFyYW50ZWUgY29ycmVjdCBvcmRlcmluZywgZW5zdXJlIHRoYXQgYWxsIFJlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXIgbWVzc2FnZXMgYXJlIHByb2Nlc3NlZCBpbgotICAgIC8vIHRoZSBz
YW1lIHNlcXVlbmNlIGFzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgbWVzc2FnZXMuCi0gICAgbV9z
dHJlYW1Db25uZWN0aW9uLT5zdGFydFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworICAgIG1fc3RyZWFt
Q29ubmVjdGlvbi0+b3BlbigpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN0
b3BMaXN0ZW5pbmdGb3JJUEMoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Cisg
ICAgbV9zdHJlYW1Db25uZWN0aW9uLT5pbnZhbGlkYXRlKCk7CisgICAgbV9zdHJlYW1Db25uZWN0
aW9uLT5zdG9wUmVjZWl2aW5nTWVzc2FnZXMoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50
b1VJbnQ2NCgpKTsKIAogICAgIC8vIFRoaXMgaXRlbSBpcyBkaXNwYXRjaGVkIHRvIHRoZSBXb3Jr
UXVldWUgYmVmb3JlIGNhbGxpbmcgc3RvcEFuZFdhaXRGb3JDb21wbGV0aW9uKCkgc3VjaCB0aGF0
IGl0IHdpbGwgcHJvY2VzcyBpdCBsYXN0LCBhZnRlciBhbnkgZXhpc3Rpbmcgd29yay4KICAgICBt
X3dvcmtRdWV1ZS0+ZGlzcGF0Y2goWyZdIHsKQEAgLTEyNCw4ICsxMjIsNiBAQCB2b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoKQogICAgIH0pOwogICAgIG1f
d29ya1F1ZXVlLT5zdG9wQW5kV2FpdEZvckNvbXBsZXRpb24oKTsKIAotICAgIG1fc3RyZWFtQ29u
bmVjdGlvbi0+c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIudG9VSW50NjQoKSk7Ci0gICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdG9wUmVjZWl2aW5nTWVz
c2FnZXMoTWVzc2FnZXM6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSk7CiAKICAgICB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3JlbW90ZURpc3Bs
YXlMaXN0c0xvY2sgfTsKQEAgLTE0Miw3ICsxMzgsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQogCiBJUEM6OkNvbm5lY3Rp
b24qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gJm1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlv
bigpOworICAgIHJldHVybiAmbV9zdHJlYW1Db25uZWN0aW9uLT5jb25uZWN0aW9uKCk7CiB9CiAK
IHVpbnQ2NF90IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlv
bklEKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IDJjMjkwOTVkYTg1YzI1YzNhNWVk
NWU3ZjFlZTU2ODllZmY2NzFhMjguLjI0NWQ3ZmEwODkzODc0OWNmYjRmN2Y0YjE4MTgzN2VlMWQz
YmQ4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtNzUsNyArNzUsNyBAQCBlbnVtIGNsYXNz
IFN3YXBCdWZmZXJzRGlzcGxheVJlcXVpcmVtZW50IDogdWludDhfdDsKIAogY2xhc3MgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZCA6IHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBD
OjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZD4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYsIElQQzo6U3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlciYmKTsKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IGNy
ZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENy
ZWF0aW9uUGFyYW1ldGVycyYmLCBJUEM6OkF0dGFjaG1lbnQmJiwgSVBDOjpTdHJlYW1Db25uZWN0
aW9uQnVmZmVyJiYpOwogICAgIHZpcnR1YWwgflJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoKTsKICAg
ICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoKTsKIApAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBwZXJmb3JtV2l0aE1lZGlhUGxheWVyT25NYWluVGhyZWFkKFdlYkNvcmU6Ok1l
ZGlhUGxheWVySWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpNZWRpYVBsYXllciYp
PiYmKTsKIAogcHJpdmF0ZToKLSAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJz
JiYsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKKyAgICBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
Q3JlYXRpb25QYXJhbWV0ZXJzJiYsIElQQzo6QXR0YWNobWVudCYmLCBJUEM6OlN0cmVhbUNvbm5l
Y3Rpb25CdWZmZXImJik7CiAgICAgdm9pZCBzdGFydExpc3RlbmluZ0ZvcklQQygpOwogCiAgICAg
c3RkOjpvcHRpb25hbDxTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4gdXBkYXRlU2hhcmVkTWVtb3J5
Rm9yR2V0UGl4ZWxCdWZmZXJIZWxwZXIoc2l6ZV90IGJ5dGVDb3VudCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5jcHAKaW5k
ZXggZGY1MjM4NGUzOWIxNDQ2NzhhNWQyNjUyZTdkNmRlYzU1OTYwZDY4MC4uMWIwNzdiODk0YWJh
ZDE2ZGY0MDVkZmRhZWU2ZmVmZmRmMDZlMGUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmNwcApAQCAtNjAsNiArNjAs
NyBAQCBSZW1vdGVHUFU6On5SZW1vdGVHUFUoKSA9IGRlZmF1bHQ7CiB2b2lkIFJlbW90ZUdQVTo6
aW5pdGlhbGl6ZSgpCiB7CiAgICAgYXNzZXJ0SXNNYWluUnVuTG9vcCgpOworICAgIG1fc3RyZWFt
Q29ubmVjdGlvbi0+b3BlbigpOwogICAgIHdvcmtRdWV1ZSgpLmRpc3BhdGNoKFtwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfV0oKSBtdXRhYmxlIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+
d29ya1F1ZXVlSW5pdGlhbGl6ZSgpOwogICAgIH0pOwpAQCAtNjksNiArNzAsNyBAQCB2b2lkIFJl
bW90ZUdQVTo6aW5pdGlhbGl6ZSgpCiB2b2lkIFJlbW90ZUdQVTo6c3RvcExpc3RlbmluZ0ZvcklQ
QyhSZWY8UmVtb3RlR1BVPiYmIHJlZkZyb21Db25uZWN0aW9uKQogewogICAgIGFzc2VydElzTWFp
blJ1bkxvb3AoKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKICAgICBt
X3N0cmVhbUNvbm5lY3Rpb24tPnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhNZXNzYWdlczo6UmVtb3Rl
R1BVOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAg
ICB3b3JrUXVldWUoKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocmVmRnJvbUNv
bm5lY3Rpb24pXSgpIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+d29ya1F1ZXVlVW5pbml0aWFs
aXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVj
ZWl2ZVF1ZXVlTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNl
aXZlUXVldWVNYXAuY3BwCmluZGV4IGRlMmQ0MTZkNDk5M2QxZGY5ODk1NTI4ZjE5NmViNjBmMWY1
MTVjNGIuLmI3M2Y4YzJiOGIwYWI5NmRjMjc0N2U5M2NiMThjOGFkYjQ5YmU2YjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAu
Y3BwCkBAIC0zOSwxMCArMzksNyBAQCB2b2lkIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OmFkZElt
cGwoU3RvcmVUeXBlJiYgcXVldWUsIFJlY2VpdmVyTWF0Y2hlciBtYXRjaGVyKQogICAgIHVpbnQ4
X3QgcmVjZWl2ZXJOYW1lID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oKm1hdGNoZXIucmVjZWl2ZXJO
YW1lKTsKICAgICBpZiAoIW1hdGNoZXIuZGVzdGluYXRpb25JRCkgewogICAgICAgICBhdXRvIHJl
c3VsdCA9IG1fYW55SURRdWV1ZXMuYWRkKHJlY2VpdmVyTmFtZSwgV1RGTW92ZShxdWV1ZSkpOwot
ICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgYmUgYW4gYXNzZXJ0aW9uLiBTZWUgd2Via2l0Lm9yZy9iLzIzNzY3NCBhbmQg
d2Via2l0Lm9yZy9iLzIzODM5MS4KLSAgICAgICAgICAgIEFMV0FZU19MT0dfV0lUSF9TVFJFQU0o
c3RyZWFtIDw8ICJNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwOjphZGRJbXBsIC0gYWRkaW5nIGR1cGxp
Y2F0ZSBhbnkgaWQgcmVjZWl2ZXIgIiA8PCBzdGF0aWNfY2FzdDx1aW50OF90PihyZWNlaXZlck5h
bWUpKTsKLSAgICAgICAgfQorICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0Lmlz
TmV3RW50cnkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGF1dG8gcmVzdWx0ID0gbV9x
dWV1ZXMuYWRkKHN0ZDo6bWFrZV9wYWlyKHJlY2VpdmVyTmFtZSwgKm1hdGNoZXIuZGVzdGluYXRp
b25JRCksIFdURk1vdmUocXVldWUpKTsKQEAgLTU5LDEwICs1Niw3IEBAIHZvaWQgTWVzc2FnZVJl
Y2VpdmVRdWV1ZU1hcDo6cmVtb3ZlKFJlY2VpdmVyTWF0Y2hlciBtYXRjaGVyKQogICAgIHVpbnQ4
X3QgcmVjZWl2ZXJOYW1lID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oKm1hdGNoZXIucmVjZWl2ZXJO
YW1lKTsKICAgICBpZiAoIW1hdGNoZXIuZGVzdGluYXRpb25JRCkgewogICAgICAgICBhdXRvIHJl
c3VsdCA9IG1fYW55SURRdWV1ZXMucmVtb3ZlKHJlY2VpdmVyTmFtZSk7Ci0gICAgICAgIGlmIChy
ZXN1bHQpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhbiBhc3NlcnRp
b24uIFNlZSB3ZWJraXQub3JnL2IvMjM3Njc0IGFuZCB3ZWJraXQub3JnL2IvMjM4MzkxLgotICAg
ICAgICAgICAgQUxXQVlTX0xPR19XSVRIX1NUUkVBTShzdHJlYW0gPDwgIk1lc3NhZ2VSZWNlaXZl
UXVldWVNYXA6OmFkZEltcGwgLSBhZGRpbmcgZHVwbGljYXRlIGFueSBpZCByZWNlaXZlciAiIDw8
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJlY2VpdmVyTmFtZSkpOwotICAgICAgICB9CisgICAgICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIGF1dG8gcmVzdWx0ID0gbV9xdWV1ZXMucmVtb3ZlKHN0ZDo6bWFrZV9wYWlyKHJlY2VpdmVy
TmFtZSwgKm1hdGNoZXIuZGVzdGluYXRpb25JRCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcAppbmRleCBiMTAxZTAyZmRi
NWU1YTRhNTY4NjFkYzdlZWJmMWJhMmExY2UyYjk5Li42OTllMzEyZDM0ZDQzNTQ2NGRjYzM1N2Fl
OGI1ZjM4N2Y4ZTQzMDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
dHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMjgsOCArMjgsNDEgQEAKIAogbmFtZXNw
YWNlIElQQyB7CiAKLVN0cmVhbUNsaWVudENvbm5lY3Rpb246OlN0cmVhbUNsaWVudENvbm5lY3Rp
b24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgc2l6ZV90IHNpemUpCi0gICAgOiBtX2Nvbm5lY3Rp
b24oY29ubmVjdGlvbikKK2NsYXNzIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OkRlZGljYXRlZENv
bm5lY3Rpb25DbGllbnQgZmluYWwgOiBwdWJsaWMgQ29ubmVjdGlvbjo6Q2xpZW50IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEZWRpY2F0
ZWRDb25uZWN0aW9uQ2xpZW50KTsKK3B1YmxpYzoKKyAgICBEZWRpY2F0ZWRDb25uZWN0aW9uQ2xp
ZW50KE1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgICAgIDogbV9yZWNlaXZlcihyZWNl
aXZlcikKKyAgICB7CisgICAgfQorICAgIC8vIENvbm5lY3Rpb246OkNsaWVudC4KKyAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29k
ZXIpIGZpbmFsIHsgbV9yZWNlaXZlci5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyKTsgfQorICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIERlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxFbmNvZGVyPiYgcmVwbHlFbmNvZGVy
KSBmaW5hbCB7IHJldHVybiBtX3JlY2VpdmVyLmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOyB9CisgICAgdm9pZCBkaWRDbG9zZShDb25uZWN0
aW9uJikgZmluYWwgeyB9IC8vIENsaWVudCBpcyBleHBlY3RlZCB0byBsaXN0ZW4gdG8gQ29ubmVj
dGlvbjo6ZGlkQ2xvc2UoKSBmcm9tIHRoZSBjb25uZWN0aW9uIGl0IHNlbnQgdG8gdGhlIGRlZGlj
YXRlZCBjb25uZWN0aW9uIHRvLgorICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENv
bm5lY3Rpb24mLCBNZXNzYWdlTmFtZSkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfSAv
LyBUaGUgc2VuZGVyIGlzIGV4cGVjdGVkIHRvIGJlIHRydXN0ZWQsIHNvIGFsbCBpbnZhbGlkIG1l
c3NhZ2VzIGFyZSBwcm9ncmFtbWluZyBlcnJvcnMuCitwcml2YXRlOgorICAgIE1lc3NhZ2VSZWNl
aXZlciYgbV9yZWNlaXZlcjsKK307CisKK1N0cmVhbUNsaWVudENvbm5lY3Rpb246OlN0cmVhbUNv
bm5lY3Rpb25XaXRoRGVkaWNhdGVkQ29ubmVjdGlvbiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpj
cmVhdGVXaXRoRGVkaWNhdGVkQ29ubmVjdGlvbihNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyLCBz
aXplX3QgYnVmZmVyU2l6ZSkKK3sKKyAgICBhdXRvIGNvbm5lY3Rpb25JZGVudGlmaWVycyA9IENv
bm5lY3Rpb246OmNyZWF0ZUNvbm5lY3Rpb25JZGVudGlmaWVyUGFpcigpOworICAgIC8vIENyZWF0
ZSBTdHJlYW1DbGllbnRDb25uZWN0aW9uIHdpdGggInNlcnZlciIgdHlwZSBDb25uZWN0aW9uLiBU
aGUgY2FsbGVyIHdpbGwgc2VuZCB0aGUgImNsaWVudCIgdHlwZSBjb25uZWN0aW9uIGlkZW50aWZp
ZXIgdmlhCisgICAgLy8gSVBDIHRvIHRoZSBvdGhlciBzaWRlLCB3aGVyZSBTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uIHdpbGwgYmUgY3JlYXRlZCB3aXRoICJjbGllbnQiIHR5cGUgQ29ubmVjdGlvbi4K
KyAgICAvLyBGb3IgQ29ubmVjdGlvbiwgInNlcnZlciIgbWVhbnMgdGhlIGNvbm5lY3Rpb24gd2hp
Y2ggd2FzIGNyZWF0ZWQgZmlyc3QsIHRoZSBjb25uZWN0aW9uIHdoaWNoIGlzIG5vdCBzZW50IHRo
cm91Z2ggSVBDIHRvIG90aGVyIHBhcnR5LgorICAgIC8vIEZvciBDb25uZWN0aW9uLCAiY2xpZW50
IiBtZWFucyB0aGUgY29ubmVjdGlvbiB3aGljaCB3YXMgZXN0YWJsaXNoZWQgYnkgcmVjZWl2aW5n
IGl0IHRocm91Z2ggSVBDIGFuZCBjcmVhdGluZyBJUEM6OkNvbm5lY3Rpb24gb3V0IGZyb20gdGhl
IGlkZW50aWZpZXIuCisgICAgLy8gRm9yIFN0cmVhbUNsaWVudENvbm5lY3Rpb24sICJDbGllbnQi
IG1lYW5zIHRoZSBwYXJ0eSB0aGF0IG1vc3RseSBkb2VzIHNlbmRpbmcsIGUuZy4gdW50cnVzdGVk
IHBhcnR5LgorICAgIC8vIEZvciBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLCAiU2VydmVyIiBtZWFu
cyB0aGUgcGFydHkgdGhhdCBtb3N0bHkgZG9lcyByZWNlaXZpbmcsIGUuZy4gdGhlIHRydXN0ZWQg
cGFydHkgd2hpY2ggaG9sZHMgdGhlIGRlc3RpbmF0aW9uIG9iamVjdCB0byBjb21tdW5pY2F0ZSB3
aXRoLgorICAgIGF1dG8gZGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudCA9IG1ha2VVbmlxdWU8RGVk
aWNhdGVkQ29ubmVjdGlvbkNsaWVudD4ocmVjZWl2ZXIpOworICAgIGF1dG8gZGVkaWNhdGVkQ29u
bmVjdGlvbiA9IENvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbklk
ZW50aWZpZXJzLT5zZXJ2ZXIsICpkZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50KTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8U3RyZWFtQ2xpZW50Q29ubmVjdGlvbj4gc3RyZWFtQ29ubmVjdGlvbiB7IG5l
dyBTdHJlYW1DbGllbnRDb25uZWN0aW9uKFdURk1vdmUoZGVkaWNhdGVkQ29ubmVjdGlvbiksIGJ1
ZmZlclNpemUsIFdURk1vdmUoZGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudCkpIH07CisgICAgcmV0
dXJuIHsgV1RGTW92ZShzdHJlYW1Db25uZWN0aW9uKSwgY29ubmVjdGlvbklkZW50aWZpZXJzLT5j
bGllbnQgfTsKK30KKworU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3RyZWFtQ2xpZW50Q29ubmVj
dGlvbihSZWY8Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBzaXplX3Qgc2l6ZSwgc3RkOjp1bmlx
dWVfcHRyPERlZGljYXRlZENvbm5lY3Rpb25DbGllbnQ+JiYgZGVkaWNhdGVkQ29ubmVjdGlvbkNs
aWVudCkKKyAgICA6IG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQorICAgICwgbV9k
ZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50KFdURk1vdmUoZGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVu
dCkpCiAgICAgLCBtX2J1ZmZlcihzaXplKQogewogICAgIC8vIFJlYWQgc3RhcnRzIGZyb20gMCB3
aXRoIGxpbWl0IG9mIDAgYW5kIHJlYWRlciBzbGVlcGluZy4KQEAgLTM4LDYgKzcxLDI4IEBAIFN0
cmVhbUNsaWVudENvbm5lY3Rpb246OlN0cmVhbUNsaWVudENvbm5lY3Rpb24oQ29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgc2l6ZV90IHNpCiAgICAgc2hhcmVkQ2xpZW50TGltaXQoKS5zdG9yZShzdGF0
aWNfY2FzdDxDbGllbnRMaW1pdD4oMCksIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwogfQog
CitTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKENvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIHNpemVfdCBidWZmZXJTaXplKQorICAgIDogU3RyZWFtQ2xpZW50Q29u
bmVjdGlvbihSZWYgeyBjb25uZWN0aW9uIH0sIGJ1ZmZlclNpemUsIHsgfSkKK3sKK30KKworU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbjo6flN0cmVhbUNsaWVudENvbm5lY3Rpb24oKQoreworICAgIEFT
U0VSVCghbV9kZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50IHx8ICFtX2Nvbm5lY3Rpb24tPmlzVmFs
aWQoKSk7Cit9CisKK3ZvaWQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6b3BlbigpCit7CisgICAg
aWYgKG1fZGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudCkKKyAgICAgICAgbV9jb25uZWN0aW9uLT5v
cGVuKCk7Cit9CisKK3ZvaWQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6aW52YWxpZGF0ZSgpCit7
CisgICAgaWYgKG1fZGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudCkKKyAgICAgICAgbV9jb25uZWN0
aW9uLT5pbnZhbGlkYXRlKCk7Cit9CisKIHZvaWQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2V0
V2FrZVVwU2VtYXBob3JlKElQQzo6U2VtYXBob3JlJiYgc2VtYXBob3JlKQogewogICAgIG1fd2Fr
ZVVwU2VtYXBob3JlID0gV1RGTW92ZShzZW1hcGhvcmUpOwpAQCAtODMsNCArMTM4LDkgQEAgU3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlciYgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6YnVmZmVyRm9yVGVz
dGluZygpCiAgICAgcmV0dXJuIG1fYnVmZmVyOwogfQogCitDb25uZWN0aW9uJiBTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9yVGVzdGluZygpCit7CisgICAgcmV0dXJuIG1fY29u
bmVjdGlvbi5nZXQoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IDJiNDdlMjVlY2JjMTE4MjQ5MWQyZGZk
ZTcyODBkN2JjMzA1MTFlNzQuLjRlNDIwZDRmZjYxNWI1NzBlZTBiNTIyNjkyODliMzQ2ODAxZjc3
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRD
b25uZWN0aW9uLmgKQEAgLTU3LDggKzU3LDMxIEBAIGNsYXNzIFN0cmVhbUNsaWVudENvbm5lY3Rp
b24gZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFN0cmVhbUNsaWVudENvbm5lY3Rpb24pOwogcHVibGljOgorICAgIC8vIENyZWF0
ZXMgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiB3aGVyZSB0aGUgb3V0IG9mIHN0cmVhbSBtZXNzYWdl
cyBhbmQgc2VydmVyIHJlcGxpZXMgYXJlCisgICAgLy8gc2VudCB0aHJvdWdoIHRoZSBwYXNzZWQg
SVBDOjpDb25uZWN0aW9uLiBUaGUgbWVzc2FnZXMgZnJvbSB0aGUgc2VydmVyIGFyZSBkZWxpdmVy
ZWQgdG8KKyAgICAvLyB0aGUgY2FsbGVyIHRocm91Z2ggdGhlIHBhc3NlZCBJUEM6OkNvbm5lY3Rp
b24uCisgICAgLy8gTm90ZTogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdXNlZCBvbmx5IGluIGNh
c2VzIHdoZXJlIHRoZQorICAgIC8vIHN0cmVhbSBzZXJ2ZXIgc3RhcnRzIGxpc3RlbmluZyB0byBt
ZXNzYWdlcyB3aXRoIG5ldyBpZGVudGlmaWVycyBvbiB0aGUgc2FtZSB0aHJlYWQgYXMKKyAgICAv
LyBpbiB3aGljaCB0aGUgc2VydmVyIElQQzo6Q29ubmVjdGlvbiBkaXNwYXRjaCBtZXNzYWdlcy4g
QXQgdGhlIHRpbWUgb2Ygd3JpdGluZywKKyAgICAvLyBJUEM6OkNvbm5lY3Rpb24gZGlzcGF0Y2hl
cyBtZXNzYWdlcyBvbmx5IGluIG1haW4gdGhyZWFkLgogICAgIFN0cmVhbUNsaWVudENvbm5lY3Rp
b24oQ29ubmVjdGlvbiYsIHNpemVfdCBidWZmZXJTaXplKTsKIAorICAgIHN0cnVjdCBTdHJlYW1D
b25uZWN0aW9uV2l0aERlZGljYXRlZENvbm5lY3Rpb24geworICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8U3RyZWFtQ2xpZW50Q29ubmVjdGlvbj4gc3RyZWFtQ29ubmVjdGlvbjsKKyAgICAgICAgQXR0
YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllcjsKKyAgICAgICAgLy8gRklYTUU6IE9uY2UgSVBD
IGNhbiB0cmVhdCBoYW5kbGVzIGFzIGZpcnN0IGNsYXNzIG9iamVjdHMsIGFkZCBzdHJlYW0gYnVm
ZmVyIGFzCisgICAgICAgIC8vIGEgaGFuZGxlIGhlcmUuCisgICAgfTsKKworICAgIC8vIENyZWF0
ZXMgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiB3aGVyZSB0aGUgb3V0IG9mIHN0cmVhbSBtZXNzYWdl
cyBhbmQgc2VydmVyIHJlcGxpZXMgYXJlCisgICAgLy8gc2VudCB0aHJvdWdoIGEgZGVkaWRjYXRl
ZCwgbmV3IElQQzo6Q29ubmVjdGlvbi4gVGhlIG1lc3NhZ2VzIGZyb20gdGhlIHNlcnZlciBhcmUg
ZGVsaXZlcmVkIHRvCisgICAgLy8gdGhlIGNhbGxlciB0aHJvdWdoIHRoZSBwYXNzZWQgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIuCisgICAgLy8gVGhlIGNhbGxlciBzaG91bGQgc2VuZCBTdHJlYW1Db25u
ZWN0aW9uV2l0aERlZGljYXRlZENvbm5lY3Rpb246OmNvbm5lY3Rpb25JZGVudGlmaWVyIGFuZAor
ICAgIC8vIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnN0cmVhbUJ1ZmZlcigpIHRvIHRoZSBzZXJ2
ZXIgdmlhIGFuIGV4aXN0aW5nIElQQzo6Q29ubmVjdGlvbi4KKyAgICBzdGF0aWMgU3RyZWFtQ29u
bmVjdGlvbldpdGhEZWRpY2F0ZWRDb25uZWN0aW9uIGNyZWF0ZVdpdGhEZWRpY2F0ZWRDb25uZWN0
aW9uKE1lc3NhZ2VSZWNlaXZlciYsIHNpemVfdCBidWZmZXJTaXplKTsKKworICAgIH5TdHJlYW1D
bGllbnRDb25uZWN0aW9uKCk7CisKICAgICBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiBzdHJlYW1C
dWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQogICAgIHZvaWQgc2V0V2FrZVVwU2VtYXBob3Jl
KElQQzo6U2VtYXBob3JlJiYpOwogICAgIGJvb2wgaGFzV2FrZVVwU2VtYXBob3JlKCkgY29uc3Qg
eyByZXR1cm4gbV93YWtlVXBTZW1hcGhvcmUuaGFzX3ZhbHVlKCk7IH0KQEAgLTcwLDYgKzkzLDkg
QEAgcHVibGljOgogICAgIH0KICAgICB2b2lkIHNlbmREZWZlcnJlZFdha2VVcE1lc3NhZ2VJZk5l
ZWRlZCgpOwogCisgICAgdm9pZCBvcGVuKCk7CisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBib29sIHNlbmQoVCYmIG1lc3NhZ2Us
IE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgVGltZW91dCk7CiAKICAgICB1c2lu
ZyBTZW5kU3luY1Jlc3VsdCA9IENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0OwpAQCAtODAsOSAr
MTA2LDExIEBAIHB1YmxpYzoKICAgICBib29sIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5
KE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgVGltZW91dCwgT3B0aW9uU2V0PFdh
aXRGb3JPcHRpb24+ID0geyB9KTsKIAogICAgIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImIGJ1ZmZl
ckZvclRlc3RpbmcoKTsKKyAgICBDb25uZWN0aW9uJiBjb25uZWN0aW9uRm9yVGVzdGluZygpOwog
CiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OkpTSVBD
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjsKKyAgICBjbGFzcyBEZWRpY2F0ZWRDb25uZWN0aW9uQ2xp
ZW50OworICAgIFN0cmVhbUNsaWVudENvbm5lY3Rpb24oUmVmPENvbm5lY3Rpb24+JiYsIHNpemVf
dCBidWZmZXJTaXplLCBzdGQ6OnVuaXF1ZV9wdHI8RGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudD4m
Jik7CiAKICAgICBzdHJ1Y3QgU3BhbiB7CiAgICAgICAgIHVpbnQ4X3QqIGRhdGE7CkBAIC0xMjIs
MTQgKzE1MCwxNiBAQCBwcml2YXRlOgogICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVy
biBtX2J1ZmZlci5kYXRhKCk7IH0KICAgICBzaXplX3QgZGF0YVNpemUoKSBjb25zdCB7IHJldHVy
biBtX2J1ZmZlci5kYXRhU2l6ZSgpOyB9CiAKLSAgICBDb25uZWN0aW9uJiBtX2Nvbm5lY3Rpb247
CisgICAgUmVmPENvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
RGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudD4gbV9kZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50Owog
ICAgIHVpbnQ2NF90IG1fY3VycmVudERlc3RpbmF0aW9uSUQgeyAwIH07Ci0KICAgICBzaXplX3Qg
bV9jbGllbnRPZmZzZXQgeyAwIH07CiAgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciBtX2J1ZmZl
cjsKICAgICBzdGQ6Om9wdGlvbmFsPFNlbWFwaG9yZT4gbV93YWtlVXBTZW1hcGhvcmU7CiAgICAg
dW5zaWduZWQgbV9yZW1haW5pbmdNZXNzYWdlQ291bnRCZWZvcmVTZW5kaW5nV2FrZVVwIHsgMCB9
OwogICAgIHVuc2lnbmVkIG1fd2FrZVVwTWVzc2FnZUh5c3RlcmVzaXMgeyAwIH07CisKKyAgICBm
cmllbmQgY2xhc3MgV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU0lQQ1N0cmVhbUNsaWVudENvbm5l
Y3Rpb247CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgpAQCAtMTQ2LDcg
KzE3Niw3IEBAIGJvb2wgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZChUJiYgbWVzc2FnZSwg
T2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklECiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAgICAgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoV1RGTW92ZSgqc3Bh
bikpOwotICAgIGlmICghbV9jb25uZWN0aW9uLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgZGVzdGlu
YXRpb25JRCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdG
b3JTeW5jUmVwbHkpKQorICAgIGlmICghbV9jb25uZWN0aW9uLT5zZW5kKFdURk1vdmUobWVzc2Fn
ZSksIGRlc3RpbmF0aW9uSUQsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldo
ZW5XYWl0aW5nRm9yU3luY1JlcGx5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVy
biB0cnVlOwogfQpAQCAtMTgxLDEzICsyMTEsMTMgQEAgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
U2VuZFN5bmNSZXN1bHQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3MK
ICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKCptYXliZVNlbmRSZXN1bHQpOwogICAgIH0KICAg
ICBzZW5kUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZShXVEZNb3ZlKCpzcGFuKSk7Ci0gICAgcmV0
dXJuIG1fY29ubmVjdGlvbi5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5
KSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0KTsKKyAgICByZXR1cm4gbV9jb25u
ZWN0aW9uLT5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGlu
YXRpb25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4KIGJvb2wgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6d2FpdEZvckFuZERpc3Bh
dGNoSW1tZWRpYXRlbHkoT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBUaW1lb3V0
IHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9ucykKIHsKLSAg
ICByZXR1cm4gbV9jb25uZWN0aW9uLndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PFQ+KGRl
c3RpbmF0aW9uSUQsIHRpbWVvdXQsIHdhaXRGb3JPcHRpb25zKTsKKyAgICByZXR1cm4gbV9jb25u
ZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxUPihkZXN0aW5hdGlvbklELCB0
aW1lb3V0LCB3YWl0Rm9yT3B0aW9ucyk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0x
OTUsOCArMjI1LDggQEAgc3RkOjpvcHRpb25hbDxTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTZW5k
U3luY1Jlc3VsdD4gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6dHIKIHsKICAgICAvLyBJbiB0aGlz
IGZ1bmN0aW9uLCBTZW5kU3luY1Jlc3VsdCB7IH0gbWVhbnMgZXJyb3IgaGFwcGVuZWQgYW5kIGNh
bGxlciBzaG91bGQgc3RvcCBwcm9jZXNzaW5nLgogICAgIC8vIHN0ZDo6bnVsbG9wdCBtZWFucyB3
ZSBjb3VsZG4ndCBzZW5kIHRocm91Z2ggdGhlIHN0cmVhbSwgc28gdHJ5IHNlbmRpbmcgb3V0IG9m
IHN0cmVhbS4KLSAgICBhdXRvIHN5bmNSZXF1ZXN0SUQgPSBtX2Nvbm5lY3Rpb24ubWFrZVN5bmNS
ZXF1ZXN0SUQoKTsKLSAgICBpZiAoIW1fY29ubmVjdGlvbi5wdXNoUGVuZGluZ1N5bmNSZXF1ZXN0
SUQoc3luY1JlcXVlc3RJRCkpCisgICAgYXV0byBzeW5jUmVxdWVzdElEID0gbV9jb25uZWN0aW9u
LT5tYWtlU3luY1JlcXVlc3RJRCgpOworICAgIGlmICghbV9jb25uZWN0aW9uLT5wdXNoUGVuZGlu
Z1N5bmNSZXF1ZXN0SUQoc3luY1JlcXVlc3RJRCkpCiAgICAgICAgIHJldHVybiBTZW5kU3luY1Jl
c3VsdCB7IH07CiAKICAgICBhdXRvIHJlc3VsdCA9IFsmXSgpIC0+IHN0ZDo6b3B0aW9uYWw8U2Vu
ZFN5bmNSZXN1bHQ+IHsKQEAgLTIyMCw5ICsyNTAsOSBAQCBzdGQ6Om9wdGlvbmFsPFN0cmVhbUNs
aWVudENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0PiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0
cgogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fY2xpZW50T2Zm
c2V0ID0gMDsKLSAgICAgICAgcmV0dXJuIG1fY29ubmVjdGlvbi53YWl0Rm9yU3luY1JlcGx5KHN5
bmNSZXF1ZXN0SUQsIFQ6Om5hbWUoKSwgdGltZW91dCwgeyB9KTsKKyAgICAgICAgcmV0dXJuIG1f
Y29ubmVjdGlvbi0+d2FpdEZvclN5bmNSZXBseShzeW5jUmVxdWVzdElELCBUOjpuYW1lKCksIHRp
bWVvdXQsIHsgfSk7CiAgICAgfSgpOwotICAgIG1fY29ubmVjdGlvbi5wb3BQZW5kaW5nU3luY1Jl
cXVlc3RJRChzeW5jUmVxdWVzdElEKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnBvcFBlbmRpbmdTeW5j
UmVxdWVzdElEKHN5bmNSZXF1ZXN0SUQpOwogICAgIGlmIChyZXN1bHQgJiYgKnJlc3VsdCkgewog
ICAgICAgICBhdXRvJiBkZWNvZGVyID0gKipyZXN1bHQ7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8
dHlwZW5hbWUgVDo6UmVwbHlBcmd1bWVudHM+IHJlcGx5QXJndW1lbnRzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRl
eCAxOTdhNTZhMzZhNjkxZTJhZDg0NzY0Nzc5YWMxYzY3ZGY5NDExNzJiLi40OWZlNzM0YjFlZTNi
MTc5MjFkNGI1ODhlOTc4M2VmOGI5ODYxY2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMjgsNDIgKzI4LDk4
IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZS5oIgorI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIAotU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6
OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0cmVh
bUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0sIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmIHdv
cmtRdWV1ZSkKLSAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQorbmFtZXNwYWNlIHsKKy8v
IFBhcnQgMi4gb2YgdGhlIHdvcmthcm91bmQgZm9yIG5vdCBoYXZpbmcgbm9uLWRpc3BhdGNoaW5n
IENvbm5lY3Rpb24uIFdlIGhhdmUgYSBkdW1teSBDb25uZWN0aW9uOjpDbGllbnQgd2hpY2ggaXMg
ZXhwZWN0ZWQgdG8KKy8vIG5ldmVyIGdldCBhbnkgbWVzc2FnZXMuCitjbGFzcyBEZWRpY2F0ZWRD
b25uZWN0aW9uQ2xpZW50IGZpbmFsIDogcHVibGljIENvbm5lY3Rpb246OkNsaWVudCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGVkaWNh
dGVkQ29ubmVjdGlvbkNsaWVudCk7CitwdWJsaWM6CisgICAgRGVkaWNhdGVkQ29ubmVjdGlvbkNs
aWVudCgpID0gZGVmYXVsdDsKKyAgICAvLyBDb25uZWN0aW9uOjpDbGllbnQuCisgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVy
KSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgYm9vbCBkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlciwgVW5pcXVl
UmVmPEVuY29kZXI+JiByZXBseUVuY29kZXIpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgZGlkQ2xvc2UoQ29ubmVjdGlvbiYpIGZpbmFsIHsg
fSAvLyBDbGllbnQgaXMgZXhwZWN0ZWQgdG8gbGlzdGVuIHRvIENvbm5lY3Rpb246OmRpZENsb3Nl
KCkgZnJvbSB0aGUgY29ubmVjdGlvbiBpdCBzZW50IHRvIHRoZSBkZWRpY2F0ZWQgY29ubmVjdGlv
biB0by4KKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb25uZWN0aW9uJiwgTWVz
c2FnZU5hbWUpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0gLy8gVGhlIHNlbmRlciBp
cyBleHBlY3RlZCB0byBiZSB0cnVzdGVkLCBzbyBhbGwgaW52YWxpZCBtZXNzYWdlcyBhcmUgcHJv
Z3JhbW1pbmcgZXJyb3JzLgorcHJpdmF0ZToKK307CisKK30KKworUmVmPFN0cmVhbVNlcnZlckNv
bm5lY3Rpb24+IFN0cmVhbVNlcnZlckNvbm5lY3Rpb246OmNyZWF0ZShDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtQnVmZmVyLCBTdHJlYW1Db25u
ZWN0aW9uV29ya1F1ZXVlJiB3b3JrUXVldWUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U3RyZWFtU2VydmVyQ29ubmVjdGlvbihSZWYgeyBjb25uZWN0aW9uIH0sIFdURk1vdmUoc3RyZWFt
QnVmZmVyKSwgd29ya1F1ZXVlLCBIYXNEZWRpY2F0ZWRDb25uZWN0aW9uOjpObykpOworfQorCitS
ZWY8U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gU3RyZWFtU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRl
V2l0aERlZGljYXRlZENvbm5lY3Rpb24oQXR0YWNobWVudCYmIGNvbm5lY3Rpb25JZGVudGlmaWVy
LCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtQnVmZmVyLCBTdHJlYW1Db25uZWN0aW9u
V29ya1F1ZXVlJiB3b3JrUXVldWUpCit7CisjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCisg
ICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25IYW5kbGUgeyBjb25uZWN0
aW9uSWRlbnRpZmllci5yZWxlYXNlRmlsZURlc2NyaXB0b3IoKSB9OworI2VsaWYgT1MoREFSV0lO
KQorICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSGFuZGxlIHsgY29u
bmVjdGlvbklkZW50aWZpZXIucG9ydCgpIH07CisjZWxpZiBPUyhXSU5ET1dTKQorICAgIElQQzo6
Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSGFuZGxlIHsgY29ubmVjdGlvbklkZW50
aWZpZXIuaGFuZGxlKCkgfTsKKyNlbHNlCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBJUEM6
OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbkhhbmRsZSB7IH07CisjZW5kaWYKKyAg
ICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPERlZGljYXRlZENvbm5lY3Rpb25DbGllbnQ+IHNf
ZGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudDsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgc19v
bmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShzX29uY2VGbGFnLCBbXSB7CisgICAgICAgIHNf
ZGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudC5jb25zdHJ1Y3QoKTsKKyAgICB9KTsKKyAgICBhdXRv
IGNvbm5lY3Rpb24gPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZUNsaWVudENvbm5lY3Rpb24oY29u
bmVjdGlvbkhhbmRsZSwgc19kZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50LmdldCgpKTsKKyAgICBh
dXRvIHN0cmVhbUNvbm5lY3Rpb24gPSBhZG9wdFJlZigqbmV3IFN0cmVhbVNlcnZlckNvbm5lY3Rp
b24oV1RGTW92ZShjb25uZWN0aW9uKSwgV1RGTW92ZShzdHJlYW1CdWZmZXIpLCB3b3JrUXVldWUs
IEhhc0RlZGljYXRlZENvbm5lY3Rpb246OlllcykpOworICAgIHJldHVybiBzdHJlYW1Db25uZWN0
aW9uOworfQorCisKK1N0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uQmFzZShSZWY8Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTdHJlYW1Db25uZWN0aW9u
QnVmZmVyJiYgc3RyZWFtLCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiB3b3JrUXVldWUsIEhh
c0RlZGljYXRlZENvbm5lY3Rpb24gaGFzRGVkaWNhdGVkQ29ubmVjdGlvbikKKyAgICA6IG1fY29u
bmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQogICAgICwgbV93b3JrUXVldWUod29ya1F1ZXVl
KQogICAgICwgbV9idWZmZXIoV1RGTW92ZShzdHJlYW0pKQorICAgICwgbV9oYXNEZWRpY2F0ZWRD
b25uZWN0aW9uKGhhc0RlZGljYXRlZENvbm5lY3Rpb24gPT0gSGFzRGVkaWNhdGVkQ29ubmVjdGlv
bjo6WWVzKQogewogfQogCi12b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzdGFydFJl
Y2VpdmluZ01lc3NhZ2VzSW1wbChSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklEKQorU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6On5TdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uQmFzZSgpCiB7Ci0gICAgLy8gRklYTUU6IENhbiB3ZSBhdm9pZCBzeW5jaHJvbm91
cyBkaXNwYXRjaCBoZXJlIGJ5IGFkanVzdGluZyB0aGUgYXNzZXJ0aW9uIGluIGBDb25uZWN0aW9u
OjplbnF1ZXVlTWF0Y2hpbmdNZXNzYWdlc1RvTWVzc2FnZVJlY2VpdmVRdWV1ZWA/Ci0gICAgY2Fs
bE9uTWFpblJ1bkxvb3BBbmRXYWl0KFsmXSB7Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+YWRkTWVz
c2FnZVJlY2VpdmVRdWV1ZSgqdGhpcywgeyByZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQgfSk7
Ci0gICAgfSk7Ci0gICAgbV93b3JrUXVldWUuYWRkU3RyZWFtQ29ubmVjdGlvbigqdGhpcyk7Cisg
ICAgQVNTRVJUKCFtX2hhc0RlZGljYXRlZENvbm5lY3Rpb24gfHwgIW1fY29ubmVjdGlvbi0+aXNW
YWxpZCgpKTsKIH0KIAotdm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c3RhcnRSZWNl
aXZpbmdNZXNzYWdlc0ltcGwoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSkKK3ZvaWQgU3RyZWFt
U2VydmVyQ29ubmVjdGlvbkJhc2U6Om9wZW4oKQogewotICAgIGNhbGxPbk1haW5SdW5Mb29wQW5k
V2FpdChbJl0gewotICAgICAgICBtX2Nvbm5lY3Rpb24tPmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUo
KnRoaXMsIHsgcmVjZWl2ZXJOYW1lIH0pOwotICAgIH0pOwotICAgIG1fd29ya1F1ZXVlLmFkZFN0
cmVhbUNvbm5lY3Rpb24oKnRoaXMpOworICAgIGlmIChtX2hhc0RlZGljYXRlZENvbm5lY3Rpb24p
IHsKKyAgICAgICAgLy8gUGFydCAxLiBvZiB0aGUgd29ya2Fyb3VuZCBmb3Igbm90IGhhdmluZyBu
b24tZGlzcGF0Y2hpbmcgQ29ubmVjdGlvbi4gRGl2ZXJ0IGFsbCBtZXNzYWdlcyB0byB0aGUgcmVj
ZWl2ZSBxdWV1ZS4KKyAgICAgICAgbV9jb25uZWN0aW9uLT5hZGRNZXNzYWdlUmVjZWl2ZVF1ZXVl
KCp0aGlzLCB7IH0pOworICAgICAgICBtX2Nvbm5lY3Rpb24tPm9wZW4oKTsKKyAgICB9CiB9CiAK
LXZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0lt
cGwoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSkKK3ZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlv
bkJhc2U6OmludmFsaWRhdGUoKQogewotICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlTWVzc2FnZVJl
Y2VpdmVRdWV1ZSh7IHJlY2VpdmVyTmFtZSB9KTsKLSAgICBtX3dvcmtRdWV1ZS5yZW1vdmVTdHJl
YW1Db25uZWN0aW9uKCp0aGlzKTsKKyAgICBpZiAobV9oYXNEZWRpY2F0ZWRDb25uZWN0aW9uKSB7
CisgICAgICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZSh7IH0pOwor
ICAgICAgICBtX2Nvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKKyAgICB9Cit9CisKK3ZvaWQgU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBsKFJlY2Vp
dmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit7CisgICAgaWYg
KCFtX2hhc0RlZGljYXRlZENvbm5lY3Rpb24pCisgICAgICAgIG1fY29ubmVjdGlvbi0+YWRkTWVz
c2FnZVJlY2VpdmVRdWV1ZSgqdGhpcywgeyByZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQgfSk7
CisgICAgbV93b3JrUXVldWUuYWRkU3RyZWFtQ29ubmVjdGlvbigqdGhpcyk7CiB9CiAKIHZvaWQg
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwoUmVj
ZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKIHsKLSAgICBt
X2Nvbm5lY3Rpb24tPnJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUoeyByZWNlaXZlck5hbWUsIGRl
c3RpbmF0aW9uSUQgfSk7CisgICAgaWYgKCFtX2hhc0RlZGljYXRlZENvbm5lY3Rpb24pCisgICAg
ICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZSh7IHJlY2VpdmVyTmFt
ZSwgZGVzdGluYXRpb25JRCB9KTsKICAgICBtX3dvcmtRdWV1ZS5yZW1vdmVTdHJlYW1Db25uZWN0
aW9uKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IGU2YTQyNTE0ZjRjZTcwODVlN2M3Y2QxMmIxNzYx
M2U2NDg2ZDI2ZDcuLjI2ZDUwMjliMDU3NDY1NjE4ZDNmMTMwMGM5YTFmZjJjN2FmYjJkMmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTsK
IGNsYXNzIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlPiwgcHJvdGVjdGVkIE1lc3NhZ2VSZWNl
aXZlUXVldWUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0cmVhbVNlcnZlckNvbm5lY3Rp
b25CYXNlKTsKIHB1YmxpYzoKLSAgICB+U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UoKSBvdmVy
cmlkZSA9IGRlZmF1bHQ7CisgICAgflN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlKCkgb3ZlcnJp
ZGU7CiAKICAgICBDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkgeyByZXR1cm4gbV9jb25uZWN0aW9u
OyB9CiAKQEAgLTU2LDE1ICs1NiwxNSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgogICAgIHZvaWQgc2VuZFN5bmNSZXBseShDb25uZWN0
aW9uOjpTeW5jUmVxdWVzdElELCBBcmd1bWVudHMmJi4uLik7CiAKKyAgICB2b2lkIG9wZW4oKTsK
KyAgICB2b2lkIGludmFsaWRhdGUoKTsKIHByb3RlY3RlZDoKLSAgICBTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uQmFzZShJUEM6OkNvbm5lY3Rpb24mLCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYsIFN0
cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmKTsKKyAgICBlbnVtIGNsYXNzIEhhc0RlZGljYXRlZENv
bm5lY3Rpb24geyBObywgWWVzIH07CisgICAgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UoUmVm
PElQQzo6Q29ubmVjdGlvbj4mJiwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmLCBTdHJlYW1Db25u
ZWN0aW9uV29ya1F1ZXVlJiwgSGFzRGVkaWNhdGVkQ29ubmVjdGlvbik7CiAKICAgICB2b2lkIHN0
YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBsKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRp
b25JRCk7CiAgICAgdm9pZCBzdG9wUmVjZWl2aW5nTWVzc2FnZXNJbXBsKFJlY2VpdmVyTmFtZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCk7CiAKLSAgICB2b2lkIHN0YXJ0UmVjZWl2aW5nTWVzc2Fn
ZXNJbXBsKFJlY2VpdmVyTmFtZSk7Ci0gICAgdm9pZCBzdG9wUmVjZWl2aW5nTWVzc2FnZXNJbXBs
KFJlY2VpdmVyTmFtZSk7Ci0KICAgICAvLyBNZXNzYWdlUmVjZWl2ZVF1ZXVlCiAgICAgdm9pZCBl
bnF1ZXVlTWVzc2FnZShDb25uZWN0aW9uJiwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYpIGZp
bmFsOwogCkBAIC0xMDEsNiArMTAxLDcgQEAgcHJvdGVjdGVkOgogICAgIERlcXVlPHN0ZDo6dW5p
cXVlX3B0cjxEZWNvZGVyPj4gbV9vdXRPZlN0cmVhbU1lc3NhZ2VzIFdURl9HVUFSREVEX0JZX0xP
Q0sobV9vdXRPZlN0cmVhbU1lc3NhZ2VzTG9jayk7CiAKICAgICBib29sIG1faXNEaXNwYXRjaGlu
Z1N0cmVhbU1lc3NhZ2UgeyBmYWxzZSB9OworICAgIGNvbnN0IGJvb2wgbV9oYXNEZWRpY2F0ZWRD
b25uZWN0aW9uOwogCiAgICAgZnJpZW5kIGNsYXNzIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU7
CiB9OwpAQCAtMTM3LDI3ICsxMzgsMzMgQEAgdm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFz
ZTo6c2VuZFN5bmNSZXBseShDb25uZWN0aW9uOjpTeW5jUmVxdWVzdElEIHN5bmNSZXEKIC8vIFRo
ZSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIGRvZXMgbm90IHRydXN0IHRoZSBTdHJlYW1DbGllbnRD
b25uZWN0aW9uLgogY2xhc3MgU3RyZWFtU2VydmVyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uPiBjcmVhdGUoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbUJ1ZmZlciwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZSYgd29ya1F1ZXVlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RyZWFt
U2VydmVyQ29ubmVjdGlvbihjb25uZWN0aW9uLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlciksIHdvcmtR
dWV1ZSkpOwotICAgIH0KKyAgICAvLyBDcmVhdGVzIFN0cmVhbUNsaWVudENvbm5lY3Rpb24gd2hl
cmUgdGhlIG91dCBvZiBzdHJlYW0gbWVzc2FnZXMgYW5kIHNlcnZlciByZXBsaWVzIGFyZQorICAg
IC8vIHJlY2VpdmVkIHRocm91Z2ggdGhlIHBhc3NlZCBJUEM6OkNvbm5lY3Rpb24uIFRoZSBtZXNz
YWdlcyBmcm9tIHRoZSBzZXJ2ZXIgYXJlIHNlbnQgdG8KKyAgICAvLyB0aGUgcGFzc2VkIElQQzo6
Q29ubmVjdGlvbi4KKyAgICAvLyBOb3RlOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSB1c2VkIG9u
bHkgaW4gY2FzZXMgd2hlcmUgdGhlCisgICAgLy8gc3RyZWFtIHNlcnZlciBzdGFydHMgbGlzdGVu
aW5nIHRvIG1lc3NhZ2VzIHdpdGggbmV3IGlkZW50aWZpZXJzIG9uIHRoZSBzYW1lIHRocmVhZCBh
cworICAgIC8vIGluIHdoaWNoIHRoZSBzZXJ2ZXIgSVBDOjpDb25uZWN0aW9uIGRpc3BhdGNoIG1l
c3NhZ2VzLiBBdCB0aGUgdGltZSBvZiB3cml0aW5nLAorICAgIC8vIElQQzo6Q29ubmVjdGlvbiBk
aXNwYXRjaGVzIG1lc3NhZ2VzIG9ubHkgaW4gbWFpbiB0aHJlYWQuCisgICAgc3RhdGljIFJlZjxT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiBjcmVhdGUoQ29ubmVjdGlvbiYsIFN0cmVhbUNvbm5lY3Rp
b25CdWZmZXImJiwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYpOworCisgICAgLy8gQ3JlYXRl
cyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHdoZXJlIHRoZSBvdXQgb2Ygc3RyZWFtIG1lc3NhZ2Vz
IGFuZCBzZXJ2ZXIgcmVwbGllcyBhcmUKKyAgICAvLyByZWNlaXZlZCB0aHJvdWdoIGEgZGVkaWRj
YXRlZCwgbmV3IElQQzo6Q29ubmVjdGlvbi4gVGhlIG1lc3NhZ2VzIGZyb20gdGhlIHNlcnZlciBh
cmUgc2VudCB0bworICAgIC8vIHRoZSBkZWRpY2F0ZWQgY29ubmVjaXRvbi4KKyAgICBzdGF0aWMg
UmVmPFN0cmVhbVNlcnZlckNvbm5lY3Rpb24+IGNyZWF0ZVdpdGhEZWRpY2F0ZWRDb25uZWN0aW9u
KEF0dGFjaG1lbnQmJiBjb25uZWN0aW9uSWRlbnRpZmllciwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ciYmLCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJik7CisKICAgICB+U3RyZWFtU2VydmVyQ29u
bmVjdGlvbigpIGZpbmFsID0gZGVmYXVsdDsKIAogICAgIHZvaWQgc3RhcnRSZWNlaXZpbmdNZXNz
YWdlcyhTdHJlYW1NZXNzYWdlUmVjZWl2ZXImLCBSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQpOwogICAgIC8vIFN0b3BzIHRoZSBtZXNzYWdlIHJlY2VpcHQuIE5vdGU6IGFscmVh
ZHkgcmVjZWl2ZWQgbWVzc2FnZXMgbWlnaHQgc3RpbGwgYmUgZGVsaXZlcmVkLgogICAgIHZvaWQg
c3RvcFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25J
RCk7CiAKLSAgICBpbmxpbmUgdm9pZCBzdGFydFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyTmFt
ZSk7Ci0gICAgaW5saW5lIHZvaWQgc3RvcFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyTmFtZSk7
Ci0KICAgICAvLyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSBvdmVycmlkZXMuCiAgICAgRGlz
cGF0Y2hSZXN1bHQgZGlzcGF0Y2hTdHJlYW1NZXNzYWdlcyhzaXplX3QgbWVzc2FnZUxpbWl0KSBm
aW5hbDsKIAorcHJvdGVjdGVkOgorICAgIHVzaW5nIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNl
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTsKKwogcHJpdmF0ZToKLSAgICBTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXImJiBzdHJlYW1CdWZmZXIsIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmIHdvcmtRdWV1ZSkK
LSAgICAgICAgOiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZShjb25uZWN0aW9uLCBXVEZNb3Zl
KHN0cmVhbUJ1ZmZlciksIHdvcmtRdWV1ZSkKLSAgICB7Ci0gICAgfQogICAgIGJvb2wgcHJvY2Vz
c1NldFN0cmVhbURlc3RpbmF0aW9uSUQoRGVjb2RlciYmLCBSZWZQdHI8U3RyZWFtTWVzc2FnZVJl
Y2VpdmVyPiYgY3VycmVudFJlY2VpdmVyKTsKICAgICBib29sIGRpc3BhdGNoU3RyZWFtTWVzc2Fn
ZShEZWNvZGVyJiYsIFN0cmVhbU1lc3NhZ2VSZWNlaXZlciYpOwogICAgIGJvb2wgZGlzcGF0Y2hP
dXRPZlN0cmVhbU1lc3NhZ2UoRGVjb2RlciYmKTsKQEAgLTE2NywxNCArMTc0LDQgQEAgcHJpdmF0
ZToKICAgICB1aW50NjRfdCBtX2N1cnJlbnREZXN0aW5hdGlvbklEIHsgMCB9OwogfTsKIAotdm9p
ZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOjpzdGFydFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVy
TmFtZSByZWNlaXZlck5hbWUpCi17Ci0gICAgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0
YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBsKHJlY2VpdmVyTmFtZSk7Ci19Ci0KLXZvaWQgU3RyZWFt
U2VydmVyQ29ubmVjdGlvbjo6c3RvcFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyTmFtZSByZWNl
aXZlck5hbWUpCi17Ci0gICAgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZp
bmdNZXNzYWdlc0ltcGwocmVjZWl2ZXJOYW1lKTsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCmluZGV4IDk0NzIzNTBm
ODVmNDlkNWNiYmIyNDM0N2Q1OTNiZWI4NjIxNGM4MzcuLjAxOWFlMzM3NjM1MTgyNWIwMGZlYjUy
NDY0ZjlmNDQ1ZjA0ZDgwMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBvcnQgIkNv
bm5lY3Rpb24uaCIKIAogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgorI2ltcG9ydCAiSVBDVGVz
dGVyLmgiCiAjaW1wb3J0ICJJbXBvcnRhbmNlQXNzZXJ0aW9uLmgiCiAjaW1wb3J0ICJMb2dnaW5n
LmgiCiAjaW1wb3J0ICJNYWNoTWVzc2FnZS5oIgpAQCAtNTU4LDExICs1NTksMTQgQEAgdm9pZCBD
b25uZWN0aW9uOjpyZWNlaXZlU291cmNlRXZlbnRIYW5kbGVyKCkKICNpZiBQTEFURk9STShNQUMp
CiAgICAgZGVjb2Rlci0+c2V0SW1wb3J0YW5jZUFzc2VydGlvbihJbXBvcnRhbmNlQXNzZXJ0aW9u
IHsgaGVhZGVyIH0pOwogI2VuZGlmCi0KKyAgICAKICAgICBpZiAoZGVjb2Rlci0+bWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlTmFtZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb24pIHsKICAgICAgICAgQVNT
RVJUKG1faXNTZXJ2ZXIpOwotICAgICAgICBBU1NFUlQoIW1faXNDb25uZWN0ZWQpOwogICAgICAg
ICBBU1NFUlQoIW1fc2VuZFBvcnQpOworICAgICAgICBpZiAobV9pc0Nvbm5lY3RlZCkgeworICAg
ICAgICAgICAgQVNTRVJUX0lTX1RFU1RJTkdfSVBDKCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KIAogICAgICAgICBNYWNoUG9ydCBwb3J0OwogICAgICAgICBpZiAoIWRlY29kZXIt
PmRlY29kZShwb3J0KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDU3Ry
ZWFtVGVzdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1N0cmVhbVRlc3Rlci5jcHAK
aW5kZXggYWJiNmFjNDlkNjgxN2NlNjAyMGY5YzdkM2FjN2IyNjVhNjFmZGIzOC4uODIyNjdlMjFh
ZGU2MmE5YjY2NzQ1ZjNkYzg3YTZjYTVjMzBiMmVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvSVBDU3RyZWFtVGVzdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9J
UENTdHJlYW1UZXN0ZXIuY3BwCkBAIC01NSw2ICs1NSw3IEBAIElQQ1N0cmVhbVRlc3Rlcjo6fklQ
Q1N0cmVhbVRlc3RlcigpID0gZGVmYXVsdDsKIHZvaWQgSVBDU3RyZWFtVGVzdGVyOjppbml0aWFs
aXplKCkKIHsKICAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMo
KnRoaXMsIE1lc3NhZ2VzOjpJUENTdHJlYW1UZXN0ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9pZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+b3Blbigp
OwogICAgIHdvcmtRdWV1ZSgpLmRpc3BhdGNoKFt0aGlzXSB7CiAgICAgICAgIG1fc3RyZWFtQ29u
bmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OklQQ1N0cmVhbVRlc3RlclByb3h5
OjpXYXNDcmVhdGVkKHdvcmtRdWV1ZSgpLndha2VVcFNlbWFwaG9yZSgpKSwgbV9pZGVudGlmaWVy
KTsKICAgICB9KTsKQEAgLTYyLDYgKzYzLDcgQEAgdm9pZCBJUENTdHJlYW1UZXN0ZXI6OmluaXRp
YWxpemUoKQogCiB2b2lkIElQQ1N0cmVhbVRlc3Rlcjo6c3RvcExpc3RlbmluZ0ZvcklQQyhSZWY8
SVBDU3RyZWFtVGVzdGVyPiYmIHJlZkZyb21Db25uZWN0aW9uKQogeworICAgIG1fc3RyZWFtQ29u
bmVjdGlvbi0+aW52YWxpZGF0ZSgpOwogICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RvcFJlY2Vp
dmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpJUENTdHJlYW1UZXN0ZXI6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgIHdvcmtRdWV1ZSgpLnN0b3BBbmRX
YWl0Rm9yQ29tcGxldGlvbigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
SVBDVGVzdGVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuaAppbmRleCA2OGJi
NmNiYjE0ZjU4YjEzNzYxZWFkOWNkNWIzOGE5YzlkYjlmYmJmLi43MDA5N2I4MDZiZTMzZmRkMjUx
MGM0OWI1ZWUzMzgzY2Q3YjFlYWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9J
UENUZXN0ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuaApAQCAtNDQs
NyArNDQsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotI2RlZmluZSBBU1NFUlRfSVNfVEVT
VElOR19JUEMoKSBBU1NFUlQoaXNUZXN0aW5nSVBDKCksICJVbnRydXN0ZWQgY29ubmVjdGlvbiBz
ZW50IGludmFsaWQgZGF0YS4gU2hvdWxkIG9ubHkgaGFwcGVuIHdoZW4gdGVzdGluZyBJUEMuIikK
KyNkZWZpbmUgQVNTRVJUX0lTX1RFU1RJTkdfSVBDKCkgQVNTRVJUKFdlYktpdDo6aXNUZXN0aW5n
SVBDKCksICJVbnRydXN0ZWQgY29ubmVjdGlvbiBzZW50IGludmFsaWQgZGF0YS4gU2hvdWxkIG9u
bHkgaGFwcGVuIHdoZW4gdGVzdGluZyBJUEMuIikKIAogI2lmIEVOQUJMRShJUENfVEVTVElOR19B
UEkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCmluZGV4IDVl
OTIyZjc5YThmZWJiNzM2NjIwZTg0ODE3MTNkN2NjZjhlNzQwNjguLmE1Y2ZjMTcwNDhhZjAwYjM4
MzZiZGY5ODQ3ZDUwY2E1MzY2M2VjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5LmNwcApAQCAtNTUsNiArNTUsNyBAQCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KEdQVVByb2Nlc3NDb25uZWN0aW9uJgog
ICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmFkZENsaWVudCgqdGhpcyk7CiAgICAgbV9ncHVQ
cm9jZXNzQ29ubmVjdGlvbi0+bWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsK
ICAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlR3JhcGhpY3NDb250ZXh0R0woYXR0cmli
dXRlcywgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIHJlbmRlcmluZ0JhY2tlbmQsIG1f
c3RyZWFtQ29ubmVjdGlvbi5zdHJlYW1CdWZmZXIoKSksIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlz
cGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICBtX3N0cmVhbUNv
bm5lY3Rpb24ub3BlbigpOwogICAgIC8vIFRPRE86IFdlIG11c3Qgd2FpdCB1bnRpbCBpbml0aWFs
aXplZCwgYmVjYXVzZSBhdCB0aGUgbW9tZW50IHdlIGNhbm5vdCByZWNlaXZlIElQQyBtZXNzYWdl
cwogICAgIC8vIGR1cmluZyB3YWl0IHdoaWxlIGluIHN5bmNocm9ub3VzIHN0cmVhbSBzZW5kLiBT
aG91bGQgYmUgZml4ZWQgYXMgcGFydCBvZiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE3MjExLgogICAgIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7CkBAIC0zMzcsNiAr
MzM4LDcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjphYmFuZG9uR3B1UHJv
Y2VzcygpCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2Nvbm5lY3RHcHVQ
cm9jZXNzSWZOZWVkZWQoKQogewogICAgIGlmIChhdXRvIGdwdVByb2Nlc3NDb25uZWN0aW9uID0g
c3RkOjpleGNoYW5nZShtX2dwdVByb2Nlc3NDb25uZWN0aW9uLCBudWxscHRyKSkgeworICAgICAg
ICBtX3N0cmVhbUNvbm5lY3Rpb24uaW52YWxpZGF0ZSgpOwogICAgICAgICBncHVQcm9jZXNzQ29u
bmVjdGlvbi0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKICAgICAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICAgICAgZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpSZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wobV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpLCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2Fp
dGluZ0ZvclN5bmNSZXBseSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5j
cHAKaW5kZXggODMyNzY2MzNjYjU3N2Q5NThiNDQ0NWFhNzRiOTcxMTQ0NTA3MTQzZi4uZTkyNGVh
ZjU5YjJjOTYwYWYwOTgyMjI0MzA1ZjJiYTZhNzIzOTJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmNwcApAQCAtNzAsMTMgKzcwLDE0IEBAIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6flJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpCiBHUFVQcm9jZXNz
Q29ubmVjdGlvbiYgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjplbnN1cmVHUFVQcm9jZXNz
Q29ubmVjdGlvbigpCiB7CiAgICAgaWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0aW9uKSB7Ci0gICAg
ICAgIGF1dG8mIGdwdVByb2Nlc3NDb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKLSAgICAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24uYWRkQ2xpZW50KCp0aGlzKTsKLSAgICAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2Fn
ZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgcmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgICAgIG1fZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24gPSAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24oKTsKKyAgICAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+YWRkQ2xpZW50KCp0aGlzKTsK
KwogICAgICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY29ubmVjdGlvbkJ1ZmZlclNpemUgPSAx
IDw8IDIxOwotICAgICAgICBtX3N0cmVhbUNvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPElQQzo6U3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbj4oZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLCBj
b25uZWN0aW9uQnVmZmVyU2l6ZSk7Ci0gICAgICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVS
ZW5kZXJpbmdCYWNrZW5kKG1fcGFyYW1ldGVycywgbV9zdHJlYW1Db25uZWN0aW9uLT5zdHJlYW1C
dWZmZXIoKSksIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0
aW5nRm9yU3luY1JlcGx5KTsKLSAgICAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbiA9IGdwdVBy
b2Nlc3NDb25uZWN0aW9uOworICAgICAgICBhdXRvIFtzdHJlYW1Db25uZWN0aW9uLCBkZWRpY2F0
ZWRDb25uZWN0aW9uQ2xpZW50SWRlbnRpZmVyXSA9IElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6Y3JlYXRlV2l0aERlZGljYXRlZENvbm5lY3Rpb24oKnRoaXMsIGNvbm5lY3Rpb25CdWZmZXJT
aXplKTsKKyAgICAgICAgbV9zdHJlYW1Db25uZWN0aW9uID0gV1RGTW92ZShzdHJlYW1Db25uZWN0
aW9uKTsKKyAgICAgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5vcGVuKCk7CisgICAgICAgIG1fZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVSZW5kZXJpbmdCYWNrZW5kKG1fcGFyYW1ldGVycywgZGVk
aWNhdGVkQ29ubmVjdGlvbkNsaWVudElkZW50aWZlciwgbV9zdHJlYW1Db25uZWN0aW9uLT5zdHJl
YW1CdWZmZXIoKSksIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5X
YWl0aW5nRm9yU3luY1JlcGx5KTsKICAgICB9CiAgICAgcmV0dXJuICptX2dwdVByb2Nlc3NDb25u
ZWN0aW9uOwogfQpAQCAtMTAxLDYgKzEwMiw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5OjpkaXNjb25uZWN0R1BVUHJvY2VzcygpCiAgICAgbV9nZXRQaXhlbEJ1ZmZlclNoYXJl
ZE1lbW9yeSA9IG51bGxwdHI7CiAgICAgbV9yZW5kZXJpbmdVcGRhdGVJRCA9IHsgfTsKICAgICBt
X2RpZFJlbmRlcmluZ1VwZGF0ZUlEID0geyB9OworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+aW52
YWxpZGF0ZSgpOwogICAgIG1fc3RyZWFtQ29ubmVjdGlvbiA9IG51bGxwdHI7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCmluZGV4IDAxYWUwODBjMWQ1MTVjZGMwMmU1
OTNmNGZjN2Q5MTgxMzYwMzYzY2MuLmYxNTFlZjM1ZTJlZDUxNmY5OTZiNGNhOWI5MDE1ZDkyZmEy
N2E0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaApAQCAtMTczLDkg
KzE3MywxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRmx1c2goV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0Rmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOwogICAgIHZvaWQgZGlkRmluYWxpemVSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRl
SUQgZGlkUmVuZGVyaW5nVXBkYXRlSUQpOwogCisgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24qIG1f
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24geyBudWxscHRyIH07CisgICAgUmVmUHRyPElQQzo6Q29ubmVj
dGlvbj4gbV9jb25uZWN0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OlN0cmVhbUNsaWVu
dENvbm5lY3Rpb24+IG1fc3RyZWFtQ29ubmVjdGlvbjsKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kQ3JlYXRpb25QYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKLSAgICBXZWFrUHRyPEdQVVByb2Nl
c3NDb25uZWN0aW9uPiBtX2dwdVByb2Nlc3NDb25uZWN0aW9uOwogICAgIFJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB7ICp0aGlzIH07CiAgICAgUmVm
UHRyPFNoYXJlZE1lbW9yeT4gbV9nZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeTsKICAgICBXZWJD
b3JlOjpUaW1lciBtX2Rlc3Ryb3lHZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeVRpbWVyIHsgKnRo
aXMsICZSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRlc3Ryb3lHZXRQaXhlbEJ1ZmZlclNo
YXJlZE1lbW9yeSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVUHJveHkuY3BwCmluZGV4IDg0MzA0YTc3
NjVkNzlmMjc1MTg4OTE1YWFkZDMwMThlYjE2MTZkYjIuLmE2ZDg4MTJiYWRkN2Q5MDVkYjdjYjNk
NjEwYTQ1YjA2YmYzM2VjZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5jcHAKQEAgLTUx
LDYgKzUxLDcgQEAgUmVtb3RlR1BVUHJveHk6OlJlbW90ZUdQVVByb3h5KEdQVVByb2Nlc3NDb25u
ZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgV2ViR1AKICAgICBtX2dwdVByb2Nlc3NDb25u
ZWN0aW9uLT5hZGRDbGllbnQoKnRoaXMpOwogICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1l
c3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR1BV
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhp
cyk7CiAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZVJlbW90ZUdQVShpZGVudGlmaWVy
LCByZW5kZXJpbmdCYWNrZW5kLCBtX3N0cmVhbUNvbm5lY3Rpb24uc3RyZWFtQnVmZmVyKCkpLCAw
LCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseSk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLm9wZW4oKTsKICAgICAvLyBUT0RPOiBXZSBt
dXN0IHdhaXQgdW50aWwgaW5pdGlhbGl6ZWQsIGJlY2F1c2UgYXQgdGhlIG1vbWVudCB3ZSBjYW5u
b3QgcmVjZWl2ZSBJUEMgbWVzc2FnZXMKICAgICAvLyBkdXJpbmcgd2FpdCB3aGlsZSBpbiBzeW5j
aHJvbm91cyBzdHJlYW0gc2VuZC4gU2hvdWxkIGJlIGZpeGVkIGFzIHBhcnQgb2YgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzIxMS4KICAgICB3YWl0VW50aWxJbml0
aWFsaXplZCgpOwpAQCAtNjgsNiArNjksNyBAQCB2b2lkIFJlbW90ZUdQVVByb3h5OjpncHVQcm9j
ZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBjb25uZWN0aQogdm9p
ZCBSZW1vdGVHUFVQcm94eTo6YWJhbmRvbkdQVVByb2Nlc3MoKQogewogICAgIGF1dG8gZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIG51
bGxwdHIpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi5pbnZhbGlkYXRlKCk7CiAgICAgZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6UmVtb3RlR1BVUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9iYWNr
aW5nLnRvVUludDY0KCkpOwogICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24gPSBudWxscHRyOwog
ICAgIG1fbG9zdCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCmluZGV4IGRiNWFhOGU0MGQzZGJmNmFiYmM3NGZmYTBhY2Mw
OGIyZGQyYjU2ZjUuLmVkZmU5MDZlODRlODA1MDY3N2Q3NjY1YWU3ZTBhMTgzYmRhYTQyMjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEku
Y3BwCkBAIC01NDEsMTAgKzU0MSwxMSBAQCBKU1ZhbHVlUmVmIEpTSVBDU3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6c2VuZE1lc3NhZ2UoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZQogCiAgICAg
YXV0byBbZGVzdGluYXRpb25JRCwgbWVzc2FnZU5hbWUsIHRpbWVvdXRdID0gKmluZm87CiAgICAg
YXV0byYgc3RyZWFtQ29ubmVjdGlvbiA9IGpzU3RyZWFtQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigp
OworICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBzdHJlYW1Db25uZWN0aW9uLmNvbm5lY3Rpb25Gb3JU
ZXN0aW5nKCk7CiAKICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlUmVmPElQQzo6RW5jb2Rl
cj4obWVzc2FnZU5hbWUsIGRlc3RpbmF0aW9uSUQpOwogICAgIGlmIChwcmVwYXJlVG9TZW5kT3V0
T2ZTdHJlYW1NZXNzYWdlKGNvbnRleHQsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cywgKmpzU3Ry
ZWFtQ29ubmVjdGlvbi0+bV9qc0lQQywgc3RyZWFtQ29ubmVjdGlvbiwgZW5jb2Rlci5nZXQoKSwg
ZGVzdGluYXRpb25JRCwgdGltZW91dCwgZXhjZXB0aW9uKSkKLSAgICAgICAgc3RyZWFtQ29ubmVj
dGlvbi5tX2Nvbm5lY3Rpb24uc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgeyB9KTsKKyAg
ICAgICAgY29ubmVjdGlvbi5zZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCB7IH0pOwogCiAg
ICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQpAQCAtNTY2LDEzICs1NjcsMTQgQEAgSlNWYWx1ZVJl
ZiBKU0lQQ1N0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmRTeW5jTWVzc2FnZShKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlMKIAogICAgIGF1dG8gW2Rlc3RpbmF0aW9uSUQsIG1lc3NhZ2VOYW1lLCB0
aW1lb3V0XSA9ICppbmZvOwogICAgIGF1dG8mIHN0cmVhbUNvbm5lY3Rpb24gPSBqc1N0cmVhbUNv
bm5lY3Rpb24tPmNvbm5lY3Rpb24oKTsKKyAgICBhdXRvJiBjb25uZWN0aW9uID0gc3RyZWFtQ29u
bmVjdGlvbi5jb25uZWN0aW9uRm9yVGVzdGluZygpOwogCiAgICAgSVBDOjpDb25uZWN0aW9uOjpT
eW5jUmVxdWVzdElEIHN5bmNSZXF1ZXN0SUQ7Ci0gICAgYXV0byBlbmNvZGVyID0gc3RyZWFtQ29u
bmVjdGlvbi5tX2Nvbm5lY3Rpb24uY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKG1lc3NhZ2VOYW1l
LCBkZXN0aW5hdGlvbklELCBzeW5jUmVxdWVzdElEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBjb25u
ZWN0aW9uLmNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25J
RCwgc3luY1JlcXVlc3RJRCk7CiAgICAgaWYgKCFwcmVwYXJlVG9TZW5kT3V0T2ZTdHJlYW1NZXNz
YWdlKGNvbnRleHQsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cywgKmpzU3RyZWFtQ29ubmVjdGlv
bi0+bV9qc0lQQywgc3RyZWFtQ29ubmVjdGlvbiwgZW5jb2Rlci5nZXQoKSwgZGVzdGluYXRpb25J
RCwgdGltZW91dCwgZXhjZXB0aW9uKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZp
bmVkKGNvbnRleHQpOwogCi0gICAgaWYgKGF1dG8gcmVwbHlEZWNvZGVyID0gc3RyZWFtQ29ubmVj
dGlvbi5tX2Nvbm5lY3Rpb24uc2VuZFN5bmNNZXNzYWdlKHN5bmNSZXF1ZXN0SUQsIFdURk1vdmUo
ZW5jb2RlciksIHRpbWVvdXQsIHsgfSkpIHsKKyAgICBpZiAoYXV0byByZXBseURlY29kZXIgPSBj
b25uZWN0aW9uLnNlbmRTeW5jTWVzc2FnZShzeW5jUmVxdWVzdElELCBXVEZNb3ZlKGVuY29kZXIp
LCB0aW1lb3V0LCB7IH0pKSB7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1ND
T1BFKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIGF1dG8qIGpzUmVzdWx0ID0ganNSZXN1
bHRGcm9tUmVwbHlEZWNvZGVyKGdsb2JhbE9iamVjdCwgbWVzc2FnZU5hbWUsICpyZXBseURlY29k
ZXIpOwogICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456913</attachid>
            <date>2022-04-07 05:34:15 -0700</date>
            <delta_ts>2022-04-08 01:39:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238516-20220407153413.patch</filename>
            <type>text/plain</type>
            <size>52007</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRlOWVhNzNjNzc1MWU3ZTY2
ODkyZDUyY2NjYTkyZWJhMmJkODU5MTguLjNmY2I0MzcyYTYwN2YxOTkyOGE5ZDU4Y2NhOTY5NzVh
NzExN2UwYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAyIEBACisyMDIyLTA0LTA3ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCBzaG91bGQgaGF2ZSBkZWRpY2F0ZWQgSVBDOjpDb25uZWN0aW9uIGZvciBvdXQtb2Yt
c3RyZWFtIG1lc3NhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzg1MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVc2UgZGVkaWNhdGVkIElQQzo6Q29ubmVjdGlvbiBmb3IgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCBJUEMgc3RyZWFtIGNvbm5lY3Rpb24gaW5zdGVhZAorICAgICAgICBvZiB1c2luZyB0
aGUgV1AtR1BVUCBtYWluIGNvbm5lY3Rpb24uIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIgc3Rh
cnRzIGxpc3RlbnRpbmcgdG8KKyAgICAgICAgaXRzIG1lc3NhZ2VzIGluIHRoZSB3b3JrZXIgdGhy
ZWFkLiBBdCB0aGF0IHBvaW50LCBzb21lIG91dC1vZi1zdHJlYW0gbWVzc2FnZSBmb3IgdGhhdAor
ICAgICAgICBpZCBtaWdodCBhbHJlYWR5IGhhdmUgYmVlbiBkaXNwYXRjaGVkIHRvIG1haW4gdGhy
ZWFkLCBjYXVzaW5nIG1pc3NpbmcgbWVzc2FnZSBhbmQgYXNzZXJ0LgorCisgICAgICAgIEluc3Rl
YWQsIHVzZSBkZWRpY2F0ZWQgY29ubmVjdGlvbiBhbmQgcm91dGUgYWxsIHRoZSBtZXNzYWdlcyB0
byB0aGUgU3RyZWFtU2VydmVyQ29ubmVjdGlvbgorICAgICAgICBpcyBhICJtZXNzYWdlIHF1ZXVl
Ii4gVGhpcyB3YXkgd2hlbiBlYWNoIG91dC1vZi1zdHJlYW0gbWVzc2FnZSBtYXJrZXIgaXMgcHJv
Y2Vzc2VkLCB0aGUKKyAgICAgICAgbWVzc2FnZSB3aWxsIGJlLCBkaXJlY3RseSBvciBldmVudHVh
bGx5LCBmb3VuZCBmcm9tIHRoZSBtZXNzYWdlIHF1ZXVlLgorCisgICAgICAgIFJlbW92ZSB3b3Jr
YXJvdW5kczoKKyAgICAgICAgIC0gQWRkaW5nIGEgbGlzdGVuZXIgdG8gdGhlIG1haW4gV1AtR1BV
UCBjb25uZWN0aW9uIGZvciBhbGwgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlciBtZXNzYWdlcwor
ICAgICAgICAgICBhbmQgcm91dGluZyB0aGVtIHRvIHBhcnRpY3VsYXIgU3RyZWFtU2VydmVyQ29u
bmVjdGlvbi4gVGhpcyB3YXMgcHJvYmxlbWF0aWMgc2luY2UKKyAgICAgICAgICAgdGhlcmUgYXJl
IG1hbnkgUlJCIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24gaW5zdGFuY2VzLCBvbmUgcGVyIFBhZ2Us
IGJ1dCBvbmx5IG9uZSBXUC1HUFVQCisgICAgICAgICAgIGNvbm5lY3Rpb24uCisgICAgICAgICAt
IFJFTEVBU0VfTE9HIGluIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAgYWJvdXQgd2FybmluZyBmb3Ig
dGhlIGFib3ZlLiBUdXJuIHRoaXMgYmFjayBpbnRvIGFuCisgICAgICAgICAgIEFTU0VSVC4KKwor
ICAgICAgICBTaW5jZSBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24gYW5kIElQQzo6U3RyZWFt
U2VydmVyQ29ubmVjdGlvbiBhcmUgbGlrZSBJUEM6OkNvbm5lY3Rpb24sCisgICAgICAgIGFkZCBv
cGVuKCkgYW5kIGludmFsaWRhdGUoKSBjYWxscy4gVGhlc2UgaGF2ZSBzYW1lIGNvbnRyYWN0IGFz
IHdpdGggSVBDOjpDb25uZWN0aW9uOgorICAgICAgICBvcGVuKCkgc2hvdWxkIGJlIGNhbGxlZCBp
ZiBjb25uZWN0aW9uIGlzIHRvIGJlIHVzZWQsIGludmFsaWRhdGUoKSBtdXN0IGJlIGNhbGxlZCBp
ZiBvcGVuKCkgd2FzIGNhbGxlZC4KKyAgICAgICAgVGhlc2UgY2FsbHMgaGF2ZSBhbiBlZmZlY3Qg
Y3VycmVudGx5IG9ubHkgd2l0aCBkZWRpY2F0ZWQgY29ubmVjdGlvbnMsIGJ1dCB0aGVzZSBhcmUg
YWRkZWQgdG8gYWxsCisgICAgICAgIElQQzo6U3RyZWFtKkNvbm5lY3Rpb24gY2xpZW50cyBmb3Ig
Y29uc2lzdGVuY3kgYW5kIGZ1dHVyZSB1c2VzLgorCisgICAgICAgIENoYW5nZXMgc2VtYW50aWNz
IG9mIElQQzo6Q29ubmVjdGlvbiBzbGlnaHRseToKKyAgICAgICAgQmVmb3JlLCB0aGVyZSB3YXMg
bm8gdW50cnVzdGVkIGhvbGRlcnMgb2YgInNlcnZlciIgSVBDOjpDb25uZWN0aW9uLCBlLmcuIHRo
ZSBJUEM6OkNvbm5lY3Rpb24gaW5zdGFuY2VzCisgICAgICAgIHdlcmUgbmV2ZXIgaW5zdGFudGlh
dGVkIGJ5IFdQLgorICAgICAgICBBZnRlciwgdW50cnVzdGVkIFdQIGluc3RhbnRpYXRlcyB0aGVz
ZSBJUEMgc3RyZWFtIGRlZGljYXRlZCBjb25uZWN0aW9ucy4KKyAgICAgICAgVGhpcyBpcyBhY2Nv
dW50ZWQgaW4gdGhlIGNhc2Ugd2hlcmUgSVBDOjpDb25uZWN0aW9uIGVuc3VyZXMgdGhhdCBJUEM6
Ok1lc3NhZ2VOYW1lczo6SW5pdGlhbGl6ZUNvbm5lY3Rpb24KKyAgICAgICAgbWVzc2FnZSBpcyBu
b3QgYWN0ZWQgb24gdHdpY2UuCisKKyAgICAgICAgVGVzdGVkIGJ5IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvbGlua3MvbGlua3MtY3JlYXRlZC1ieS1hLWFu
ZC1hcmVhLWVsZW1lbnRzL3RhcmdldF9ibGFua19pbXBsaWNpdF9ub29wZW5lci5odG1sCisgICAg
ICAgICAgICAgICAgICAtLWNoaWxkLXByb2Nlc3Nlcz0xIC0tZXhwZXJpbWVudGFsLWZlYXR1cmU9
VXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZ0VuYWJsZWQ9dHJ1ZSAtLWl0ZXJhdGlvbnM9MTAw
IC0tZm9yY2UgLS1zaW11bGF0b3IKKworICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6c3RvcExpc3RlbmluZ0ZvcklQQyk6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN0YXJ0TGlzdGVuaW5nRm9ySVBDKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c3RvcExpc3RlbmluZ0ZvcklQ
Qyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VTZW5k
ZXJDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVHUFUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHUFU6OmluaXRpYWxpemUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHUFU6OnN0b3BMaXN0ZW5pbmdGb3JJUEMpOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcDoKKyAgICAgICAg
KElQQzo6TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6YWRkSW1wbCk6CisgICAgICAgIChJUEM6Ok1l
c3NhZ2VSZWNlaXZlUXVldWVNYXA6OnJlbW92ZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0
cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjpjcmVhdGVXaXRoRGVkaWNhdGVkQ29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0
cmVhbUNsaWVudENvbm5lY3Rpb246OlN0cmVhbUNsaWVudENvbm5lY3Rpb24pOgorICAgICAgICAo
SVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp+U3RyZWFtQ2xpZW50Q29ubmVjdGlvbik6Cisg
ICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246Om9wZW4pOgorICAgICAgICAoSVBD
OjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjppbnZhbGlkYXRlKToKKyAgICAgICAgKElQQzo6U3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvclRlc3RpbmcpOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OlN0cmVh
bUNsaWVudENvbm5lY3Rpb246OnNlbmQpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjpzZW5kU3luYyk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246
OndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbjo6dHJ5U2VuZFN5bmNTdHJlYW0pOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVy
Q29ubmVjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlv
bjo6Y3JlYXRlV2l0aERlZGljYXRlZENvbm5lY3Rpb24pOgorICAgICAgICAoSVBDOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uQmFzZTo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UpOgorICAgICAg
ICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6flN0cmVhbVNlcnZlckNvbm5lY3Rp
b25CYXNlKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6Om9wZW4p
OgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6aW52YWxpZGF0ZSk6
CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzdGFydFJlY2Vpdmlu
Z01lc3NhZ2VzSW1wbCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNl
OjpzdG9wUmVjZWl2aW5nTWVzc2FnZXNJbXBsKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFNoYXJlZC9JUENTdHJlYW1UZXN0ZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpJUENTdHJlYW1UZXN0ZXI6OmluaXRpYWxpemUpOgorICAg
ICAgICAoV2ViS2l0OjpJUENTdHJlYW1UZXN0ZXI6OnN0b3BMaXN0ZW5pbmdGb3JJUEMpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzY29ubmVjdEdwdVByb2Nlc3NJZk5lZWRlZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjplbnN1
cmVHUFVQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6ZGlzY29ubmVjdEdQVVByb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdQVVByb3h5OjpSZW1vdGVHUFVQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdQVVByb3h5OjphYmFuZG9uR1BVUHJvY2Vzcyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJUENU
ZXN0aW5nQVBJOjpKU0lQQ1N0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmRNZXNzYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6SlNJUENTdHJlYW1DbGllbnRDb25uZWN0aW9u
OjpzZW5kU3luY01lc3NhZ2UpOgorCiAyMDIyLTA0LTA2ICBLaW1tbyBLaW5udW5lbiAgPGtraW5u
dW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgSVBDOjpDb25uZWN0aW9uIHNob3VsZCBzdXBwb3J0
IGRpdmVydGluZyBhbGwgbWVzc2FnZXMgdG8gYSBtZXNzYWdlIHF1ZXVlIGluIG90aGVyIHRocmVh
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCmluZGV4IDhhNTY1ZGY0ZmY4NDMxNTJmNjU3NTIxYWU2N2UzMTk2ZDAwOGQ0
YzkuLjMzMGIwMzljZGY4NTZmODkyMGNjZWM5YWUzNzlmYTk3ZTg5ZTc1NWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKQEAgLTUzMiwxMCArNTMyLDEwIEBAIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5JiBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjppbWFnZURlY29kZXJBVkZQcm94eSgpCiB9CiAjZW5kaWYK
IAotdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVSZW5kZXJpbmdCYWNrZW5k
KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiBjcmVhdGlvblBhcmFt
ZXRlcnMsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbUJ1ZmZlcikKK3ZvaWQg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYgY3JlYXRpb25QYXJhbWV0ZXJzLCBJ
UEM6OkF0dGFjaG1lbnQmJiBjb25uZWN0aW9uSWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0
aW9uQnVmZmVyJiYgc3RyZWFtQnVmZmVyKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVuc3VyZShjcmVhdGlvblBhcmFtZXRlcnMuaWRlbnRpZmll
ciwgWyZdKCkgewotICAgICAgICByZXR1cm4gSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2
ZVF1ZXVlIHsgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGNy
ZWF0aW9uUGFyYW1ldGVycyksIFdURk1vdmUoc3RyZWFtQnVmZmVyKSkgfTsKKyAgICAgICAgcmV0
dXJuIElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZSB7IFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShjcmVhdGlvblBhcmFtZXRlcnMpLCBXVEZN
b3ZlKGNvbm5lY3Rpb25JZGVudGlmaWVyKSwgV1RGTW92ZShzdHJlYW1CdWZmZXIpKSB9OwogICAg
IH0pOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAppbmRleCBiNzJjMGIzNzM2MmI3MzlkYmZhM2VkOWEwYzRhMDFlM2IyMWIxZTk5
Li4wMzQ0ZTNjYzBjNGY4MTMyZTdkZjM5NTU1MDcxNTM5NTg2M2U2MGFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAg
LTIxNyw3ICsyMTcsNyBAQCBwcml2YXRlOgogICAgIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2Vy
JiBtZWRpYVJlY29yZGVyTWFuYWdlcigpOwogI2VuZGlmCiAKLSAgICB2b2lkIGNyZWF0ZVJlbmRl
cmluZ0JhY2tlbmQoUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmLCBJ
UEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisgICAgdm9pZCBjcmVhdGVSZW5kZXJpbmdC
YWNrZW5kKFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiwgSVBDOjpB
dHRhY2htZW50JiYsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKICAgICB2b2lkIHJl
bGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIAogI2lm
IEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMWI4MzJhMzE4
M2Y4Mjk0ZWMwNTdjY2E5Yzc2ZmFiYTAwMjRlNTRiYi4uZWEzYzE0N2VjNDE5YzNmNDk1NTYzMWNl
MjA1M2RlMjBkNmI2NWJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTIzLDcg
KzIzLDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIG1lc3NhZ2VzIC0+IEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3NhZ2UgewotICAgIHZvaWQgQ3JlYXRl
UmVuZGVyaW5nQmFja2VuZChzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3Jl
YXRpb25QYXJhbWV0ZXJzIGNyZWF0aW9uUGFyYW1ldGVycywgSVBDOjpTdHJlYW1Db25uZWN0aW9u
QnVmZmVyIHN0cmVhbUJ1ZmZlcikKKyAgICB2b2lkIENyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoc3Ry
dWN0IFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyBjcmVh
dGlvblBhcmFtZXRlcnMsIElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllciwgSVBD
OjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHN0cmVhbUJ1ZmZlcikKICAgICB2b2lkIFJlbGVhc2VS
ZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIpCiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIHZvaWQgQ3JlYXRl
R3JhcGhpY3NDb250ZXh0R0woc3RydWN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyBhdHRyaWJ1dGVzLCBXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ciBzdHJlYW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCA2ZGI2NDQwY2Y5NmQ5MmFj
MmQ3ZjViZTFkNTIyM2FlMDVhMDE3MWI0Li5mMDI0MmFmN2E0NTAwYTUwNDI2YzNiMjI1NTQxNDIz
NjY4MzZjNzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTg2LDYgKzg2LDcgQEAg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCgpCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjppbml0aWFsaXplKEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYmIGF0dHJpYnV0ZXMpCiB7CiAgICAgYXNzZXJ0SXNNYWluUnVuTG9vcCgpOworICAg
IG1fc3RyZWFtQ29ubmVjdGlvbi0+b3BlbigpOwogICAgIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
U3RyZWFtV29ya1F1ZXVlKCkuZGlzcGF0Y2goW2F0dHJpYnV0ZXMgPSBXVEZNb3ZlKGF0dHJpYnV0
ZXMpLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oKSBtdXRhYmxlIHsKICAgICAgICAg
cHJvdGVjdGVkVGhpcy0+d29ya1F1ZXVlSW5pdGlhbGl6ZShXVEZNb3ZlKGF0dHJpYnV0ZXMpKTsK
ICAgICB9KTsKQEAgLTk1LDYgKzk2LDcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
aW5pdGlhbGl6ZShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGUKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMPiYmIHJlZkZyb21Db25uZWN0aW9uKQogewogICAgIGFzc2VydElzTWFp
blJ1bkxvb3AoKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKICAgICBt
X3N0cmVhbUNvbm5lY3Rpb24tPnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIudG9VSW50NjQoKSk7CiAgICAgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xT
dHJlYW1Xb3JrUXVldWUoKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocmVmRnJv
bUNvbm5lY3Rpb24pXSgpIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+d29ya1F1ZXVlVW5pbml0
aWFsaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggZDM2Y2M0MDI3ZDI2MjYzYzBm
NDgwOWQ4MDFjOWIyMDgwZjJmZGExZS4uZDVjYzA5OTljNmEzYjIzZTcyZTViYmFmNDMzNjQ2ZTUx
YzI0MTdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtNzYsMTYgKzc2LDE2IEBACiBu
YW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZD4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiBjcmVhdGlvblBhcmFtZXRlcnMsIElQQzo6
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbUJ1ZmZlcikKK1JlZjxSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIGNyZWF0aW9uUGFyYW1ldGVycywgSVBDOjpBdHRhY2ht
ZW50JiYgY29ubmVjdGlvbklkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYm
IHN0cmVhbUJ1ZmZlcikKIHsKLSAgICBhdXRvIGluc3RhbmNlID0gYWRvcHRSZWYoKm5ldyBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFdURk1vdmUoY3Jl
YXRpb25QYXJhbWV0ZXJzKSwgV1RGTW92ZShzdHJlYW1CdWZmZXIpKSk7CisgICAgYXV0byBpbnN0
YW5jZSA9IGFkb3B0UmVmKCpuZXcgUmVtb3RlUmVuZGVyaW5nQmFja2VuZChncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLCBXVEZNb3ZlKGNyZWF0aW9uUGFyYW1ldGVycyksIFdURk1vdmUoY29ubmVj
dGlvbklkZW50aWZpZXIpLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlcikpKTsKICAgICBpbnN0YW5jZS0+
c3RhcnRMaXN0ZW5pbmdGb3JJUEMoKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKLVJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIGNyZWF0aW9uUGFyYW1ldGVycywgSVBDOjpTdHJlYW1D
b25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtQnVmZmVyKQorUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0
ZXJzJiYgY3JlYXRpb25QYXJhbWV0ZXJzLCBJUEM6OkF0dGFjaG1lbnQmJiBjb25uZWN0aW9uSWRl
bnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtQnVmZmVyKQogICAg
IDogbV93b3JrUXVldWUoSVBDOjpTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpjcmVhdGUoIlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQgd29yayBxdWV1ZSIpKQotICAgICwgbV9zdHJlYW1Db25uZWN0
aW9uKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRlKGdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY29ubmVjdGlvbigpLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlciksIG1fd29ya1F1ZXVl
LmdldCgpKSkKKyAgICAsIG1fc3RyZWFtQ29ubmVjdGlvbihJUEM6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb246OmNyZWF0ZVdpdGhEZWRpY2F0ZWRDb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbklk
ZW50aWZpZXIpLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlciksIG1fd29ya1F1ZXVlLmdldCgpKSkKICAg
ICAsIG1fcmVtb3RlUmVzb3VyY2VDYWNoZShncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLndlYlBy
b2Nlc3NJZGVudGlmaWVyKCkpCiAgICAgLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcykKICAgICAsIG1fcmVzb3VyY2VPd25lcihncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLndlYlByb2Nlc3NJZGVudGl0eSgpKQpAQCAtMTAzLDE3ICsxMDMsMTUg
QEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdGFydExpc3RlbmluZ0ZvcklQQygpCiAg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3JlbW90ZURpc3BsYXlMaXN0c0xvY2sgfTsKICAgICAg
ICAgbV9jYW5SZWdpc3RlclJlbW90ZURpc3BsYXlMaXN0cyA9IHRydWU7CiAgICAgfQotCiAgICAg
bV9zdHJlYW1Db25uZWN0aW9uLT5zdGFydFJlY2VpdmluZ01lc3NhZ2VzKCp0aGlzLCBNZXNzYWdl
czo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3JlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0KCkpOwotICAgIC8vIFJlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXIgbWVzc2FnZXMgZGVwZW5kIG9uIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIGJl
Y2F1c2UgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBjcmVhdGVzIFJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXIgYW5kCi0gICAgLy8gbWFrZXMgYSByZWNlaXZlIHF1ZXVlIGZvciBpdC4gSW4gb3JkZXIg
dG8gZ3VhcmFudGVlIGNvcnJlY3Qgb3JkZXJpbmcsIGVuc3VyZSB0aGF0IGFsbCBSZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyIG1lc3NhZ2VzIGFyZSBwcm9jZXNzZWQgaW4KLSAgICAvLyB0aGUgc2Ft
ZSBzZXF1ZW5jZSBhcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIG1lc3NhZ2VzLgotICAgIG1fc3Ry
ZWFtQ29ubmVjdGlvbi0+c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyhNZXNzYWdlczo6UmVtb3RlRGlz
cGxheUxpc3RSZWNvcmRlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAgICBtX3N0cmVhbUNv
bm5lY3Rpb24tPm9wZW4oKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdG9w
TGlzdGVuaW5nRm9ySVBDKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAg
IG1fc3RyZWFtQ29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOworICAgIG1fc3RyZWFtQ29ubmVjdGlv
bi0+c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIudG9V
SW50NjQoKSk7CiAKICAgICAvLyBUaGlzIGl0ZW0gaXMgZGlzcGF0Y2hlZCB0byB0aGUgV29ya1F1
ZXVlIGJlZm9yZSBjYWxsaW5nIHN0b3BBbmRXYWl0Rm9yQ29tcGxldGlvbigpIHN1Y2ggdGhhdCBp
dCB3aWxsIHByb2Nlc3MgaXQgbGFzdCwgYWZ0ZXIgYW55IGV4aXN0aW5nIHdvcmsuCiAgICAgbV93
b3JrUXVldWUtPmRpc3BhdGNoKFsmXSB7CkBAIC0xMjQsOCArMTIyLDYgQEAgdm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpzdG9wTGlzdGVuaW5nRm9ySVBDKCkKICAgICB9KTsKICAgICBtX3dv
cmtRdWV1ZS0+c3RvcEFuZFdhaXRGb3JDb21wbGV0aW9uKCk7CiAKLSAgICBtX3N0cmVhbUNvbm5l
Y3Rpb24tPnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
LnRvVUludDY0KCkpOwotICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RvcFJlY2VpdmluZ01lc3Nh
Z2VzKE1lc3NhZ2VzOjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpOwogCiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9yZW1vdGVEaXNwbGF5
TGlzdHNMb2NrIH07CkBAIC0xNDIsNyArMTM4LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKIAogSVBDOjpDb25uZWN0aW9u
KiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuICZtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24o
KTsKKyAgICByZXR1cm4gJm1fc3RyZWFtQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpOwogfQogCiB1
aW50NjRfdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCBmNDM4M2JlZmZlNDcyNTU5ZTU1NDRm
M2JhNGVjNzBiZjVhNTRiNDk0Li40ZTRhMjcwNmQ0MTRiODFkZjQ3OTJkNDkyMTJjODc1YjQ1ZDJm
ZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTc1LDcgKzc1LDcgQEAgZW51bSBjbGFzcyBT
d2FwQnVmZmVyc0Rpc3BsYXlSZXF1aXJlbWVudCA6IHVpbnQ4X3Q7CiAKIGNsYXNzIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQgOiBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6
U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmLCBJUEM6OlN0cmVhbUNvbm5lY3Rp
b25CdWZmZXImJik7CisgICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBjcmVh
dGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVh
dGlvblBhcmFtZXRlcnMmJiwgSVBDOjpBdHRhY2htZW50JiYsIElQQzo6U3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlciYmKTsKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kKCk7CiAgICAg
dm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBDKCk7CiAKQEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgcGVyZm9ybVdpdGhNZWRpYVBsYXllck9uTWFpblRocmVhZChXZWJDb3JlOjpNZWRp
YVBsYXllcklkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6TWVkaWFQbGF5ZXImKT4m
Jik7CiAKIHByaXZhdGU6Ci0gICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYm
LCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisgICAgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENy
ZWF0aW9uUGFyYW1ldGVycyYmLCBJUEM6OkF0dGFjaG1lbnQmJiwgSVBDOjpTdHJlYW1Db25uZWN0
aW9uQnVmZmVyJiYpOwogICAgIHZvaWQgc3RhcnRMaXN0ZW5pbmdGb3JJUEMoKTsKIAogICAgIHN0
ZDo6b3B0aW9uYWw8U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+IHVwZGF0ZVNoYXJlZE1lbW9yeUZv
ckdldFBpeGVsQnVmZmVySGVscGVyKHNpemVfdCBieXRlQ291bnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuY3BwCmluZGV4
IGRmNTIzODRlMzliMTQ0Njc4YTVkMjY1MmU3ZDZkZWM1NTk2MGQ2ODAuLjFiMDc3Yjg5NGFiYWQx
NmRmNDA1ZGZkYWVlNmZlZmZkZjA2ZTBlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5jcHAKQEAgLTYwLDYgKzYwLDcg
QEAgUmVtb3RlR1BVOjp+UmVtb3RlR1BVKCkgPSBkZWZhdWx0Owogdm9pZCBSZW1vdGVHUFU6Omlu
aXRpYWxpemUoKQogewogICAgIGFzc2VydElzTWFpblJ1bkxvb3AoKTsKKyAgICBtX3N0cmVhbUNv
bm5lY3Rpb24tPm9wZW4oKTsKICAgICB3b3JrUXVldWUoKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH1dKCkgbXV0YWJsZSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPndv
cmtRdWV1ZUluaXRpYWxpemUoKTsKICAgICB9KTsKQEAgLTY5LDYgKzcwLDcgQEAgdm9pZCBSZW1v
dGVHUFU6OmluaXRpYWxpemUoKQogdm9pZCBSZW1vdGVHUFU6OnN0b3BMaXN0ZW5pbmdGb3JJUEMo
UmVmPFJlbW90ZUdQVT4mJiByZWZGcm9tQ29ubmVjdGlvbikKIHsKICAgICBhc3NlcnRJc01haW5S
dW5Mb29wKCk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9z
dHJlYW1Db25uZWN0aW9uLT5zdG9wUmVjZWl2aW5nTWVzc2FnZXMoTWVzc2FnZXM6OlJlbW90ZUdQ
VTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiAgICAg
d29ya1F1ZXVlKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHJlZkZyb21Db25u
ZWN0aW9uKV0oKSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPndvcmtRdWV1ZVVuaW5pdGlhbGl6
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2Vp
dmVRdWV1ZU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2
ZVF1ZXVlTWFwLmNwcAppbmRleCA1ODJkMjc4MTk5OTE1N2ZkMjMzNDE5NjcxN2MzODBkYTdmMDMw
MzMxLi5jMzMwNDAxYzUxYjhhZGZiOWI3NWI5NjU2MzEyYTA3N2ZmNzIyZDdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNw
cApAQCAtMzksMTAgKzM5LDcgQEAgdm9pZCBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwOjphZGRJbXBs
KFN0b3JlVHlwZSYmIHF1ZXVlLCBjb25zdCBSZWNlaXZlck1hdGNoZXImIG0KICAgICB1aW50OF90
IHJlY2VpdmVyTmFtZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KCptYXRjaGVyLnJlY2VpdmVyTmFt
ZSk7CiAgICAgaWYgKCFtYXRjaGVyLmRlc3RpbmF0aW9uSUQuaGFzX3ZhbHVlKCkpIHsKICAgICAg
ICAgYXV0byByZXN1bHQgPSBtX2FueUlEUXVldWVzLmFkZChyZWNlaXZlck5hbWUsIFdURk1vdmUo
cXVldWUpKTsKLSAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICAgICAg
Ly8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGFuIGFzc2VydGlvbi4gU2VlIHdlYmtpdC5vcmcvYi8y
Mzc2NzQgYW5kIHdlYmtpdC5vcmcvYi8yMzgzOTEuCi0gICAgICAgICAgICBBTFdBWVNfTE9HX1dJ
VEhfU1RSRUFNKHN0cmVhbSA8PCAiTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6YWRkSW1wbCAtIGFk
ZGluZyBkdXBsaWNhdGUgYW55IGlkIHJlY2VpdmVyICIgPDwgc3RhdGljX2Nhc3Q8dWludDhfdD4o
cmVjZWl2ZXJOYW1lKSk7Ci0gICAgICAgIH0KKyAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdC5pc05ld0VudHJ5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRvIHJl
c3VsdCA9IG1fcXVldWVzLmFkZChzdGQ6Om1ha2VfcGFpcihyZWNlaXZlck5hbWUsICptYXRjaGVy
LmRlc3RpbmF0aW9uSUQpLCBXVEZNb3ZlKHF1ZXVlKSk7CkBAIC01OSwxMCArNTYsNyBAQCB2b2lk
IE1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OnJlbW92ZShjb25zdCBSZWNlaXZlck1hdGNoZXImIG1h
dGNoZXIpCiAgICAgdWludDhfdCByZWNlaXZlck5hbWUgPSBzdGF0aWNfY2FzdDx1aW50OF90Pigq
bWF0Y2hlci5yZWNlaXZlck5hbWUpOwogICAgIGlmICghbWF0Y2hlci5kZXN0aW5hdGlvbklELmhh
c192YWx1ZSgpKSB7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9hbnlJRFF1ZXVlcy5yZW1vdmUo
cmVjZWl2ZXJOYW1lKTsKLSAgICAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICAgICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIGJlIGFuIGFzc2VydGlvbi4gU2VlIHdlYmtpdC5vcmcvYi8yMzc2NzQg
YW5kIHdlYmtpdC5vcmcvYi8yMzgzOTEuCi0gICAgICAgICAgICBBTFdBWVNfTE9HX1dJVEhfU1RS
RUFNKHN0cmVhbSA8PCAiTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6YWRkSW1wbCAtIGFkZGluZyBk
dXBsaWNhdGUgYW55IGlkIHJlY2VpdmVyICIgPDwgc3RhdGljX2Nhc3Q8dWludDhfdD4ocmVjZWl2
ZXJOYW1lKSk7Ci0gICAgICAgIH0KKyAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byByZXN1bHQgPSBtX3F1ZXVlcy5y
ZW1vdmUoc3RkOjptYWtlX3BhaXIocmVjZWl2ZXJOYW1lLCAqbWF0Y2hlci5kZXN0aW5hdGlvbklE
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENv
bm5lY3Rpb24uY3BwCmluZGV4IGIxMDFlMDJmZGI1ZTVhNGE1Njg2MWRjN2VlYmYxYmEyYTFjZTJi
OTkuLjY5OWUzMTJkMzRkNDM1NDY0ZGNjMzU3YWU4YjVmMzg3ZjhlNDMwNTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3Bw
CkBAIC0yOCw4ICsyOCw0MSBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIAotU3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBz
aXplX3Qgc2l6ZSkKLSAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQorY2xhc3MgU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbjo6RGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudCBmaW5hbCA6IHB1Ymxp
YyBDb25uZWN0aW9uOjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKERlZGljYXRlZENvbm5lY3Rpb25DbGllbnQpOworcHVibGlj
OgorICAgIERlZGljYXRlZENvbm5lY3Rpb25DbGllbnQoTWVzc2FnZVJlY2VpdmVyJiByZWNlaXZl
cikKKyAgICAgICAgOiBtX3JlY2VpdmVyKHJlY2VpdmVyKQorICAgIHsKKyAgICB9CisgICAgLy8g
Q29ubmVjdGlvbjo6Q2xpZW50LgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29ubmVjdGlv
biYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlcikgZmluYWwgeyBtX3JlY2VpdmVyLmRpZFJl
Y2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9CisgICAgYm9vbCBkaWRSZWNlaXZl
U3luY01lc3NhZ2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlciwgVW5p
cXVlUmVmPEVuY29kZXI+JiByZXBseUVuY29kZXIpIGZpbmFsIHsgcmV0dXJuIG1fcmVjZWl2ZXIu
ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7
IH0KKyAgICB2b2lkIGRpZENsb3NlKENvbm5lY3Rpb24mKSBmaW5hbCB7IH0gLy8gQ2xpZW50IGlz
IGV4cGVjdGVkIHRvIGxpc3RlbiB0byBDb25uZWN0aW9uOjpkaWRDbG9zZSgpIGZyb20gdGhlIGNv
bm5lY3Rpb24gaXQgc2VudCB0byB0aGUgZGVkaWNhdGVkIGNvbm5lY3Rpb24gdG8uCisgICAgdm9p
ZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoQ29ubmVjdGlvbiYsIE1lc3NhZ2VOYW1lKSBmaW5h
bCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9IC8vIFRoZSBzZW5kZXIgaXMgZXhwZWN0ZWQgdG8g
YmUgdHJ1c3RlZCwgc28gYWxsIGludmFsaWQgbWVzc2FnZXMgYXJlIHByb2dyYW1taW5nIGVycm9y
cy4KK3ByaXZhdGU6CisgICAgTWVzc2FnZVJlY2VpdmVyJiBtX3JlY2VpdmVyOworfTsKKworU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3RyZWFtQ29ubmVjdGlvbldpdGhEZWRpY2F0ZWRDb25uZWN0
aW9uIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OmNyZWF0ZVdpdGhEZWRpY2F0ZWRDb25uZWN0aW9u
KE1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIsIHNpemVfdCBidWZmZXJTaXplKQoreworICAgIGF1
dG8gY29ubmVjdGlvbklkZW50aWZpZXJzID0gQ29ubmVjdGlvbjo6Y3JlYXRlQ29ubmVjdGlvbklk
ZW50aWZpZXJQYWlyKCk7CisgICAgLy8gQ3JlYXRlIFN0cmVhbUNsaWVudENvbm5lY3Rpb24gd2l0
aCAic2VydmVyIiB0eXBlIENvbm5lY3Rpb24uIFRoZSBjYWxsZXIgd2lsbCBzZW5kIHRoZSAiY2xp
ZW50IiB0eXBlIGNvbm5lY3Rpb24gaWRlbnRpZmllciB2aWEKKyAgICAvLyBJUEMgdG8gdGhlIG90
aGVyIHNpZGUsIHdoZXJlIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24gd2lsbCBiZSBjcmVhdGVkIHdp
dGggImNsaWVudCIgdHlwZSBDb25uZWN0aW9uLgorICAgIC8vIEZvciBDb25uZWN0aW9uLCAic2Vy
dmVyIiBtZWFucyB0aGUgY29ubmVjdGlvbiB3aGljaCB3YXMgY3JlYXRlZCBmaXJzdCwgdGhlIGNv
bm5lY3Rpb24gd2hpY2ggaXMgbm90IHNlbnQgdGhyb3VnaCBJUEMgdG8gb3RoZXIgcGFydHkuCisg
ICAgLy8gRm9yIENvbm5lY3Rpb24sICJjbGllbnQiIG1lYW5zIHRoZSBjb25uZWN0aW9uIHdoaWNo
IHdhcyBlc3RhYmxpc2hlZCBieSByZWNlaXZpbmcgaXQgdGhyb3VnaCBJUEMgYW5kIGNyZWF0aW5n
IElQQzo6Q29ubmVjdGlvbiBvdXQgZnJvbSB0aGUgaWRlbnRpZmllci4KKyAgICAvLyBGb3IgU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbiwgIkNsaWVudCIgbWVhbnMgdGhlIHBhcnR5IHRoYXQgbW9zdGx5
IGRvZXMgc2VuZGluZywgZS5nLiB1bnRydXN0ZWQgcGFydHkuCisgICAgLy8gRm9yIFN0cmVhbVNl
cnZlckNvbm5lY3Rpb24sICJTZXJ2ZXIiIG1lYW5zIHRoZSBwYXJ0eSB0aGF0IG1vc3RseSBkb2Vz
IHJlY2VpdmluZywgZS5nLiB0aGUgdHJ1c3RlZCBwYXJ0eSB3aGljaCBob2xkcyB0aGUgZGVzdGlu
YXRpb24gb2JqZWN0IHRvIGNvbW11bmljYXRlIHdpdGguCisgICAgYXV0byBkZWRpY2F0ZWRDb25u
ZWN0aW9uQ2xpZW50ID0gbWFrZVVuaXF1ZTxEZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50PihyZWNl
aXZlcik7CisgICAgYXV0byBkZWRpY2F0ZWRDb25uZWN0aW9uID0gQ29ubmVjdGlvbjo6Y3JlYXRl
U2VydmVyQ29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllcnMtPnNlcnZlciwgKmRlZGljYXRl
ZENvbm5lY3Rpb25DbGllbnQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTdHJlYW1DbGllbnRDb25u
ZWN0aW9uPiBzdHJlYW1Db25uZWN0aW9uIHsgbmV3IFN0cmVhbUNsaWVudENvbm5lY3Rpb24oV1RG
TW92ZShkZWRpY2F0ZWRDb25uZWN0aW9uKSwgYnVmZmVyU2l6ZSwgV1RGTW92ZShkZWRpY2F0ZWRD
b25uZWN0aW9uQ2xpZW50KSkgfTsKKyAgICByZXR1cm4geyBXVEZNb3ZlKHN0cmVhbUNvbm5lY3Rp
b24pLCBjb25uZWN0aW9uSWRlbnRpZmllcnMtPmNsaWVudCB9OworfQorCitTdHJlYW1DbGllbnRD
b25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKFJlZjxDb25uZWN0aW9uPiYmIGNvbm5l
Y3Rpb24sIHNpemVfdCBzaXplLCBzdGQ6OnVuaXF1ZV9wdHI8RGVkaWNhdGVkQ29ubmVjdGlvbkNs
aWVudD4mJiBkZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50KQorICAgIDogbV9jb25uZWN0aW9uKFdU
Rk1vdmUoY29ubmVjdGlvbikpCisgICAgLCBtX2RlZGljYXRlZENvbm5lY3Rpb25DbGllbnQoV1RG
TW92ZShkZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50KSkKICAgICAsIG1fYnVmZmVyKHNpemUpCiB7
CiAgICAgLy8gUmVhZCBzdGFydHMgZnJvbSAwIHdpdGggbGltaXQgb2YgMCBhbmQgcmVhZGVyIHNs
ZWVwaW5nLgpAQCAtMzgsNiArNzEsMjggQEAgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3RyZWFt
Q2xpZW50Q29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBzaXplX3Qgc2kKICAgICBz
aGFyZWRDbGllbnRMaW1pdCgpLnN0b3JlKHN0YXRpY19jYXN0PENsaWVudExpbWl0PigwKSwgc3Rk
OjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CiB9CiAKK1N0cmVhbUNsaWVudENvbm5lY3Rpb246OlN0
cmVhbUNsaWVudENvbm5lY3Rpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgc2l6ZV90IGJ1ZmZl
clNpemUpCisgICAgOiBTdHJlYW1DbGllbnRDb25uZWN0aW9uKFJlZiB7IGNvbm5lY3Rpb24gfSwg
YnVmZmVyU2l6ZSwgeyB9KQoreworfQorCitTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp+U3RyZWFt
Q2xpZW50Q29ubmVjdGlvbigpCit7CisgICAgQVNTRVJUKCFtX2RlZGljYXRlZENvbm5lY3Rpb25D
bGllbnQgfHwgIW1fY29ubmVjdGlvbi0+aXNWYWxpZCgpKTsKK30KKwordm9pZCBTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjpvcGVuKCkKK3sKKyAgICBpZiAobV9kZWRpY2F0ZWRDb25uZWN0aW9uQ2xp
ZW50KQorICAgICAgICBtX2Nvbm5lY3Rpb24tPm9wZW4oKTsKK30KKwordm9pZCBTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjppbnZhbGlkYXRlKCkKK3sKKyAgICBpZiAobV9kZWRpY2F0ZWRDb25uZWN0
aW9uQ2xpZW50KQorICAgICAgICBtX2Nvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKK30KKwogdm9p
ZCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZXRXYWtlVXBTZW1hcGhvcmUoSVBDOjpTZW1hcGhv
cmUmJiBzZW1hcGhvcmUpCiB7CiAgICAgbV93YWtlVXBTZW1hcGhvcmUgPSBXVEZNb3ZlKHNlbWFw
aG9yZSk7CkBAIC04Myw0ICsxMzgsOSBAQCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiBTdHJlYW1D
bGllbnRDb25uZWN0aW9uOjpidWZmZXJGb3JUZXN0aW5nKCkKICAgICByZXR1cm4gbV9idWZmZXI7
CiB9CiAKK0Nvbm5lY3Rpb24mIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OmNvbm5lY3Rpb25Gb3JU
ZXN0aW5nKCkKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOworfQorCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmgK
aW5kZXggMmI0N2UyNWVjYmMxMTgyNDkxZDJkZmRlNzI4MGQ3YmMzMDUxMWU3NC4uNGU0MjBkNGZm
NjE1YjU3MGVlMGI1MjI2OTI4OWIzNDY4MDFmNzdmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaApAQCAtNTcsOCArNTcsMzEg
QEAgY2xhc3MgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3RyZWFtQ2xpZW50Q29ubmVj
dGlvbik7CiBwdWJsaWM6CisgICAgLy8gQ3JlYXRlcyBTdHJlYW1DbGllbnRDb25uZWN0aW9uIHdo
ZXJlIHRoZSBvdXQgb2Ygc3RyZWFtIG1lc3NhZ2VzIGFuZCBzZXJ2ZXIgcmVwbGllcyBhcmUKKyAg
ICAvLyBzZW50IHRocm91Z2ggdGhlIHBhc3NlZCBJUEM6OkNvbm5lY3Rpb24uIFRoZSBtZXNzYWdl
cyBmcm9tIHRoZSBzZXJ2ZXIgYXJlIGRlbGl2ZXJlZCB0bworICAgIC8vIHRoZSBjYWxsZXIgdGhy
b3VnaCB0aGUgcGFzc2VkIElQQzo6Q29ubmVjdGlvbi4KKyAgICAvLyBOb3RlOiBUaGlzIGZ1bmN0
aW9uIHNob3VsZCBiZSB1c2VkIG9ubHkgaW4gY2FzZXMgd2hlcmUgdGhlCisgICAgLy8gc3RyZWFt
IHNlcnZlciBzdGFydHMgbGlzdGVuaW5nIHRvIG1lc3NhZ2VzIHdpdGggbmV3IGlkZW50aWZpZXJz
IG9uIHRoZSBzYW1lIHRocmVhZCBhcworICAgIC8vIGluIHdoaWNoIHRoZSBzZXJ2ZXIgSVBDOjpD
b25uZWN0aW9uIGRpc3BhdGNoIG1lc3NhZ2VzLiBBdCB0aGUgdGltZSBvZiB3cml0aW5nLAorICAg
IC8vIElQQzo6Q29ubmVjdGlvbiBkaXNwYXRjaGVzIG1lc3NhZ2VzIG9ubHkgaW4gbWFpbiB0aHJl
YWQuCiAgICAgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbihDb25uZWN0aW9uJiwgc2l6ZV90IGJ1ZmZl
clNpemUpOwogCisgICAgc3RydWN0IFN0cmVhbUNvbm5lY3Rpb25XaXRoRGVkaWNhdGVkQ29ubmVj
dGlvbiB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTdHJlYW1DbGllbnRDb25uZWN0aW9uPiBz
dHJlYW1Db25uZWN0aW9uOworICAgICAgICBBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVy
OworICAgICAgICAvLyBGSVhNRTogT25jZSBJUEMgY2FuIHRyZWF0IGhhbmRsZXMgYXMgZmlyc3Qg
Y2xhc3Mgb2JqZWN0cywgYWRkIHN0cmVhbSBidWZmZXIgYXMKKyAgICAgICAgLy8gYSBoYW5kbGUg
aGVyZS4KKyAgICB9OworCisgICAgLy8gQ3JlYXRlcyBTdHJlYW1DbGllbnRDb25uZWN0aW9uIHdo
ZXJlIHRoZSBvdXQgb2Ygc3RyZWFtIG1lc3NhZ2VzIGFuZCBzZXJ2ZXIgcmVwbGllcyBhcmUKKyAg
ICAvLyBzZW50IHRocm91Z2ggYSBkZWRpZGNhdGVkLCBuZXcgSVBDOjpDb25uZWN0aW9uLiBUaGUg
bWVzc2FnZXMgZnJvbSB0aGUgc2VydmVyIGFyZSBkZWxpdmVyZWQgdG8KKyAgICAvLyB0aGUgY2Fs
bGVyIHRocm91Z2ggdGhlIHBhc3NlZCBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KKyAgICAvLyBUaGUg
Y2FsbGVyIHNob3VsZCBzZW5kIFN0cmVhbUNvbm5lY3Rpb25XaXRoRGVkaWNhdGVkQ29ubmVjdGlv
bjo6Y29ubmVjdGlvbklkZW50aWZpZXIgYW5kCisgICAgLy8gU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6c3RyZWFtQnVmZmVyKCkgdG8gdGhlIHNlcnZlciB2aWEgYW4gZXhpc3RpbmcgSVBDOjpDb25u
ZWN0aW9uLgorICAgIHN0YXRpYyBTdHJlYW1Db25uZWN0aW9uV2l0aERlZGljYXRlZENvbm5lY3Rp
b24gY3JlYXRlV2l0aERlZGljYXRlZENvbm5lY3Rpb24oTWVzc2FnZVJlY2VpdmVyJiwgc2l6ZV90
IGJ1ZmZlclNpemUpOworCisgICAgflN0cmVhbUNsaWVudENvbm5lY3Rpb24oKTsKKwogICAgIFN0
cmVhbUNvbm5lY3Rpb25CdWZmZXImIHN0cmVhbUJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9
CiAgICAgdm9pZCBzZXRXYWtlVXBTZW1hcGhvcmUoSVBDOjpTZW1hcGhvcmUmJik7CiAgICAgYm9v
bCBoYXNXYWtlVXBTZW1hcGhvcmUoKSBjb25zdCB7IHJldHVybiBtX3dha2VVcFNlbWFwaG9yZS5o
YXNfdmFsdWUoKTsgfQpAQCAtNzAsNiArOTMsOSBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZvaWQg
c2VuZERlZmVycmVkV2FrZVVwTWVzc2FnZUlmTmVlZGVkKCk7CiAKKyAgICB2b2lkIG9wZW4oKTsK
KyAgICB2b2lkIGludmFsaWRhdGUoKTsKKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+IGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5h
dGlvbklELCBUaW1lb3V0KTsKIAogICAgIHVzaW5nIFNlbmRTeW5jUmVzdWx0ID0gQ29ubmVjdGlv
bjo6U2VuZFN5bmNSZXN1bHQ7CkBAIC04MCw5ICsxMDYsMTEgQEAgcHVibGljOgogICAgIGJvb2wg
d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkoT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5h
dGlvbklELCBUaW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gPSB7IH0pOwogCiAgICAg
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYgYnVmZmVyRm9yVGVzdGluZygpOworICAgIENvbm5lY3Rp
b24mIGNvbm5lY3Rpb25Gb3JUZXN0aW5nKCk7CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNz
IFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6SlNJUENTdHJlYW1DbGllbnRDb25uZWN0aW9uOworICAg
IGNsYXNzIERlZGljYXRlZENvbm5lY3Rpb25DbGllbnQ7CisgICAgU3RyZWFtQ2xpZW50Q29ubmVj
dGlvbihSZWY8Q29ubmVjdGlvbj4mJiwgc2l6ZV90IGJ1ZmZlclNpemUsIHN0ZDo6dW5pcXVlX3B0
cjxEZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50PiYmKTsKIAogICAgIHN0cnVjdCBTcGFuIHsKICAg
ICAgICAgdWludDhfdCogZGF0YTsKQEAgLTEyMiwxNCArMTUwLDE2IEBAIHByaXZhdGU6CiAgICAg
dWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQogICAgIHNp
emVfdCBkYXRhU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGFTaXplKCk7IH0KIAot
ICAgIENvbm5lY3Rpb24mIG1fY29ubmVjdGlvbjsKKyAgICBSZWY8Q29ubmVjdGlvbj4gbV9jb25u
ZWN0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50PiBt
X2RlZGljYXRlZENvbm5lY3Rpb25DbGllbnQ7CiAgICAgdWludDY0X3QgbV9jdXJyZW50RGVzdGlu
YXRpb25JRCB7IDAgfTsKLQogICAgIHNpemVfdCBtX2NsaWVudE9mZnNldCB7IDAgfTsKICAgICBT
dHJlYW1Db25uZWN0aW9uQnVmZmVyIG1fYnVmZmVyOwogICAgIHN0ZDo6b3B0aW9uYWw8U2VtYXBo
b3JlPiBtX3dha2VVcFNlbWFwaG9yZTsKICAgICB1bnNpZ25lZCBtX3JlbWFpbmluZ01lc3NhZ2VD
b3VudEJlZm9yZVNlbmRpbmdXYWtlVXAgeyAwIH07CiAgICAgdW5zaWduZWQgbV93YWtlVXBNZXNz
YWdlSHlzdGVyZXNpcyB7IDAgfTsKKworICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6OklQQ1Rlc3Rp
bmdBUEk6OkpTSVBDU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjsKIH07CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+CkBAIC0xNDYsNyArMTc2LDcgQEAgYm9vbCBTdHJlYW1DbGllbnRD
b25uZWN0aW9uOjpzZW5kKFQmJiBtZXNzYWdlLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0
aW9uSUQKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBzZW5kUHJvY2Vzc091
dE9mU3RyZWFtTWVzc2FnZShXVEZNb3ZlKCpzcGFuKSk7Ci0gICAgaWYgKCFtX2Nvbm5lY3Rpb24u
c2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBkZXN0aW5hdGlvbklELCBJUEM6OlNlbmRPcHRpb246OkRp
c3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSkpCisgICAgaWYgKCFtX2Nv
bm5lY3Rpb24tPnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgZGVzdGluYXRpb25JRCwgSVBDOjpTZW5k
T3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xODEsMTMgKzIxMSwx
MyBAQCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBTdHJlYW1DbGllbnRD
b25uZWN0aW9uOjpzZW5kU3luYyhUJiYgbWVzcwogICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUo
Km1heWJlU2VuZFJlc3VsdCk7CiAgICAgfQogICAgIHNlbmRQcm9jZXNzT3V0T2ZTdHJlYW1NZXNz
YWdlKFdURk1vdmUoKnNwYW4pKTsKLSAgICByZXR1cm4gbV9jb25uZWN0aW9uLnNlbmRTeW5jKFdU
Rk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCks
IHRpbWVvdXQpOworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jKFdURk1vdmUobWVz
c2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHRpbWVvdXQp
OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgogYm9vbCBTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseShPYmplY3RJZGVudGlm
aWVyPFU+IGRlc3RpbmF0aW9uSUQsIFRpbWVvdXQgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JP
cHRpb24+IHdhaXRGb3JPcHRpb25zKQogewotICAgIHJldHVybiBtX2Nvbm5lY3Rpb24ud2FpdEZv
ckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8VD4oZGVzdGluYXRpb25JRCwgdGltZW91dCwgd2FpdEZv
ck9wdGlvbnMpOworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaElt
bWVkaWF0ZWx5PFQ+KGRlc3RpbmF0aW9uSUQsIHRpbWVvdXQsIHdhaXRGb3JPcHRpb25zKTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTE5NSw4ICsyMjUsOCBAQCBzdGQ6Om9wdGlvbmFs
PFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0PiBTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjp0cgogewogICAgIC8vIEluIHRoaXMgZnVuY3Rpb24sIFNlbmRTeW5jUmVzdWx0IHsg
fSBtZWFucyBlcnJvciBoYXBwZW5lZCBhbmQgY2FsbGVyIHNob3VsZCBzdG9wIHByb2Nlc3Npbmcu
CiAgICAgLy8gc3RkOjpudWxsb3B0IG1lYW5zIHdlIGNvdWxkbid0IHNlbmQgdGhyb3VnaCB0aGUg
c3RyZWFtLCBzbyB0cnkgc2VuZGluZyBvdXQgb2Ygc3RyZWFtLgotICAgIGF1dG8gc3luY1JlcXVl
c3RJRCA9IG1fY29ubmVjdGlvbi5tYWtlU3luY1JlcXVlc3RJRCgpOwotICAgIGlmICghbV9jb25u
ZWN0aW9uLnB1c2hQZW5kaW5nU3luY1JlcXVlc3RJRChzeW5jUmVxdWVzdElEKSkKKyAgICBhdXRv
IHN5bmNSZXF1ZXN0SUQgPSBtX2Nvbm5lY3Rpb24tPm1ha2VTeW5jUmVxdWVzdElEKCk7CisgICAg
aWYgKCFtX2Nvbm5lY3Rpb24tPnB1c2hQZW5kaW5nU3luY1JlcXVlc3RJRChzeW5jUmVxdWVzdElE
KSkKICAgICAgICAgcmV0dXJuIFNlbmRTeW5jUmVzdWx0IHsgfTsKIAogICAgIGF1dG8gcmVzdWx0
ID0gWyZdKCkgLT4gc3RkOjpvcHRpb25hbDxTZW5kU3luY1Jlc3VsdD4gewpAQCAtMjIwLDkgKzI1
MCw5IEBAIHN0ZDo6b3B0aW9uYWw8U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1
bHQ+IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyCiAgICAgICAgICAgICB9CiAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAgbV9jbGllbnRPZmZzZXQgPSAwOwotICAgICAgICByZXR1cm4gbV9j
b25uZWN0aW9uLndhaXRGb3JTeW5jUmVwbHkoc3luY1JlcXVlc3RJRCwgVDo6bmFtZSgpLCB0aW1l
b3V0LCB7IH0pOworICAgICAgICByZXR1cm4gbV9jb25uZWN0aW9uLT53YWl0Rm9yU3luY1JlcGx5
KHN5bmNSZXF1ZXN0SUQsIFQ6Om5hbWUoKSwgdGltZW91dCwgeyB9KTsKICAgICB9KCk7Ci0gICAg
bV9jb25uZWN0aW9uLnBvcFBlbmRpbmdTeW5jUmVxdWVzdElEKHN5bmNSZXF1ZXN0SUQpOworICAg
IG1fY29ubmVjdGlvbi0+cG9wUGVuZGluZ1N5bmNSZXF1ZXN0SUQoc3luY1JlcXVlc3RJRCk7CiAg
ICAgaWYgKHJlc3VsdCAmJiAqcmVzdWx0KSB7CiAgICAgICAgIGF1dG8mIGRlY29kZXIgPSAqKnJl
c3VsdDsKICAgICAgICAgc3RkOjpvcHRpb25hbDx0eXBlbmFtZSBUOjpSZXBseUFyZ3VtZW50cz4g
cmVwbHlBcmd1bWVudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0
cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDA1NDYzNzJiZmE5MmEzMWFkZmZlODY4ZDEw
Mjk0MjJjZTE5OTA1NmEuLjJhMGMzZGVlM2Y5ZGFhODU4MzhhODNhNzYyZmExNGUwZDgwNDhkNjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5l
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNv
bm5lY3Rpb24uY3BwCkBAIC0yOCwxNCArMjgsODIgQEAKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgiCi0KKyNpbmNsdWRlIDxt
dXRleD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIG5hbWVzcGFjZSBJUEMgewor
bmFtZXNwYWNlIHsKKy8vIFBhcnQgMi4gb2YgdGhlIHdvcmthcm91bmQgZm9yIG5vdCBoYXZpbmcg
bm9uLWRpc3BhdGNoaW5nIENvbm5lY3Rpb24uIFdlIGhhdmUgYSBkdW1teSBDb25uZWN0aW9uOjpD
bGllbnQgd2hpY2ggaXMgZXhwZWN0ZWQgdG8KKy8vIG5ldmVyIGdldCBhbnkgbWVzc2FnZXMuCitj
bGFzcyBEZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50IGZpbmFsIDogcHVibGljIENvbm5lY3Rpb246
OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoRGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudCk7CitwdWJsaWM6CisgICAgRGVkaWNh
dGVkQ29ubmVjdGlvbkNsaWVudCgpID0gZGVmYXVsdDsKKyAgICAvLyBDb25uZWN0aW9uOjpDbGll
bnQuCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBE
ZWNvZGVyJiBkZWNvZGVyKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgYm9v
bCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYg
ZGVjb2RlciwgVW5pcXVlUmVmPEVuY29kZXI+JiByZXBseUVuY29kZXIpIGZpbmFsIHsgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgZGlkQ2xvc2UoQ29ubmVj
dGlvbiYpIGZpbmFsIHsgfSAvLyBDbGllbnQgaXMgZXhwZWN0ZWQgdG8gbGlzdGVuIHRvIENvbm5l
Y3Rpb246OmRpZENsb3NlKCkgZnJvbSB0aGUgY29ubmVjdGlvbiBpdCBzZW50IHRvIHRoZSBkZWRp
Y2F0ZWQgY29ubmVjdGlvbiB0by4KKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShD
b25uZWN0aW9uJiwgTWVzc2FnZU5hbWUpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0g
Ly8gVGhlIHNlbmRlciBpcyBleHBlY3RlZCB0byBiZSB0cnVzdGVkLCBzbyBhbGwgaW52YWxpZCBt
ZXNzYWdlcyBhcmUgcHJvZ3JhbW1pbmcgZXJyb3JzLgorcHJpdmF0ZToKK307CisKK30KKworUmVm
PFN0cmVhbVNlcnZlckNvbm5lY3Rpb24+IFN0cmVhbVNlcnZlckNvbm5lY3Rpb246OmNyZWF0ZShD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtQnVm
ZmVyLCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiB3b3JrUXVldWUpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3RyZWFtU2VydmVyQ29ubmVjdGlvbihSZWYgeyBjb25uZWN0aW9uIH0s
IFdURk1vdmUoc3RyZWFtQnVmZmVyKSwgd29ya1F1ZXVlLCBIYXNEZWRpY2F0ZWRDb25uZWN0aW9u
OjpObykpOworfQorCitSZWY8U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gU3RyZWFtU2VydmVyQ29u
bmVjdGlvbjo6Y3JlYXRlV2l0aERlZGljYXRlZENvbm5lY3Rpb24oQXR0YWNobWVudCYmIGNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtQnVmZmVyLCBT
dHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiB3b3JrUXVldWUpCit7CisjaWYgVVNFKFVOSVhfRE9N
QUlOX1NPQ0tFVFMpCisgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25I
YW5kbGUgeyBjb25uZWN0aW9uSWRlbnRpZmllci5yZWxlYXNlRmlsZURlc2NyaXB0b3IoKSB9Owor
I2VsaWYgT1MoREFSV0lOKQorICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0
aW9uSGFuZGxlIHsgY29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpIH07CisjZWxpZiBPUyhXSU5E
T1dTKQorICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSGFuZGxlIHsg
Y29ubmVjdGlvbklkZW50aWZpZXIuaGFuZGxlKCkgfTsKKyNlbHNlCisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbkhhbmRsZSB7
IH07CisjZW5kaWYKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPERlZGljYXRlZENvbm5l
Y3Rpb25DbGllbnQ+IHNfZGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudDsKKyAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgc19vbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShzX29uY2VGbGFnLCBb
XSB7CisgICAgICAgIHNfZGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudC5jb25zdHJ1Y3QoKTsKKyAg
ICB9KTsKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZUNsaWVu
dENvbm5lY3Rpb24oY29ubmVjdGlvbkhhbmRsZSwgc19kZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50
LmdldCgpKTsKKyAgICBhdXRvIHN0cmVhbUNvbm5lY3Rpb24gPSBhZG9wdFJlZigqbmV3IFN0cmVh
bVNlcnZlckNvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSwgV1RGTW92ZShzdHJlYW1CdWZm
ZXIpLCB3b3JrUXVldWUsIEhhc0RlZGljYXRlZENvbm5lY3Rpb246OlllcykpOworICAgIHJldHVy
biBzdHJlYW1Db25uZWN0aW9uOworfQogCi1TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0cmVhbUNvbm5lY3Rpb25C
dWZmZXImJiBzdHJlYW0sIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmIHdvcmtRdWV1ZSkKLSAg
ICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQorU3RyZWFtU2VydmVyQ29ubmVjdGlvbjo6U3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbihSZWY8Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTdHJlYW1D
b25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtLCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiB3b3Jr
UXVldWUsIEhhc0RlZGljYXRlZENvbm5lY3Rpb24gaGFzRGVkaWNhdGVkQ29ubmVjdGlvbikKKyAg
ICA6IG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQogICAgICwgbV93b3JrUXVldWUo
d29ya1F1ZXVlKQogICAgICwgbV9idWZmZXIoV1RGTW92ZShzdHJlYW0pKQorICAgICwgbV9oYXNE
ZWRpY2F0ZWRDb25uZWN0aW9uKGhhc0RlZGljYXRlZENvbm5lY3Rpb24gPT0gSGFzRGVkaWNhdGVk
Q29ubmVjdGlvbjo6WWVzKQoreworfQorCitTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOjp+U3RyZWFt
U2VydmVyQ29ubmVjdGlvbigpCiB7CisgICAgQVNTRVJUKCFtX2hhc0RlZGljYXRlZENvbm5lY3Rp
b24gfHwgIW1fY29ubmVjdGlvbi0+aXNWYWxpZCgpKTsKK30KKwordm9pZCBTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uOjpvcGVuKCkKK3sKKyAgICBpZiAobV9oYXNEZWRpY2F0ZWRDb25uZWN0aW9uKSB7
CisgICAgICAgIC8vIFBhcnQgMS4gb2YgdGhlIHdvcmthcm91bmQgZm9yIG5vdCBoYXZpbmcgbm9u
LWRpc3BhdGNoaW5nIENvbm5lY3Rpb24uIERpdmVydCBhbGwgbWVzc2FnZXMgdG8gdGhlIHJlY2Vp
dmUgcXVldWUuCisgICAgICAgIG1fY29ubmVjdGlvbi0+YWRkTWVzc2FnZVJlY2VpdmVRdWV1ZSgq
dGhpcywgeyB9KTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5vcGVuKCk7CisgICAgfQorfQorCit2
b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb246OmludmFsaWRhdGUoKQoreworICAgIGlmIChtX2hh
c0RlZGljYXRlZENvbm5lY3Rpb24pIHsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVNZXNz
YWdlUmVjZWl2ZVF1ZXVlKHsgfSk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+aW52YWxpZGF0ZSgp
OworICAgIH0KIH0KIAogdm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOjpzdGFydFJlY2Vpdmlu
Z01lc3NhZ2VzKFN0cmVhbU1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIsIFJlY2VpdmVyTmFtZSBy
ZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCkBAIC00NywzMCArMTE1LDE1IEBA
IHZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyhTdHJl
YW1NZXNzYWdlUmVjZWl2ZXImIHJlY2VpCiAgICAgICAgIG1fcmVjZWl2ZXJzLmFkZChrZXksIHJl
Y2VpdmVyKTsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogQ2FuIHdlIGF2b2lkIHN5bmNocm9ub3Vz
IGRpc3BhdGNoIGhlcmUgYnkgYWRqdXN0aW5nIHRoZSBhc3NlcnRpb24gaW4gYENvbm5lY3Rpb246
OmVucXVldWVNYXRjaGluZ01lc3NhZ2VzVG9NZXNzYWdlUmVjZWl2ZVF1ZXVlYD8KLSAgICBjYWxs
T25NYWluUnVuTG9vcEFuZFdhaXQoWyZdIHsKKyAgICBpZiAoIW1faGFzRGVkaWNhdGVkQ29ubmVj
dGlvbikKICAgICAgICAgbV9jb25uZWN0aW9uLT5hZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKCp0aGlz
LCB7IHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCB9KTsKLSAgICB9KTsKICAgICBtX3dvcmtR
dWV1ZS5hZGRTdHJlYW1Db25uZWN0aW9uKCp0aGlzKTsKIH0KIAotdm9pZCBTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uOjpzdGFydFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyTmFtZSByZWNlaXZlck5h
bWUpCi17Ci0gICAgY2FsbE9uTWFpblJ1bkxvb3BBbmRXYWl0KFsmXSB7Ci0gICAgICAgIG1fY29u
bmVjdGlvbi0+YWRkTWVzc2FnZVJlY2VpdmVRdWV1ZSgqdGhpcywgeyByZWNlaXZlck5hbWUgfSk7
Ci0gICAgfSk7Ci0gICAgbV93b3JrUXVldWUuYWRkU3RyZWFtQ29ubmVjdGlvbigqdGhpcyk7Ci19
Ci0KLXZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjo6c3RvcFJlY2VpdmluZ01lc3NhZ2VzKFJl
Y2VpdmVyTmFtZSByZWNlaXZlck5hbWUpCi17Ci0gICAgbV9jb25uZWN0aW9uLT5yZW1vdmVNZXNz
YWdlUmVjZWl2ZVF1ZXVlKHsgcmVjZWl2ZXJOYW1lIH0pOwotICAgIG1fd29ya1F1ZXVlLnJlbW92
ZVN0cmVhbUNvbm5lY3Rpb24oKnRoaXMpOwotfQotCiB2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rp
b246OnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50
NjRfdCBkZXN0aW5hdGlvbklEKQogewotICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlTWVzc2FnZVJl
Y2VpdmVRdWV1ZSh7IHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCB9KTsKKyAgICBpZiAoIW1f
aGFzRGVkaWNhdGVkQ29ubmVjdGlvbikKKyAgICAgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVNZXNz
YWdlUmVjZWl2ZVF1ZXVlKHsgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEIH0pOwogICAgIG1f
d29ya1F1ZXVlLnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24oKnRoaXMpOwogCiAgICAgYXV0byBrZXkg
PSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihyZWNlaXZlck5hbWUpLCBkZXN0
aW5hdGlvbklEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVh
bVNlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNl
cnZlckNvbm5lY3Rpb24uaAppbmRleCBhYmVmNGVjZmUzZTkzNzhjMTdmYWJlMzRkM2MyNDgzZDE0
MDc0N2JkLi41MjA1ZTZjMWRhMjE1ODliYmZiN2I0NjljYmMzYzUwMzdmYjY0OGNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5o
CkBAIC01MywxOSArNTMsMjUgQEAgY2xhc3MgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTsKIGNs
YXNzIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4sIHByaXZhdGUgTWVzc2FnZVJlY2VpdmVRdWV1
ZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3RyZWFtU2VydmVyQ29ubmVjdGlvbik7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiBjcmVhdGUoQ29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbUJ1ZmZl
ciwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYgd29ya1F1ZXVlKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RyZWFtU2VydmVyQ29ubmVjdGlvbihjb25uZWN0aW9uLCBX
VEZNb3ZlKHN0cmVhbUJ1ZmZlciksIHdvcmtRdWV1ZSkpOwotICAgIH0KLSAgICB+U3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbigpIGZpbmFsID0gZGVmYXVsdDsKKyAgICAvLyBDcmVhdGVzIFN0cmVhbUNs
aWVudENvbm5lY3Rpb24gd2hlcmUgdGhlIG91dCBvZiBzdHJlYW0gbWVzc2FnZXMgYW5kIHNlcnZl
ciByZXBsaWVzIGFyZQorICAgIC8vIHJlY2VpdmVkIHRocm91Z2ggdGhlIHBhc3NlZCBJUEM6OkNv
bm5lY3Rpb24uIFRoZSBtZXNzYWdlcyBmcm9tIHRoZSBzZXJ2ZXIgYXJlIHNlbnQgdG8KKyAgICAv
LyB0aGUgcGFzc2VkIElQQzo6Q29ubmVjdGlvbi4KKyAgICAvLyBOb3RlOiBUaGlzIGZ1bmN0aW9u
IHNob3VsZCBiZSB1c2VkIG9ubHkgaW4gY2FzZXMgd2hlcmUgdGhlCisgICAgLy8gc3RyZWFtIHNl
cnZlciBzdGFydHMgbGlzdGVuaW5nIHRvIG1lc3NhZ2VzIHdpdGggbmV3IGlkZW50aWZpZXJzIG9u
IHRoZSBzYW1lIHRocmVhZCBhcworICAgIC8vIGluIHdoaWNoIHRoZSBzZXJ2ZXIgSVBDOjpDb25u
ZWN0aW9uIGRpc3BhdGNoIG1lc3NhZ2VzLiBBdCB0aGUgdGltZSBvZiB3cml0aW5nLAorICAgIC8v
IElQQzo6Q29ubmVjdGlvbiBkaXNwYXRjaGVzIG1lc3NhZ2VzIG9ubHkgaW4gbWFpbiB0aHJlYWQu
CisgICAgc3RhdGljIFJlZjxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiBjcmVhdGUoQ29ubmVjdGlv
biYsIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYp
OworCisgICAgLy8gQ3JlYXRlcyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHdoZXJlIHRoZSBvdXQg
b2Ygc3RyZWFtIG1lc3NhZ2VzIGFuZCBzZXJ2ZXIgcmVwbGllcyBhcmUKKyAgICAvLyByZWNlaXZl
ZCB0aHJvdWdoIGEgZGVkaWRjYXRlZCwgbmV3IElQQzo6Q29ubmVjdGlvbi4gVGhlIG1lc3NhZ2Vz
IGZyb20gdGhlIHNlcnZlciBhcmUgc2VudCB0bworICAgIC8vIHRoZSBkZWRpY2F0ZWQgY29ubmVj
aXRvbi4KKyAgICBzdGF0aWMgUmVmPFN0cmVhbVNlcnZlckNvbm5lY3Rpb24+IGNyZWF0ZVdpdGhE
ZWRpY2F0ZWRDb25uZWN0aW9uKEF0dGFjaG1lbnQmJiBjb25uZWN0aW9uSWRlbnRpZmllciwgU3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlciYmLCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJik7CisgICAg
flN0cmVhbVNlcnZlckNvbm5lY3Rpb24oKSBmaW5hbDsKIAogICAgIHZvaWQgc3RhcnRSZWNlaXZp
bmdNZXNzYWdlcyhTdHJlYW1NZXNzYWdlUmVjZWl2ZXImLCBSZWNlaXZlck5hbWUsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQpOwogICAgIC8vIFN0b3BzIHRoZSBtZXNzYWdlIHJlY2VpcHQuIE5vdGU6
IGFscmVhZHkgcmVjZWl2ZWQgbWVzc2FnZXMgbWlnaHQgc3RpbGwgYmUgZGVsaXZlcmVkLgogICAg
IHZvaWQgc3RvcFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCk7CiAKLSAgICB2b2lkIHN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoUmVjZWl2ZXJOYW1l
KTsKLSAgICB2b2lkIHN0b3BSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZlck5hbWUpOwotCiAgICAg
Q29ubmVjdGlvbiYgY29ubmVjdGlvbigpIHsgcmV0dXJuIG1fY29ubmVjdGlvbjsgfQogCiAgICAg
ZW51bSBEaXNwYXRjaFJlc3VsdCA6IGJvb2wgewpAQCAtNzQsMTEgKzgwLDE1IEBAIHB1YmxpYzoK
ICAgICB9OwogICAgIERpc3BhdGNoUmVzdWx0IGRpc3BhdGNoU3RyZWFtTWVzc2FnZXMoc2l6ZV90
IG1lc3NhZ2VMaW1pdCk7CiAKKyAgICB2b2lkIG9wZW4oKTsKKyAgICB2b2lkIGludmFsaWRhdGUo
KTsKKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KICAg
ICB2b2lkIHNlbmRTeW5jUmVwbHkoQ29ubmVjdGlvbjo6U3luY1JlcXVlc3RJRCwgQXJndW1lbnRz
JiYuLi4pOwogCiBwcml2YXRlOgotICAgIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24oSVBDOjpDb25u
ZWN0aW9uJiwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmLCBTdHJlYW1Db25uZWN0aW9uV29ya1F1
ZXVlJik7CisgICAgZW51bSBjbGFzcyBIYXNEZWRpY2F0ZWRDb25uZWN0aW9uIHsgTm8sIFllcyB9
OworICAgIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24oUmVmPENvbm5lY3Rpb24+JiYsIFN0cmVhbUNv
bm5lY3Rpb25CdWZmZXImJiwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYsIEhhc0RlZGljYXRl
ZENvbm5lY3Rpb24pOwogCiAgICAgLy8gTWVzc2FnZVJlY2VpdmVRdWV1ZQogICAgIHZvaWQgZW5x
dWV1ZU1lc3NhZ2UoQ29ubmVjdGlvbiYsIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYmKSBmaW5h
bDsKQEAgLTExOSw2ICsxMjksNyBAQCBwcml2YXRlOgogICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0
cjxEZWNvZGVyPj4gbV9vdXRPZlN0cmVhbU1lc3NhZ2VzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9v
dXRPZlN0cmVhbU1lc3NhZ2VzTG9jayk7CiAKICAgICBib29sIG1faXNEaXNwYXRjaGluZ1N0cmVh
bU1lc3NhZ2UgeyBmYWxzZSB9OworICAgIGNvbnN0IGJvb2wgbV9oYXNEZWRpY2F0ZWRDb25uZWN0
aW9uOwogICAgIExvY2sgbV9yZWNlaXZlcnNMb2NrOwogICAgIHVzaW5nIFJlY2VpdmVyc01hcCA9
IEhhc2hNYXA8c3RkOjpwYWlyPHVpbnQ4X3QsIHVpbnQ2NF90PiwgUmVmPFN0cmVhbU1lc3NhZ2VS
ZWNlaXZlcj4+OwogICAgIFJlY2VpdmVyc01hcCBtX3JlY2VpdmVycyBXVEZfR1VBUkRFRF9CWV9M
T0NLKG1fcmVjZWl2ZXJzTG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KaW5kZXggOTQ3MjM1MGY4NWY0OWQ1Y2JiYjI0MzQ3
ZDU5M2JlYjg2MjE0YzgzNy4uMDE5YWUzMzc2MzUxODI1YjAwZmViNTI0NjRmOWY0NDVmMDRkODAx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlv
bkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rp
b25Db2NvYS5tbQpAQCAtMjcsNiArMjcsNyBAQAogI2ltcG9ydCAiQ29ubmVjdGlvbi5oIgogCiAj
aW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCisjaW1wb3J0ICJJUENUZXN0ZXIuaCIKICNpbXBvcnQg
IkltcG9ydGFuY2VBc3NlcnRpb24uaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1h
Y2hNZXNzYWdlLmgiCkBAIC01NTgsMTEgKzU1OSwxNCBAQCB2b2lkIENvbm5lY3Rpb246OnJlY2Vp
dmVTb3VyY2VFdmVudEhhbmRsZXIoKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBkZWNvZGVyLT5z
ZXRJbXBvcnRhbmNlQXNzZXJ0aW9uKEltcG9ydGFuY2VBc3NlcnRpb24geyBoZWFkZXIgfSk7CiAj
ZW5kaWYKLQorICAgIAogICAgIGlmIChkZWNvZGVyLT5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VO
YW1lOjpJbml0aWFsaXplQ29ubmVjdGlvbikgewogICAgICAgICBBU1NFUlQobV9pc1NlcnZlcik7
Ci0gICAgICAgIEFTU0VSVCghbV9pc0Nvbm5lY3RlZCk7CiAgICAgICAgIEFTU0VSVCghbV9zZW5k
UG9ydCk7CisgICAgICAgIGlmIChtX2lzQ29ubmVjdGVkKSB7CisgICAgICAgICAgICBBU1NFUlRf
SVNfVEVTVElOR19JUEMoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCiAgICAg
ICAgIE1hY2hQb3J0IHBvcnQ7CiAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHBvcnQpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENTdHJlYW1UZXN0ZXIuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvSVBDU3RyZWFtVGVzdGVyLmNwcAppbmRleCBhYmI2YWM0OWQ2
ODE3Y2U2MDIwZjljN2QzYWM3YjI2NWE2MWZkYjM4Li44MjI2N2UyMWFkZTYyYTliNjY3NDVmM2Rj
ODdhNmNhNWMzMGIyZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENTdHJl
YW1UZXN0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1N0cmVhbVRlc3Rlci5j
cHAKQEAgLTU1LDYgKzU1LDcgQEAgSVBDU3RyZWFtVGVzdGVyOjp+SVBDU3RyZWFtVGVzdGVyKCkg
PSBkZWZhdWx0Owogdm9pZCBJUENTdHJlYW1UZXN0ZXI6OmluaXRpYWxpemUoKQogewogICAgIG1f
c3RyZWFtQ29ubmVjdGlvbi0+c3RhcnRSZWNlaXZpbmdNZXNzYWdlcygqdGhpcywgTWVzc2FnZXM6
OklQQ1N0cmVhbVRlc3Rlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9V
SW50NjQoKSk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5vcGVuKCk7CiAgICAgd29ya1F1ZXVl
KCkuZGlzcGF0Y2goW3RoaXNdIHsKICAgICAgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6SVBDU3RyZWFtVGVzdGVyUHJveHk6Oldhc0NyZWF0ZWQod29y
a1F1ZXVlKCkud2FrZVVwU2VtYXBob3JlKCkpLCBtX2lkZW50aWZpZXIpOwogICAgIH0pOwpAQCAt
NjIsNiArNjMsNyBAQCB2b2lkIElQQ1N0cmVhbVRlc3Rlcjo6aW5pdGlhbGl6ZSgpCiAKIHZvaWQg
SVBDU3RyZWFtVGVzdGVyOjpzdG9wTGlzdGVuaW5nRm9ySVBDKFJlZjxJUENTdHJlYW1UZXN0ZXI+
JiYgcmVmRnJvbUNvbm5lY3Rpb24pCiB7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5pbnZhbGlk
YXRlKCk7CiAgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdG9wUmVjZWl2aW5nTWVzc2FnZXMoTWVz
c2FnZXM6OklQQ1N0cmVhbVRlc3Rlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZp
ZXIudG9VSW50NjQoKSk7CiAgICAgd29ya1F1ZXVlKCkuc3RvcEFuZFdhaXRGb3JDb21wbGV0aW9u
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5oCmluZGV4IDY4YmI2Y2JiMTRmNThiMTM3NjFl
YWQ5Y2Q1YjM4YTljOWRiOWZiYmYuLjcwMDk3YjgwNmJlMzNmZGQyNTEwYzQ5YjVlZTMzODNjZDdi
MWVhZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5oCkBAIC00NCw3ICs0NCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi0jZGVmaW5lIEFTU0VSVF9JU19URVNUSU5HX0lQQygpIEFTU0VS
VChpc1Rlc3RpbmdJUEMoKSwgIlVudHJ1c3RlZCBjb25uZWN0aW9uIHNlbnQgaW52YWxpZCBkYXRh
LiBTaG91bGQgb25seSBoYXBwZW4gd2hlbiB0ZXN0aW5nIElQQy4iKQorI2RlZmluZSBBU1NFUlRf
SVNfVEVTVElOR19JUEMoKSBBU1NFUlQoV2ViS2l0Ojppc1Rlc3RpbmdJUEMoKSwgIlVudHJ1c3Rl
ZCBjb25uZWN0aW9uIHNlbnQgaW52YWxpZCBkYXRhLiBTaG91bGQgb25seSBoYXBwZW4gd2hlbiB0
ZXN0aW5nIElQQy4iKQogCiAjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKaW5kZXggNWU5MjJmNzlhOGZlYmI3MzY2
MjBlODQ4MTcxM2Q3Y2NmOGU3NDA2OC4uYTVjZmMxNzA0OGFmMDBiMzgzNmJkZjk4NDdkNTBjYTUz
NjYzZWM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCkBA
IC01NSw2ICs1NSw3IEBAIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mCiAgICAgbV9ncHVQcm9jZXNz
Q29ubmVjdGlvbi0+YWRkQ2xpZW50KCp0aGlzKTsKICAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9u
LT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOwogICAgIG1fZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpDcmVhdGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgcmVuZGVyaW5nQmFja2VuZCwgbV9zdHJlYW1Db25uZWN0aW9u
LnN0cmVhbUJ1ZmZlcigpKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVu
V2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi5vcGVuKCk7
CiAgICAgLy8gVE9ETzogV2UgbXVzdCB3YWl0IHVudGlsIGluaXRpYWxpemVkLCBiZWNhdXNlIGF0
IHRoZSBtb21lbnQgd2UgY2Fubm90IHJlY2VpdmUgSVBDIG1lc3NhZ2VzCiAgICAgLy8gZHVyaW5n
IHdhaXQgd2hpbGUgaW4gc3luY2hyb25vdXMgc3RyZWFtIHNlbmQuIFNob3VsZCBiZSBmaXhlZCBh
cyBwYXJ0IG9mIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcyMTEu
CiAgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKQEAgLTMzNyw2ICszMzgsNyBAQCB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmFiYW5kb25HcHVQcm9jZXNzKCkKIHZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzY29ubmVjdEdwdVByb2Nlc3NJZk5lZWRlZCgp
CiB7CiAgICAgaWYgKGF1dG8gZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24gPSBzdGQ6OmV4Y2hhbmdlKG1f
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIG51bGxwdHIpKSB7CisgICAgICAgIG1fc3RyZWFtQ29ubmVj
dGlvbi5pbnZhbGlkYXRlKCk7CiAgICAgICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5yZW1vdmVD
bGllbnQoKnRoaXMpOwogICAgICAgICBncHVQcm9jZXNzQ29ubmVjdGlvbi0+bWVzc2FnZVJlY2Vp
dmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgICAgICBncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlbGVh
c2VHcmFwaGljc0NvbnRleHRHTChtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciksIDAsIElQ
Qzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCA4MzI3NjYz
M2NiNTc3ZDk1OGI0NDQ1YWE3NGI5NzExNDQ1MDcxNDNmLi5lOTI0ZWFmNTliMmM5NjBhZjA5ODIy
MjQzMDVmMmJhNmE3MjM5MmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuY3BwCkBAIC03MCwxMyArNzAsMTQgQEAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp+
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkKIEdQVVByb2Nlc3NDb25uZWN0aW9uJiBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkKIHsK
ICAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pIHsKLSAgICAgICAgYXV0byYgZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNz
Q29ubmVjdGlvbigpOwotICAgICAgICBncHVQcm9jZXNzQ29ubmVjdGlvbi5hZGRDbGllbnQoKnRo
aXMpOwotICAgICAgICBncHVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5h
ZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpLnRvVUlu
dDY0KCksICp0aGlzKTsKKyAgICAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbiA9ICZXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOworICAgICAgICBt
X2dwdVByb2Nlc3NDb25uZWN0aW9uLT5hZGRDbGllbnQoKnRoaXMpOworCiAgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgYXV0byBjb25uZWN0aW9uQnVmZmVyU2l6ZSA9IDEgPDwgMjE7Ci0gICAgICAg
IG1fc3RyZWFtQ29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8SVBDOjpTdHJlYW1DbGllbnRDb25uZWN0
aW9uPihncHVQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCksIGNvbm5lY3Rpb25CdWZmZXJT
aXplKTsKLSAgICAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQo
bV9wYXJhbWV0ZXJzLCBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0cmVhbUJ1ZmZlcigpKSwgMCwgSVBD
OjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkp
OwotICAgICAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uID0gZ3B1UHJvY2Vzc0Nvbm5lY3Rpb247
CisgICAgICAgIGF1dG8gW3N0cmVhbUNvbm5lY3Rpb24sIGRlZGljYXRlZENvbm5lY3Rpb25DbGll
bnRJZGVudGlmZXJdID0gSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpjcmVhdGVXaXRoRGVk
aWNhdGVkQ29ubmVjdGlvbigqdGhpcywgY29ubmVjdGlvbkJ1ZmZlclNpemUpOworICAgICAgICBt
X3N0cmVhbUNvbm5lY3Rpb24gPSBXVEZNb3ZlKHN0cmVhbUNvbm5lY3Rpb24pOworICAgICAgICBt
X3N0cmVhbUNvbm5lY3Rpb24tPm9wZW4oKTsKKyAgICAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlv
bi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OkNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQobV9wYXJhbWV0ZXJzLCBkZWRpY2F0ZWRDb25uZWN0aW9u
Q2xpZW50SWRlbnRpZmVyLCBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0cmVhbUJ1ZmZlcigpKSwgMCwg
SVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVw
bHkpOwogICAgIH0KICAgICByZXR1cm4gKm1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb247CiB9CkBAIC0x
MDEsNiArMTAyLDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRpc2Nvbm5l
Y3RHUFVQcm9jZXNzKCkKICAgICBtX2dldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5ID0gbnVsbHB0
cjsKICAgICBtX3JlbmRlcmluZ1VwZGF0ZUlEID0geyB9OwogICAgIG1fZGlkUmVuZGVyaW5nVXBk
YXRlSUQgPSB7IH07CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5pbnZhbGlkYXRlKCk7CiAgICAg
bV9zdHJlYW1Db25uZWN0aW9uID0gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LmgKaW5kZXggMWQwMGY0Zjk2Y2U0OGVjYzQ2MjRkMzgyYzUwZTI5MWYzZTdj
NzEyYS4uNmNhNjM4NWQzMDBiMTkxMWY3ZGNkYTVkODM2ZmVkYzc4NWQyYzU1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCkBAIC0xNzIsOSArMTcyLDEwIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRGbHVzaChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRGbHVzaElkZW50
aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBk
aWRGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVJRCBkaWRSZW5kZXJpbmdV
cGRhdGVJRCk7CiAKKyAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbiogbV9ncHVQcm9jZXNzQ29ubmVj
dGlvbiB7IG51bGxwdHIgfTsKKyAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rp
b247CiAgICAgc3RkOjp1bmlxdWVfcHRyPElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbj4gbV9z
dHJlYW1Db25uZWN0aW9uOwogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFt
ZXRlcnMgbV9wYXJhbWV0ZXJzOwotICAgIFdlYWtQdHI8R1BVUHJvY2Vzc0Nvbm5lY3Rpb24+IG1f
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb247CiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IG1fcmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5IHsgKnRoaXMgfTsKICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5
PiBtX2dldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5OwogICAgIFdlYkNvcmU6OlRpbWVyIG1fZGVz
dHJveUdldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5VGltZXIgeyAqdGhpcywgJlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6ZGVzdHJveUdldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5IH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVHUFVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVHUFVQcm94eS5jcHAKaW5kZXggODQzMDRhNzc2NWQ3OWYyNzUxODg5MTVh
YWRkMzAxOGViMTYxNmRiMi4uYTZkODgxMmJhZGQ3ZDkwNWRiN2NiM2Q2MTBhNDViMDZiZjMzZWNm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlR1BVUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5LmNwcApAQCAtNTEsNiArNTEsNyBAQCBSZW1v
dGVHUFVQcm94eTo6UmVtb3RlR1BVUHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nl
c3NDb25uZWN0aW9uLCBXZWJHUAogICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmFkZENsaWVu
dCgqdGhpcyk7CiAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+bWVzc2FnZVJlY2VpdmVyTWFw
KCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVHUFVQcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKICAgICBtX2dwdVBy
b2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Q3JlYXRlUmVtb3RlR1BVKGlkZW50aWZpZXIsIHJlbmRlcmluZ0JhY2tl
bmQsIG1fc3RyZWFtQ29ubmVjdGlvbi5zdHJlYW1CdWZmZXIoKSksIDAsIElQQzo6U2VuZE9wdGlv
bjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICBtX3N0
cmVhbUNvbm5lY3Rpb24ub3BlbigpOwogICAgIC8vIFRPRE86IFdlIG11c3Qgd2FpdCB1bnRpbCBp
bml0aWFsaXplZCwgYmVjYXVzZSBhdCB0aGUgbW9tZW50IHdlIGNhbm5vdCByZWNlaXZlIElQQyBt
ZXNzYWdlcwogICAgIC8vIGR1cmluZyB3YWl0IHdoaWxlIGluIHN5bmNocm9ub3VzIHN0cmVhbSBz
ZW5kLiBTaG91bGQgYmUgZml4ZWQgYXMgcGFydCBvZiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3MjExLgogICAgIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7CkBAIC02
OCw2ICs2OSw3IEBAIHZvaWQgUmVtb3RlR1BVUHJveHk6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlk
Q2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGNvbm5lY3RpCiB2b2lkIFJlbW90ZUdQVVByb3h5
OjphYmFuZG9uR1BVUHJvY2VzcygpCiB7CiAgICAgYXV0byBncHVQcm9jZXNzQ29ubmVjdGlvbiA9
IHN0ZDo6ZXhjaGFuZ2UobV9ncHVQcm9jZXNzQ29ubmVjdGlvbiwgbnVsbHB0cik7CisgICAgbV9z
dHJlYW1Db25uZWN0aW9uLmludmFsaWRhdGUoKTsKICAgICBncHVQcm9jZXNzQ29ubmVjdGlvbi0+
bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1v
dGVHUFVQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2JhY2tpbmcudG9VSW50NjQoKSk7
CiAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbiA9IG51bGxwdHI7CiAgICAgbV9sb3N0ID0gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3Rp
bmdBUEkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQ
SS5jcHAKaW5kZXggZGI1YWE4ZTQwZDNkYmY2YWJiYzc0ZmZhMGFjYzA4YjJkZDJiNTZmNS4uZWRm
ZTkwNmU4NGU4MDUwNjc3ZDc2NjVhZTdlMGExODNiZGFhNDIyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKQEAgLTU0MSwxMCAr
NTQxLDExIEBAIEpTVmFsdWVSZWYgSlNJUENTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kTWVz
c2FnZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplCiAKICAgICBhdXRvIFtkZXN0aW5hdGlv
bklELCBtZXNzYWdlTmFtZSwgdGltZW91dF0gPSAqaW5mbzsKICAgICBhdXRvJiBzdHJlYW1Db25u
ZWN0aW9uID0ganNTdHJlYW1Db25uZWN0aW9uLT5jb25uZWN0aW9uKCk7CisgICAgYXV0byYgY29u
bmVjdGlvbiA9IHN0cmVhbUNvbm5lY3Rpb24uY29ubmVjdGlvbkZvclRlc3RpbmcoKTsKIAogICAg
IGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPihtZXNzYWdlTmFtZSwg
ZGVzdGluYXRpb25JRCk7CiAgICAgaWYgKHByZXBhcmVUb1NlbmRPdXRPZlN0cmVhbU1lc3NhZ2Uo
Y29udGV4dCwgYXJndW1lbnRDb3VudCwgYXJndW1lbnRzLCAqanNTdHJlYW1Db25uZWN0aW9uLT5t
X2pzSVBDLCBzdHJlYW1Db25uZWN0aW9uLCBlbmNvZGVyLmdldCgpLCBkZXN0aW5hdGlvbklELCB0
aW1lb3V0LCBleGNlcHRpb24pKQotICAgICAgICBzdHJlYW1Db25uZWN0aW9uLm1fY29ubmVjdGlv
bi5zZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCB7IH0pOworICAgICAgICBjb25uZWN0aW9u
LnNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHsgfSk7CiAKICAgICByZXR1cm4gcmV0dXJu
VmFsdWU7CiB9CkBAIC01NjYsMTMgKzU2NywxNCBAQCBKU1ZhbHVlUmVmIEpTSVBDU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKUwog
CiAgICAgYXV0byBbZGVzdGluYXRpb25JRCwgbWVzc2FnZU5hbWUsIHRpbWVvdXRdID0gKmluZm87
CiAgICAgYXV0byYgc3RyZWFtQ29ubmVjdGlvbiA9IGpzU3RyZWFtQ29ubmVjdGlvbi0+Y29ubmVj
dGlvbigpOworICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBzdHJlYW1Db25uZWN0aW9uLmNvbm5lY3Rp
b25Gb3JUZXN0aW5nKCk7CiAKICAgICBJUEM6OkNvbm5lY3Rpb246OlN5bmNSZXF1ZXN0SUQgc3lu
Y1JlcXVlc3RJRDsKLSAgICBhdXRvIGVuY29kZXIgPSBzdHJlYW1Db25uZWN0aW9uLm1fY29ubmVj
dGlvbi5jcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIobWVzc2FnZU5hbWUsIGRlc3RpbmF0aW9uSUQs
IHN5bmNSZXF1ZXN0SUQpOworICAgIGF1dG8gZW5jb2RlciA9IGNvbm5lY3Rpb24uY3JlYXRlU3lu
Y01lc3NhZ2VFbmNvZGVyKG1lc3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklELCBzeW5jUmVxdWVzdElE
KTsKICAgICBpZiAoIXByZXBhcmVUb1NlbmRPdXRPZlN0cmVhbU1lc3NhZ2UoY29udGV4dCwgYXJn
dW1lbnRDb3VudCwgYXJndW1lbnRzLCAqanNTdHJlYW1Db25uZWN0aW9uLT5tX2pzSVBDLCBzdHJl
YW1Db25uZWN0aW9uLCBlbmNvZGVyLmdldCgpLCBkZXN0aW5hdGlvbklELCB0aW1lb3V0LCBleGNl
cHRpb24pKQogICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiAK
LSAgICBpZiAoYXV0byByZXBseURlY29kZXIgPSBzdHJlYW1Db25uZWN0aW9uLm1fY29ubmVjdGlv
bi5zZW5kU3luY01lc3NhZ2Uoc3luY1JlcXVlc3RJRCwgV1RGTW92ZShlbmNvZGVyKSwgdGltZW91
dCwgeyB9KSkgeworICAgIGlmIChhdXRvIHJlcGx5RGVjb2RlciA9IGNvbm5lY3Rpb24uc2VuZFN5
bmNNZXNzYWdlKHN5bmNSZXF1ZXN0SUQsIFdURk1vdmUoZW5jb2RlciksIHRpbWVvdXQsIHsgfSkp
IHsKICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUoZ2xvYmFsT2JqZWN0
LT52bSgpKTsKICAgICAgICAgYXV0byoganNSZXN1bHQgPSBqc1Jlc3VsdEZyb21SZXBseURlY29k
ZXIoZ2xvYmFsT2JqZWN0LCBtZXNzYWdlTmFtZSwgKnJlcGx5RGVjb2Rlcik7CiAgICAgICAgIGlm
IChzY29wZS5leGNlcHRpb24oKSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457030</attachid>
            <date>2022-04-08 01:40:04 -0700</date>
            <delta_ts>2022-04-08 02:02:50 -0700</delta_ts>
            <desc>For landing</desc>
            <filename>bug-238516-20220408114002.patch</filename>
            <type>text/plain</type>
            <size>53573</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg5OWNmZDQ2NTU3N2ViZjFi
YjZkNDgxMzBmOWYxNDc5ODVlMTA0M2EuLjJjZDlmODRhOTlkZWEyOWYxNGNjMzkzMTMxMWIwMzA4
YjE0OWVkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAyIEBACisyMDIyLTA0LTA3ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCBzaG91bGQgaGF2ZSBkZWRpY2F0ZWQgSVBDOjpDb25uZWN0aW9uIGZvciBvdXQtb2Yt
c3RyZWFtIG1lc3NhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzg1MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVc2UgZGVkaWNhdGVkIElQQzo6Q29ubmVjdGlvbiBmb3IgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCBJUEMgc3RyZWFtIGNvbm5lY3Rpb24gaW5zdGVhZAorICAgICAgICBvZiB1c2luZyB0
aGUgV1AtR1BVUCBtYWluIGNvbm5lY3Rpb24uIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIgc3Rh
cnRzIGxpc3RlbmluZyB0bworICAgICAgICBpdHMgbWVzc2FnZXMgaW4gdGhlIHdvcmtlciB0aHJl
YWQuIEF0IHRoYXQgcG9pbnQsIHNvbWUgb3V0LW9mLXN0cmVhbSBtZXNzYWdlIGZvciB0aGF0Cisg
ICAgICAgIGlkIG1pZ2h0IGFscmVhZHkgaGF2ZSBiZWVuIGRpc3BhdGNoZWQgdG8gbWFpbiB0aHJl
YWQsIGNhdXNpbmcgbWlzc2luZyBtZXNzYWdlIGFuZCBhc3NlcnQuCisKKyAgICAgICAgSW5zdGVh
ZCwgdXNlIGRlZGljYXRlZCBjb25uZWN0aW9uIGFuZCByb3V0ZSBhbGwgdGhlIG1lc3NhZ2VzIHRv
IHRoZSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uCisgICAgICAgIGluIGEgIm1lc3NhZ2UgcXVldWUi
LiBUaGlzIHdheSB3aGVuIGVhY2ggb3V0LW9mLXN0cmVhbSBtZXNzYWdlIG1hcmtlciBpcyBwcm9j
ZXNzZWQsIHRoZQorICAgICAgICBtZXNzYWdlIHdpbGwgYmUsIGRpcmVjdGx5IG9yIGV2ZW50dWFs
bHksIGZvdW5kIGZyb20gdGhlIG1lc3NhZ2UgcXVldWUuCisKKyAgICAgICAgUmVtb3ZlIHdvcmth
cm91bmRzOgorICAgICAgICAgLSBBZGRpbmcgYSBsaXN0ZW5lciB0byB0aGUgbWFpbiBXUC1HUFVQ
IGNvbm5lY3Rpb24gZm9yIGFsbCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyIG1lc3NhZ2VzCisg
ICAgICAgICAgIGFuZCByb3V0aW5nIHRoZW0gdG8gcGFydGljdWxhciBTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uLiBUaGlzIHdhcyBwcm9ibGVtYXRpYyBzaW5jZQorICAgICAgICAgICB0aGVyZSBhcmUg
bWFueSBSUkIgU3RyZWFtU2VydmVyQ29ubmVjdGlvbiBpbnN0YW5jZXMsIG9uZSBwZXIgUGFnZSwg
YnV0IG9ubHkgb25lIFdQLUdQVVAKKyAgICAgICAgICAgY29ubmVjdGlvbi4KKyAgICAgICAgIC0g
UkVMRUFTRV9MT0cgaW4gTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcCBhYm91dCB3YXJuaW5nIGZvciB0
aGUgYWJvdmUuIFR1cm4gdGhpcyBiYWNrIGludG8gYW4KKyAgICAgICAgICAgQVNTRVJULgorCisg
ICAgICAgIFNpbmNlIElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBhbmQgSVBDOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uIGFyZSBsaWtlIElQQzo6Q29ubmVjdGlvbiwKKyAgICAgICAgYWRkIG9w
ZW4oKSBhbmQgaW52YWxpZGF0ZSgpIGNhbGxzLiBUaGVzZSBoYXZlIHNhbWUgY29udHJhY3QgYXMg
d2l0aCBJUEM6OkNvbm5lY3Rpb246CisgICAgICAgIG9wZW4oKSBzaG91bGQgYmUgY2FsbGVkIGlm
IGNvbm5lY3Rpb24gaXMgdG8gYmUgdXNlZCwgaW52YWxpZGF0ZSgpIG11c3QgYmUgY2FsbGVkIGlm
IG9wZW4oKSB3YXMgY2FsbGVkLgorICAgICAgICBUaGVzZSBjYWxscyBoYXZlIGFuIGVmZmVjdCBj
dXJyZW50bHkgb25seSB3aXRoIGRlZGljYXRlZCBjb25uZWN0aW9ucywgYnV0IHRoZXNlIGFyZSBh
ZGRlZCB0byBhbGwKKyAgICAgICAgSVBDOjpTdHJlYW0qQ29ubmVjdGlvbiBjbGllbnRzIGZvciBj
b25zaXN0ZW5jeSBhbmQgZnV0dXJlIHVzZXMuCisKKyAgICAgICAgQ2hhbmdlcyBzZW1hbnRpY3Mg
b2YgSVBDOjpDb25uZWN0aW9uIHNsaWdodGx5OgorICAgICAgICBCZWZvcmUsIHRoZXJlIHdhcyBu
byB1bnRydXN0ZWQgaG9sZGVycyBvZiAic2VydmVyIiBJUEM6OkNvbm5lY3Rpb24sIGUuZy4gdGhl
IElQQzo6Q29ubmVjdGlvbiBpbnN0YW5jZXMKKyAgICAgICAgd2VyZSBuZXZlciBpbnN0YW50aWF0
ZWQgYnkgV1AuCisgICAgICAgIEFmdGVyLCB1bnRydXN0ZWQgV1AgaW5zdGFudGlhdGVzIHRoZXNl
IElQQyBzdHJlYW0gZGVkaWNhdGVkIGNvbm5lY3Rpb25zLgorICAgICAgICBUaGlzIGlzIGFjY291
bnRlZCBpbiB0aGUgY2FzZSB3aGVyZSBJUEM6OkNvbm5lY3Rpb24gZW5zdXJlcyB0aGF0IElQQzo6
TWVzc2FnZU5hbWVzOjpJbml0aWFsaXplQ29ubmVjdGlvbgorICAgICAgICBtZXNzYWdlIGlzIG5v
dCBhY3RlZCBvbiB0d2ljZS4KKworICAgICAgICBUZXN0ZWQgYnkgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9saW5rcy9saW5rcy1jcmVhdGVkLWJ5LWEtYW5k
LWFyZWEtZWxlbWVudHMvdGFyZ2V0X2JsYW5rX2ltcGxpY2l0X25vb3BlbmVyLmh0bWwKKyAgICAg
ICAgICAgICAgICAgIC0tY2hpbGQtcHJvY2Vzc2VzPTEgLS1leHBlcmltZW50YWwtZmVhdHVyZT1V
c2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVyaW5nRW5hYmxlZD10cnVlIC0taXRlcmF0aW9ucz0xMDAg
LS1mb3JjZSAtLXNpbXVsYXRvcgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Y3JlYXRlUmVuZGVyaW5nQmFja2VuZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpzdG9wTGlzdGVuaW5nRm9ySVBDKToKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c3RhcnRMaXN0ZW5pbmdGb3JJUEMpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdG9wTGlzdGVuaW5nRm9ySVBD
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUdQVS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdQVTo6aW5pdGlhbGl6ZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdQVTo6c3RvcExpc3RlbmluZ0ZvcklQQyk6CisgICAg
ICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwOgorICAgICAgICAo
SVBDOjpNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwOjphZGRJbXBsKToKKyAgICAgICAgKElQQzo6TWVz
c2FnZVJlY2VpdmVRdWV1ZU1hcDo6cmVtb3ZlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5l
Y3Rpb246OmNyZWF0ZVdpdGhEZWRpY2F0ZWRDb25uZWN0aW9uKToKKyAgICAgICAgKElQQzo6U3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbik6CisgICAgICAgIChJ
UEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246On5TdHJlYW1DbGllbnRDb25uZWN0aW9uKToKKyAg
ICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6b3Blbik6CisgICAgICAgIChJUEM6
OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OmludmFsaWRhdGUpOgorICAgICAgICAoSVBDOjpTdHJl
YW1DbGllbnRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9yVGVzdGluZyk6CisgICAgICAgICogUGxh
dGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAgKElQQzo6U3RyZWFt
Q2xpZW50Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5l
Y3Rpb246OnNlbmRTeW5jKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjp0cnlTZW5kU3luY1N0cmVhbSk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
OjpjcmVhdGVXaXRoRGVkaWNhdGVkQ29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVhbVNl
cnZlckNvbm5lY3Rpb25CYXNlOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSk6CisgICAgICAg
IChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjp+U3RyZWFtU2VydmVyQ29ubmVjdGlv
bkJhc2UpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6b3Blbik6
CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjppbnZhbGlkYXRlKToK
KyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0YXJ0UmVjZWl2aW5n
TWVzc2FnZXNJbXBsKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6
OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogU2hhcmVkL0lQQ1N0cmVhbVRlc3Rlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OklQQ1N0cmVhbVRlc3Rlcjo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJLaXQ6OklQQ1N0cmVhbVRlc3Rlcjo6c3RvcExpc3RlbmluZ0ZvcklQQyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkaXNjb25uZWN0R3B1UHJvY2Vzc0lmTmVlZGVkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmVuc3Vy
ZUdQVVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpkaXNjb25uZWN0R1BVUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR1BVUHJveHk6OlJlbW90ZUdQVVByb3h5KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR1BVUHJveHk6OmFiYW5kb25HUFVQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklQQ1Rl
c3RpbmdBUEk6OkpTSVBDU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZE1lc3NhZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU0lQQ1N0cmVhbUNsaWVudENvbm5lY3Rpb246
OnNlbmRTeW5jTWVzc2FnZSk6CisKIDIwMjItMDQtMDcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIFVzZSB0aGUgc2FtZSBjYWxsYmFjayBtZWNoYW5pc20gZm9y
IFNlcnZpY2VXb3JrZXIgb3BlbldpbmRvdyBhbmQgbmF2aWdhdGUgaW4gVUlQcm9jZXNzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggOGE1NjVkZjRmZjg0MzE1MmY2NTc1MjFhZTY3ZTMxOTZkMDA4ZDRjOS4uMzMw
YjAzOWNkZjg1NmY4OTIwY2NlYzlhZTM3OWZhOTdlODllNzU1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAt
NTMyLDEwICs1MzIsMTAgQEAgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkmIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmltYWdlRGVjb2RlckFWRlByb3h5KCkKIH0KICNlbmRpZgogCi12b2lk
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIGNyZWF0aW9uUGFyYW1ldGVycywg
SVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtQnVmZmVyKQordm9pZCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiBjcmVhdGlvblBhcmFtZXRlcnMsIElQQzo6QXR0
YWNobWVudCYmIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXImJiBzdHJlYW1CdWZmZXIpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRNYXAuZW5zdXJlKGNyZWF0aW9uUGFyYW1ldGVycy5pZGVudGlmaWVyLCBbJl0o
KSB7Ci0gICAgICAgIHJldHVybiBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUg
eyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoY3JlYXRpb25Q
YXJhbWV0ZXJzKSwgV1RGTW92ZShzdHJlYW1CdWZmZXIpKSB9OworICAgICAgICByZXR1cm4gSVBD
OjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlIHsgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGNyZWF0aW9uUGFyYW1ldGVycyksIFdURk1vdmUoY29u
bmVjdGlvbklkZW50aWZpZXIpLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlcikpIH07CiAgICAgfSk7CiAg
ICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCmluZGV4IGI3MmMwYjM3MzYyYjczOWRiZmEzZWQ5YTBjNGEwMWUzYjIxYjFlOTkuLjAzNDRl
M2NjMGM0ZjgxMzJlN2RmMzk1NTUwNzE1Mzk1ODYzZTYwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMjE3LDcg
KzIxNyw3IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXImIG1lZGlh
UmVjb3JkZXJNYW5hZ2VyKCk7CiAjZW5kaWYKIAotICAgIHZvaWQgY3JlYXRlUmVuZGVyaW5nQmFj
a2VuZChSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYsIElQQzo6U3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKKyAgICB2b2lkIGNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQo
UmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmLCBJUEM6OkF0dGFjaG1l
bnQmJiwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYpOwogICAgIHZvaWQgcmVsZWFzZVJl
bmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogCiAjaWYgRU5BQkxF
KFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAxYjgzMmEzMTgzZjgyOTRl
YzA1N2NjYTljNzZmYWJhMDAyNGU1NGJiLi5lYTNjMTQ3ZWM0MTljM2Y0OTU1NjMxY2UyMDUzZGUy
MGQ2YjY1YmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjMsNyArMjMsNyBA
QAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogbWVzc2FnZXMgLT4gR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyBXYW50c0Rpc3BhdGNoTWVzc2FnZSB7Ci0gICAgdm9pZCBDcmVhdGVSZW5kZXJp
bmdCYWNrZW5kKHN0cnVjdCBXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBh
cmFtZXRlcnMgY3JlYXRpb25QYXJhbWV0ZXJzLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIg
c3RyZWFtQnVmZmVyKQorICAgIHZvaWQgQ3JlYXRlUmVuZGVyaW5nQmFja2VuZChzdHJ1Y3QgV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzIGNyZWF0aW9uUGFy
YW1ldGVycywgSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyLCBJUEM6OlN0cmVh
bUNvbm5lY3Rpb25CdWZmZXIgc3RyZWFtQnVmZmVyKQogICAgIHZvaWQgUmVsZWFzZVJlbmRlcmlu
Z0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcikKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgdm9pZCBDcmVhdGVHcmFwaGlj
c0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0
dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHN0cmVh
bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCmluZGV4IDZkYjY0NDBjZjk2ZDkyYWMyZDdmNWJl
MWQ1MjIzYWUwNWEwMTcxYjQuLmYwMjQyYWY3YTQ1MDBhNTA0MjZjM2IyMjU1NDE0MjM2NjgzNmM3
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcApAQCAtODYsNiArODYsNyBAQCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKCkKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OmluaXRpYWxpemUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiYgYXR0cmlidXRlcykKIHsKICAgICBhc3NlcnRJc01haW5SdW5Mb29wKCk7CisgICAgbV9zdHJl
YW1Db25uZWN0aW9uLT5vcGVuKCk7CiAgICAgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1X
b3JrUXVldWUoKS5kaXNwYXRjaChbYXR0cmlidXRlcyA9IFdURk1vdmUoYXR0cmlidXRlcyksIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSgpIG11dGFibGUgewogICAgICAgICBwcm90ZWN0
ZWRUaGlzLT53b3JrUXVldWVJbml0aWFsaXplKFdURk1vdmUoYXR0cmlidXRlcykpOwogICAgIH0p
OwpAQCAtOTUsNiArOTYsNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjppbml0aWFs
aXplKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZQogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6c3RvcExpc3RlbmluZ0ZvcklQQyhSZWY8UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w+JiYgcmVmRnJvbUNvbm5lY3Rpb24pCiB7CiAgICAgYXNzZXJ0SXNNYWluUnVuTG9v
cCgpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOwogICAgIG1fc3RyZWFt
Q29ubmVjdGlvbi0+c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKICAgICByZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdv
cmtRdWV1ZSgpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShyZWZGcm9tQ29ubmVj
dGlvbildKCkgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT53b3JrUXVldWVVbmluaXRpYWxpemUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCBkMzZjYzQwMjdkMjYyNjNjMGY0ODA5ZDgw
MWM5YjIwODBmMmZkYTFlLi5kNWNjMDk5OWM2YTNiMjNlNzJlNWJiYWY0MzM2NDZlNTFjMjQxN2Q1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC03NiwxNiArNzYsMTYgQEAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIGNyZWF0aW9uUGFyYW1ldGVycywgSVBDOjpTdHJlYW1D
b25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtQnVmZmVyKQorUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3Jl
YXRpb25QYXJhbWV0ZXJzJiYgY3JlYXRpb25QYXJhbWV0ZXJzLCBJUEM6OkF0dGFjaG1lbnQmJiBj
b25uZWN0aW9uSWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFt
QnVmZmVyKQogewotICAgIGF1dG8gaW5zdGFuY2UgPSBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgV1RGTW92ZShjcmVhdGlvblBh
cmFtZXRlcnMpLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlcikpKTsKKyAgICBhdXRvIGluc3RhbmNlID0g
YWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MsIFdURk1vdmUoY3JlYXRpb25QYXJhbWV0ZXJzKSwgV1RGTW92ZShjb25uZWN0aW9uSWRl
bnRpZmllciksIFdURk1vdmUoc3RyZWFtQnVmZmVyKSkpOwogICAgIGluc3RhbmNlLT5zdGFydExp
c3RlbmluZ0ZvcklQQygpOwogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAotUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3Jl
YXRpb25QYXJhbWV0ZXJzJiYgY3JlYXRpb25QYXJhbWV0ZXJzLCBJUEM6OlN0cmVhbUNvbm5lY3Rp
b25CdWZmZXImJiBzdHJlYW1CdWZmZXIpCitSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiBj
cmVhdGlvblBhcmFtZXRlcnMsIElQQzo6QXR0YWNobWVudCYmIGNvbm5lY3Rpb25JZGVudGlmaWVy
LCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW1CdWZmZXIpCiAgICAgOiBtX3dv
cmtRdWV1ZShJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OmNyZWF0ZSgiUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCB3b3JrIHF1ZXVlIikpCi0gICAgLCBtX3N0cmVhbUNvbm5lY3Rpb24oSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGUoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jb25uZWN0aW9uKCksIFdURk1vdmUoc3RyZWFtQnVmZmVyKSwgbV93b3JrUXVldWUuZ2V0KCkp
KQorICAgICwgbV9zdHJlYW1Db25uZWN0aW9uKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbjo6
Y3JlYXRlV2l0aERlZGljYXRlZENvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uSWRlbnRpZmll
ciksIFdURk1vdmUoc3RyZWFtQnVmZmVyKSwgbV93b3JrUXVldWUuZ2V0KCkpKQogICAgICwgbV9y
ZW1vdGVSZXNvdXJjZUNhY2hlKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mud2ViUHJvY2Vzc0lk
ZW50aWZpZXIoKSkKICAgICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKQogICAgICwgbV9yZXNvdXJjZU93bmVyKGdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3Mud2ViUHJvY2Vzc0lkZW50aXR5KCkpCkBAIC0xMDMsMTcgKzEwMywxNSBAQCB2b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN0YXJ0TGlzdGVuaW5nRm9ySVBDKCkKICAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fcmVtb3RlRGlzcGxheUxpc3RzTG9jayB9OwogICAgICAgICBtX2Nh
blJlZ2lzdGVyUmVtb3RlRGlzcGxheUxpc3RzID0gdHJ1ZTsKICAgICB9Ci0KICAgICBtX3N0cmVh
bUNvbm5lY3Rpb24tPnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoKnRoaXMsIE1lc3NhZ2VzOjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIudG9VSW50NjQoKSk7Ci0gICAgLy8gUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlciBtZXNzYWdlcyBkZXBlbmQgb24gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgYmVjYXVzZSBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kIGNyZWF0ZXMgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlciBh
bmQKLSAgICAvLyBtYWtlcyBhIHJlY2VpdmUgcXVldWUgZm9yIGl0LiBJbiBvcmRlciB0byBndWFy
YW50ZWUgY29ycmVjdCBvcmRlcmluZywgZW5zdXJlIHRoYXQgYWxsIFJlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXIgbWVzc2FnZXMgYXJlIHByb2Nlc3NlZCBpbgotICAgIC8vIHRoZSBzYW1lIHNlcXVl
bmNlIGFzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgbWVzc2FnZXMuCi0gICAgbV9zdHJlYW1Db25u
ZWN0aW9uLT5zdGFydFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVEaXNwbGF5TGlz
dFJlY29yZGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworICAgIG1fc3RyZWFtQ29ubmVjdGlv
bi0+b3BlbigpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN0b3BMaXN0ZW5p
bmdGb3JJUEMoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgbV9zdHJl
YW1Db25uZWN0aW9uLT5pbnZhbGlkYXRlKCk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdG9w
UmVjZWl2aW5nTWVzc2FnZXMoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKIAogICAgIC8vIFRoaXMgaXRlbSBpcyBkaXNwYXRjaGVkIHRvIHRoZSBXb3JrUXVldWUgYmVm
b3JlIGNhbGxpbmcgc3RvcEFuZFdhaXRGb3JDb21wbGV0aW9uKCkgc3VjaCB0aGF0IGl0IHdpbGwg
cHJvY2VzcyBpdCBsYXN0LCBhZnRlciBhbnkgZXhpc3Rpbmcgd29yay4KICAgICBtX3dvcmtRdWV1
ZS0+ZGlzcGF0Y2goWyZdIHsKQEAgLTEyNCw4ICsxMjIsNiBAQCB2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoKQogICAgIH0pOwogICAgIG1fd29ya1F1ZXVl
LT5zdG9wQW5kV2FpdEZvckNvbXBsZXRpb24oKTsKIAotICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+
c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50
NjQoKSk7Ci0gICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdG9wUmVjZWl2aW5nTWVzc2FnZXMoTWVz
c2FnZXM6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7
CiAKICAgICB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3JlbW90ZURpc3BsYXlMaXN0c0xv
Y2sgfTsKQEAgLTE0Miw3ICsxMzgsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRp
c3BhdGNoKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQogCiBJUEM6OkNvbm5lY3Rpb24qIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gJm1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpOworICAg
IHJldHVybiAmbV9zdHJlYW1Db25uZWN0aW9uLT5jb25uZWN0aW9uKCk7CiB9CiAKIHVpbnQ2NF90
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IGY0MzgzYmVmZmU0NzI1NTllNTU0NGYzYmE0ZWM3
MGJmNWE1NGI0OTQuLjRlNGEyNzA2ZDQxNGI4MWRmNDc5MmQ0OTIxMmM4NzViNDVkMmZkYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtNzUsNyArNzUsNyBAQCBlbnVtIGNsYXNzIFN3YXBCdWZm
ZXJzRGlzcGxheVJlcXVpcmVtZW50IDogdWludDhfdDsKIAogY2xhc3MgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCA6IHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpTdHJlYW1N
ZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyaW5n
QmFja2VuZD4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ciYmKTsKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IGNyZWF0ZShHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFy
YW1ldGVycyYmLCBJUEM6OkF0dGFjaG1lbnQmJiwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVy
JiYpOwogICAgIHZpcnR1YWwgflJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoKTsKICAgICB2b2lkIHN0
b3BMaXN0ZW5pbmdGb3JJUEMoKTsKIApAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBwZXJmb3JtV2l0aE1lZGlhUGxheWVyT25NYWluVGhyZWFkKFdlYkNvcmU6Ok1lZGlhUGxheWVy
SWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpNZWRpYVBsYXllciYpPiYmKTsKIAog
cHJpdmF0ZToKLSAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYsIElQQzo6
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKKyAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYsIElQQzo6QXR0YWNobWVudCYmLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXImJik7CiAgICAgdm9pZCBzdGFydExpc3RlbmluZ0ZvcklQQygpOwogCiAgICAgc3RkOjpvcHRp
b25hbDxTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4gdXBkYXRlU2hhcmVkTWVtb3J5Rm9yR2V0UGl4
ZWxCdWZmZXJIZWxwZXIoc2l6ZV90IGJ5dGVDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5jcHAKaW5kZXggZGY1MjM4
NGUzOWIxNDQ2NzhhNWQyNjUyZTdkNmRlYzU1OTYwZDY4MC4uMWIwNzdiODk0YWJhZDE2ZGY0MDVk
ZmRhZWU2ZmVmZmRmMDZlMGUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmNwcApAQCAtNjAsNiArNjAsNyBAQCBSZW1v
dGVHUFU6On5SZW1vdGVHUFUoKSA9IGRlZmF1bHQ7CiB2b2lkIFJlbW90ZUdQVTo6aW5pdGlhbGl6
ZSgpCiB7CiAgICAgYXNzZXJ0SXNNYWluUnVuTG9vcCgpOworICAgIG1fc3RyZWFtQ29ubmVjdGlv
bi0+b3BlbigpOwogICAgIHdvcmtRdWV1ZSgpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfV0oKSBtdXRhYmxlIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+d29ya1F1ZXVl
SW5pdGlhbGl6ZSgpOwogICAgIH0pOwpAQCAtNjksNiArNzAsNyBAQCB2b2lkIFJlbW90ZUdQVTo6
aW5pdGlhbGl6ZSgpCiB2b2lkIFJlbW90ZUdQVTo6c3RvcExpc3RlbmluZ0ZvcklQQyhSZWY8UmVt
b3RlR1BVPiYmIHJlZkZyb21Db25uZWN0aW9uKQogewogICAgIGFzc2VydElzTWFpblJ1bkxvb3Ao
KTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKICAgICBtX3N0cmVhbUNv
bm5lY3Rpb24tPnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhNZXNzYWdlczo6UmVtb3RlR1BVOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICB3b3JrUXVl
dWUoKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocmVmRnJvbUNvbm5lY3Rpb24p
XSgpIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+d29ya1F1ZXVlVW5pbml0aWFsaXplKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVl
TWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVN
YXAuY3BwCmluZGV4IDU4MmQyNzgxOTk5MTU3ZmQyMzM0MTk2NzE3YzM4MGRhN2YwMzAzMzEuLmMz
MzA0MDFjNTFiOGFkZmI5Yjc1Yjk2NTYzMTJhMDc3ZmY3MjJkN2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwCkBAIC0z
OSwxMCArMzksNyBAQCB2b2lkIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OmFkZEltcGwoU3RvcmVU
eXBlJiYgcXVldWUsIGNvbnN0IFJlY2VpdmVyTWF0Y2hlciYgbQogICAgIHVpbnQ4X3QgcmVjZWl2
ZXJOYW1lID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oKm1hdGNoZXIucmVjZWl2ZXJOYW1lKTsKICAg
ICBpZiAoIW1hdGNoZXIuZGVzdGluYXRpb25JRC5oYXNfdmFsdWUoKSkgewogICAgICAgICBhdXRv
IHJlc3VsdCA9IG1fYW55SURRdWV1ZXMuYWRkKHJlY2VpdmVyTmFtZSwgV1RGTW92ZShxdWV1ZSkp
OwotICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgICAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgYmUgYW4gYXNzZXJ0aW9uLiBTZWUgd2Via2l0Lm9yZy9iLzIzNzY3NCBh
bmQgd2Via2l0Lm9yZy9iLzIzODM5MS4KLSAgICAgICAgICAgIEFMV0FZU19MT0dfV0lUSF9TVFJF
QU0oc3RyZWFtIDw8ICJNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwOjphZGRJbXBsIC0gYWRkaW5nIGR1
cGxpY2F0ZSBhbnkgaWQgcmVjZWl2ZXIgIiA8PCBzdGF0aWNfY2FzdDx1aW50OF90PihyZWNlaXZl
ck5hbWUpKTsKLSAgICAgICAgfQorICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0
LmlzTmV3RW50cnkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGF1dG8gcmVzdWx0ID0g
bV9xdWV1ZXMuYWRkKHN0ZDo6bWFrZV9wYWlyKHJlY2VpdmVyTmFtZSwgKm1hdGNoZXIuZGVzdGlu
YXRpb25JRCksIFdURk1vdmUocXVldWUpKTsKQEAgLTU5LDEwICs1Niw3IEBAIHZvaWQgTWVzc2Fn
ZVJlY2VpdmVRdWV1ZU1hcDo6cmVtb3ZlKGNvbnN0IFJlY2VpdmVyTWF0Y2hlciYgbWF0Y2hlcikK
ICAgICB1aW50OF90IHJlY2VpdmVyTmFtZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KCptYXRjaGVy
LnJlY2VpdmVyTmFtZSk7CiAgICAgaWYgKCFtYXRjaGVyLmRlc3RpbmF0aW9uSUQuaGFzX3ZhbHVl
KCkpIHsKICAgICAgICAgYXV0byByZXN1bHQgPSBtX2FueUlEUXVldWVzLnJlbW92ZShyZWNlaXZl
ck5hbWUpOwotICAgICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgYmUgYW4gYXNzZXJ0aW9uLiBTZWUgd2Via2l0Lm9yZy9iLzIzNzY3NCBhbmQgd2Vi
a2l0Lm9yZy9iLzIzODM5MS4KLSAgICAgICAgICAgIEFMV0FZU19MT0dfV0lUSF9TVFJFQU0oc3Ry
ZWFtIDw8ICJNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwOjphZGRJbXBsIC0gYWRkaW5nIGR1cGxpY2F0
ZSBhbnkgaWQgcmVjZWl2ZXIgIiA8PCBzdGF0aWNfY2FzdDx1aW50OF90PihyZWNlaXZlck5hbWUp
KTsKLSAgICAgICAgfQorICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRvIHJlc3VsdCA9IG1fcXVldWVzLnJlbW92ZShz
dGQ6Om1ha2VfcGFpcihyZWNlaXZlck5hbWUsICptYXRjaGVyLmRlc3RpbmF0aW9uSUQpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bi5jcHAKaW5kZXggYjEwMWUwMmZkYjVlNWE0YTU2ODYxZGM3ZWViZjFiYTJhMWNlMmI5OS4uODUw
NjRlNTg2ZTc4NTk4YmU1MWRmNmM4ZmVhNDJkOGMxYWUxNmZjZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTI4
LDkgKzI4LDQ1IEBACiAKIG5hbWVzcGFjZSBJUEMgewogCi1TdHJlYW1DbGllbnRDb25uZWN0aW9u
OjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemVfdCBz
aXplKQotICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCi0gICAgLCBtX2J1ZmZlcihzaXpl
KQorLy8gRklYTUUoaHR0cDovL3dlYmtpdC5vcmcvYi8yMzg5ODYpOiBXb3JrYXJvdW5kIGZvciBu
b3QgYmVpbmcgYWJsZSB0byBkZWxpdmVyIG1lc3NhZ2VzIGZyb20gdGhlIGRlZGljYXRlZCBjb25u
ZWN0aW9uIHRvIHRoZSB3b3JrIHF1ZXVlIHRoZSBjbGllbnQgdXNlcy4KK2NsYXNzIFN0cmVhbUNs
aWVudENvbm5lY3Rpb246OkRlZGljYXRlZENvbm5lY3Rpb25DbGllbnQgZmluYWwgOiBwdWJsaWMg
Q29ubmVjdGlvbjo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShEZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50KTsKK3B1YmxpYzoK
KyAgICBEZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50KE1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIp
CisgICAgICAgIDogbV9yZWNlaXZlcihyZWNlaXZlcikKKyAgICB7CisgICAgfQorICAgIC8vIENv
bm5lY3Rpb246OkNsaWVudC4KKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIpIGZpbmFsIHsgbV9yZWNlaXZlci5kaWRSZWNl
aXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsgfQorICAgIGJvb2wgZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIFVuaXF1
ZVJlZjxFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKSBmaW5hbCB7IHJldHVybiBtX3JlY2VpdmVyLmRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOyB9
CisgICAgdm9pZCBkaWRDbG9zZShDb25uZWN0aW9uJikgZmluYWwgeyB9IC8vIENsaWVudCBpcyBl
eHBlY3RlZCB0byBsaXN0ZW4gdG8gQ29ubmVjdGlvbjo6ZGlkQ2xvc2UoKSBmcm9tIHRoZSBjb25u
ZWN0aW9uIGl0IHNlbnQgdG8gdGhlIGRlZGljYXRlZCBjb25uZWN0aW9uIHRvLgorICAgIHZvaWQg
ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvbm5lY3Rpb24mLCBNZXNzYWdlTmFtZSkgZmluYWwg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfSAvLyBUaGUgc2VuZGVyIGlzIGV4cGVjdGVkIHRvIGJl
IHRydXN0ZWQsIHNvIGFsbCBpbnZhbGlkIG1lc3NhZ2VzIGFyZSBwcm9ncmFtbWluZyBlcnJvcnMu
Citwcml2YXRlOgorICAgIE1lc3NhZ2VSZWNlaXZlciYgbV9yZWNlaXZlcjsKK307CisKK1N0cmVh
bUNsaWVudENvbm5lY3Rpb246OlN0cmVhbUNvbm5lY3Rpb25XaXRoRGVkaWNhdGVkQ29ubmVjdGlv
biBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpjcmVhdGVXaXRoRGVkaWNhdGVkQ29ubmVjdGlvbihN
ZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyLCBzaXplX3QgYnVmZmVyU2l6ZSkKK3sKKyAgICBhdXRv
IGNvbm5lY3Rpb25JZGVudGlmaWVycyA9IENvbm5lY3Rpb246OmNyZWF0ZUNvbm5lY3Rpb25JZGVu
dGlmaWVyUGFpcigpOworICAgIC8vIENyZWF0ZSBTdHJlYW1DbGllbnRDb25uZWN0aW9uIHdpdGgg
InNlcnZlciIgdHlwZSBDb25uZWN0aW9uLiBUaGUgY2FsbGVyIHdpbGwgc2VuZCB0aGUgImNsaWVu
dCIgdHlwZSBjb25uZWN0aW9uIGlkZW50aWZpZXIgdmlhCisgICAgLy8gSVBDIHRvIHRoZSBvdGhl
ciBzaWRlLCB3aGVyZSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHdpbGwgYmUgY3JlYXRlZCB3aXRo
ICJjbGllbnQiIHR5cGUgQ29ubmVjdGlvbi4KKyAgICAvLyBGb3IgQ29ubmVjdGlvbiwgInNlcnZl
ciIgbWVhbnMgdGhlIGNvbm5lY3Rpb24gd2hpY2ggd2FzIGNyZWF0ZWQgZmlyc3QsIHRoZSBjb25u
ZWN0aW9uIHdoaWNoIGlzIG5vdCBzZW50IHRocm91Z2ggSVBDIHRvIG90aGVyIHBhcnR5LgorICAg
IC8vIEZvciBDb25uZWN0aW9uLCAiY2xpZW50IiBtZWFucyB0aGUgY29ubmVjdGlvbiB3aGljaCB3
YXMgZXN0YWJsaXNoZWQgYnkgcmVjZWl2aW5nIGl0IHRocm91Z2ggSVBDIGFuZCBjcmVhdGluZyBJ
UEM6OkNvbm5lY3Rpb24gb3V0IGZyb20gdGhlIGlkZW50aWZpZXIuCisgICAgLy8gVGhlICJDbGll
bnQiIGluIFN0cmVhbUNsaWVudENvbm5lY3Rpb24gbWVhbnMgdGhlIHBhcnR5IHRoYXQgbW9zdGx5
IGRvZXMgc2VuZGluZywgZS5nLiB1bnRydXN0ZWQgcGFydHkuCisgICAgLy8gVGhlICJTZXJ2ZXIi
IGluIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24gbWVhbnMgdGhlIHBhcnR5IHRoYXQgbW9zdGx5IGRv
ZXMgcmVjZWl2aW5nLCBlLmcuIHRoZSB0cnVzdGVkIHBhcnR5IHdoaWNoIGhvbGRzIHRoZSBkZXN0
aW5hdGlvbiBvYmplY3QgdG8gY29tbXVuaWNhdGUgd2l0aC4KKyAgICBhdXRvIGRlZGljYXRlZENv
bm5lY3Rpb25DbGllbnQgPSBtYWtlVW5pcXVlPERlZGljYXRlZENvbm5lY3Rpb25DbGllbnQ+KHJl
Y2VpdmVyKTsKKyAgICBhdXRvIGRlZGljYXRlZENvbm5lY3Rpb24gPSBDb25uZWN0aW9uOjpjcmVh
dGVTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVycy0+c2VydmVyLCAqZGVkaWNh
dGVkQ29ubmVjdGlvbkNsaWVudCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFN0cmVhbUNsaWVudENv
bm5lY3Rpb24+IHN0cmVhbUNvbm5lY3Rpb24geyBuZXcgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbihX
VEZNb3ZlKGRlZGljYXRlZENvbm5lY3Rpb24pLCBidWZmZXJTaXplLCBXVEZNb3ZlKGRlZGljYXRl
ZENvbm5lY3Rpb25DbGllbnQpKSB9OworICAgIC8vIEZJWE1FKGh0dHA6Ly93ZWJraXQub3JnL2Iy
Mzg5NDQpOiBNYWtlIElQQzo6QXR0YWNobWVudCByZWFsbHkgbW92YWJsZSBvbiBPUyhEQVJXSU4p
LgorICAgIHJldHVybiB7IFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbiksIFdURk1vdmUoY29ubmVj
dGlvbklkZW50aWZpZXJzLT5jbGllbnQpIH07CisjCit9CisKK1N0cmVhbUNsaWVudENvbm5lY3Rp
b246OlN0cmVhbUNsaWVudENvbm5lY3Rpb24oUmVmPENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwg
c2l6ZV90IGJ1ZmZlclNpemUsIHN0ZDo6dW5pcXVlX3B0cjxEZWRpY2F0ZWRDb25uZWN0aW9uQ2xp
ZW50PiYmIGRlZGljYXRlZENvbm5lY3Rpb25DbGllbnQpCisgICAgOiBtX2Nvbm5lY3Rpb24oV1RG
TW92ZShjb25uZWN0aW9uKSkKKyAgICAsIG1fZGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudChXVEZN
b3ZlKGRlZGljYXRlZENvbm5lY3Rpb25DbGllbnQpKQorICAgICwgbV9idWZmZXIoYnVmZmVyU2l6
ZSkKIHsKICAgICAvLyBSZWFkIHN0YXJ0cyBmcm9tIDAgd2l0aCBsaW1pdCBvZiAwIGFuZCByZWFk
ZXIgc2xlZXBpbmcuCiAgICAgc2hhcmVkQ2xpZW50T2Zmc2V0KCkuc3RvcmUoQ2xpZW50T2Zmc2V0
OjpzZXJ2ZXJJc1NsZWVwaW5nVGFnLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKQEAgLTM4
LDYgKzc0LDI4IEBAIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlN0cmVhbUNsaWVudENvbm5lY3Rp
b24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgc2l6ZV90IHNpCiAgICAgc2hhcmVkQ2xpZW50TGlt
aXQoKS5zdG9yZShzdGF0aWNfY2FzdDxDbGllbnRMaW1pdD4oMCksIHN0ZDo6bWVtb3J5X29yZGVy
X3JlbGF4ZWQpOwogfQogCitTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25u
ZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemVfdCBidWZmZXJTaXplKQorICAgIDog
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbihSZWYgeyBjb25uZWN0aW9uIH0sIGJ1ZmZlclNpemUsIHsg
fSkKK3sKK30KKworU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6flN0cmVhbUNsaWVudENvbm5lY3Rp
b24oKQoreworICAgIEFTU0VSVCghbV9kZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50IHx8ICFtX2Nv
bm5lY3Rpb24tPmlzVmFsaWQoKSk7Cit9CisKK3ZvaWQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
b3BlbigpCit7CisgICAgaWYgKG1fZGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudCkKKyAgICAgICAg
bV9jb25uZWN0aW9uLT5vcGVuKCk7Cit9CisKK3ZvaWQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
aW52YWxpZGF0ZSgpCit7CisgICAgaWYgKG1fZGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudCkKKyAg
ICAgICAgbV9jb25uZWN0aW9uLT5pbnZhbGlkYXRlKCk7Cit9CisKIHZvaWQgU3RyZWFtQ2xpZW50
Q29ubmVjdGlvbjo6c2V0V2FrZVVwU2VtYXBob3JlKElQQzo6U2VtYXBob3JlJiYgc2VtYXBob3Jl
KQogewogICAgIG1fd2FrZVVwU2VtYXBob3JlID0gV1RGTW92ZShzZW1hcGhvcmUpOwpAQCAtODMs
NCArMTQxLDkgQEAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYgU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6YnVmZmVyRm9yVGVzdGluZygpCiAgICAgcmV0dXJuIG1fYnVmZmVyOwogfQogCitDb25uZWN0
aW9uJiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9yVGVzdGluZygpCit7Cisg
ICAgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IDJiNDdlMjVl
Y2JjMTE4MjQ5MWQyZGZkZTcyODBkN2JjMzA1MTFlNzQuLjRlNDIwZDRmZjYxNWI1NzBlZTBiNTIy
NjkyODliMzQ2ODAxZjc3ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmgKQEAgLTU3LDggKzU3LDMxIEBAIGNsYXNzIFN0cmVh
bUNsaWVudENvbm5lY3Rpb24gZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0cmVhbUNsaWVudENvbm5lY3Rpb24pOwogcHVibGlj
OgorICAgIC8vIENyZWF0ZXMgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiB3aGVyZSB0aGUgb3V0IG9m
IHN0cmVhbSBtZXNzYWdlcyBhbmQgc2VydmVyIHJlcGxpZXMgYXJlCisgICAgLy8gc2VudCB0aHJv
dWdoIHRoZSBwYXNzZWQgSVBDOjpDb25uZWN0aW9uLiBUaGUgbWVzc2FnZXMgZnJvbSB0aGUgc2Vy
dmVyIGFyZSBkZWxpdmVyZWQgdG8KKyAgICAvLyB0aGUgY2FsbGVyIHRocm91Z2ggdGhlIHBhc3Nl
ZCBJUEM6OkNvbm5lY3Rpb24uCisgICAgLy8gTm90ZTogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUg
dXNlZCBvbmx5IGluIGNhc2VzIHdoZXJlIHRoZQorICAgIC8vIHN0cmVhbSBzZXJ2ZXIgc3RhcnRz
IGxpc3RlbmluZyB0byBtZXNzYWdlcyB3aXRoIG5ldyBpZGVudGlmaWVycyBvbiB0aGUgc2FtZSB0
aHJlYWQgYXMKKyAgICAvLyBpbiB3aGljaCB0aGUgc2VydmVyIElQQzo6Q29ubmVjdGlvbiBkaXNw
YXRjaCBtZXNzYWdlcy4gQXQgdGhlIHRpbWUgb2Ygd3JpdGluZywKKyAgICAvLyBJUEM6OkNvbm5l
Y3Rpb24gZGlzcGF0Y2hlcyBtZXNzYWdlcyBvbmx5IGluIG1haW4gdGhyZWFkLgogICAgIFN0cmVh
bUNsaWVudENvbm5lY3Rpb24oQ29ubmVjdGlvbiYsIHNpemVfdCBidWZmZXJTaXplKTsKIAorICAg
IHN0cnVjdCBTdHJlYW1Db25uZWN0aW9uV2l0aERlZGljYXRlZENvbm5lY3Rpb24geworICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U3RyZWFtQ2xpZW50Q29ubmVjdGlvbj4gc3RyZWFtQ29ubmVjdGlv
bjsKKyAgICAgICAgQXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllcjsKKyAgICAgICAgLy8g
RklYTUU6IE9uY2UgSVBDIGNhbiB0cmVhdCBoYW5kbGVzIGFzIGZpcnN0IGNsYXNzIG9iamVjdHMs
IGFkZCBzdHJlYW0gYnVmZmVyIGFzCisgICAgICAgIC8vIGEgaGFuZGxlIGhlcmUuCisgICAgfTsK
KworICAgIC8vIENyZWF0ZXMgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiB3aGVyZSB0aGUgb3V0IG9m
IHN0cmVhbSBtZXNzYWdlcyBhbmQgc2VydmVyIHJlcGxpZXMgYXJlCisgICAgLy8gc2VudCB0aHJv
dWdoIGEgZGVkaWRjYXRlZCwgbmV3IElQQzo6Q29ubmVjdGlvbi4gVGhlIG1lc3NhZ2VzIGZyb20g
dGhlIHNlcnZlciBhcmUgZGVsaXZlcmVkIHRvCisgICAgLy8gdGhlIGNhbGxlciB0aHJvdWdoIHRo
ZSBwYXNzZWQgSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCisgICAgLy8gVGhlIGNhbGxlciBzaG91bGQg
c2VuZCBTdHJlYW1Db25uZWN0aW9uV2l0aERlZGljYXRlZENvbm5lY3Rpb246OmNvbm5lY3Rpb25J
ZGVudGlmaWVyIGFuZAorICAgIC8vIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnN0cmVhbUJ1ZmZl
cigpIHRvIHRoZSBzZXJ2ZXIgdmlhIGFuIGV4aXN0aW5nIElQQzo6Q29ubmVjdGlvbi4KKyAgICBz
dGF0aWMgU3RyZWFtQ29ubmVjdGlvbldpdGhEZWRpY2F0ZWRDb25uZWN0aW9uIGNyZWF0ZVdpdGhE
ZWRpY2F0ZWRDb25uZWN0aW9uKE1lc3NhZ2VSZWNlaXZlciYsIHNpemVfdCBidWZmZXJTaXplKTsK
KworICAgIH5TdHJlYW1DbGllbnRDb25uZWN0aW9uKCk7CisKICAgICBTdHJlYW1Db25uZWN0aW9u
QnVmZmVyJiBzdHJlYW1CdWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQogICAgIHZvaWQgc2V0
V2FrZVVwU2VtYXBob3JlKElQQzo6U2VtYXBob3JlJiYpOwogICAgIGJvb2wgaGFzV2FrZVVwU2Vt
YXBob3JlKCkgY29uc3QgeyByZXR1cm4gbV93YWtlVXBTZW1hcGhvcmUuaGFzX3ZhbHVlKCk7IH0K
QEAgLTcwLDYgKzkzLDkgQEAgcHVibGljOgogICAgIH0KICAgICB2b2lkIHNlbmREZWZlcnJlZFdh
a2VVcE1lc3NhZ2VJZk5lZWRlZCgpOwogCisgICAgdm9pZCBvcGVuKCk7CisgICAgdm9pZCBpbnZh
bGlkYXRlKCk7CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBib29sIHNl
bmQoVCYmIG1lc3NhZ2UsIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgVGltZW91
dCk7CiAKICAgICB1c2luZyBTZW5kU3luY1Jlc3VsdCA9IENvbm5lY3Rpb246OlNlbmRTeW5jUmVz
dWx0OwpAQCAtODAsOSArMTA2LDExIEBAIHB1YmxpYzoKICAgICBib29sIHdhaXRGb3JBbmREaXNw
YXRjaEltbWVkaWF0ZWx5KE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgVGltZW91
dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+ID0geyB9KTsKIAogICAgIFN0cmVhbUNvbm5lY3Rp
b25CdWZmZXImIGJ1ZmZlckZvclRlc3RpbmcoKTsKKyAgICBDb25uZWN0aW9uJiBjb25uZWN0aW9u
Rm9yVGVzdGluZygpOwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6OklQQ1Rl
c3RpbmdBUEk6OkpTSVBDU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjsKKyAgICBjbGFzcyBEZWRpY2F0
ZWRDb25uZWN0aW9uQ2xpZW50OworICAgIFN0cmVhbUNsaWVudENvbm5lY3Rpb24oUmVmPENvbm5l
Y3Rpb24+JiYsIHNpemVfdCBidWZmZXJTaXplLCBzdGQ6OnVuaXF1ZV9wdHI8RGVkaWNhdGVkQ29u
bmVjdGlvbkNsaWVudD4mJik7CiAKICAgICBzdHJ1Y3QgU3BhbiB7CiAgICAgICAgIHVpbnQ4X3Qq
IGRhdGE7CkBAIC0xMjIsMTQgKzE1MCwxNiBAQCBwcml2YXRlOgogICAgIHVpbnQ4X3QqIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KICAgICBzaXplX3QgZGF0YVNpemUo
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5kYXRhU2l6ZSgpOyB9CiAKLSAgICBDb25uZWN0aW9u
JiBtX2Nvbm5lY3Rpb247CisgICAgUmVmPENvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8RGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudD4gbV9kZWRpY2F0ZWRDb25u
ZWN0aW9uQ2xpZW50OwogICAgIHVpbnQ2NF90IG1fY3VycmVudERlc3RpbmF0aW9uSUQgeyAwIH07
Ci0KICAgICBzaXplX3QgbV9jbGllbnRPZmZzZXQgeyAwIH07CiAgICAgU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlciBtX2J1ZmZlcjsKICAgICBzdGQ6Om9wdGlvbmFsPFNlbWFwaG9yZT4gbV93YWtlVXBT
ZW1hcGhvcmU7CiAgICAgdW5zaWduZWQgbV9yZW1haW5pbmdNZXNzYWdlQ291bnRCZWZvcmVTZW5k
aW5nV2FrZVVwIHsgMCB9OwogICAgIHVuc2lnbmVkIG1fd2FrZVVwTWVzc2FnZUh5c3RlcmVzaXMg
eyAwIH07CisKKyAgICBmcmllbmQgY2xhc3MgV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU0lQQ1N0
cmVhbUNsaWVudENvbm5lY3Rpb247CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPgpAQCAtMTQ2LDcgKzE3Niw3IEBAIGJvb2wgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2Vu
ZChUJiYgbWVzc2FnZSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklECiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3Nh
Z2UoV1RGTW92ZSgqc3BhbikpOwotICAgIGlmICghbV9jb25uZWN0aW9uLnNlbmQoV1RGTW92ZSht
ZXNzYWdlKSwgZGVzdGluYXRpb25JRCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VF
dmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpKQorICAgIGlmICghbV9jb25uZWN0aW9uLT5zZW5k
KFdURk1vdmUobWVzc2FnZSksIGRlc3RpbmF0aW9uSUQsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0
Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTgxLDEzICsyMTEsMTMgQEAgU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2Vu
ZFN5bmMoVCYmIG1lc3MKICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKCptYXliZVNlbmRSZXN1
bHQpOwogICAgIH0KICAgICBzZW5kUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZShXVEZNb3ZlKCpz
cGFuKSk7Ci0gICAgcmV0dXJuIG1fY29ubmVjdGlvbi5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2Up
LCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0KTsKKyAg
ICByZXR1cm4gbV9jb25uZWN0aW9uLT5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3Zl
KHJlcGx5KSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0KTsKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KIGJvb2wgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkoT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5h
dGlvbklELCBUaW1lb3V0IHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9y
T3B0aW9ucykKIHsKLSAgICByZXR1cm4gbV9jb25uZWN0aW9uLndhaXRGb3JBbmREaXNwYXRjaElt
bWVkaWF0ZWx5PFQ+KGRlc3RpbmF0aW9uSUQsIHRpbWVvdXQsIHdhaXRGb3JPcHRpb25zKTsKKyAg
ICByZXR1cm4gbV9jb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxUPihk
ZXN0aW5hdGlvbklELCB0aW1lb3V0LCB3YWl0Rm9yT3B0aW9ucyk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CkBAIC0xOTUsOCArMjI1LDggQEAgc3RkOjpvcHRpb25hbDxTdHJlYW1DbGllbnRD
b25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdD4gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6dHIKIHsK
ICAgICAvLyBJbiB0aGlzIGZ1bmN0aW9uLCBTZW5kU3luY1Jlc3VsdCB7IH0gbWVhbnMgZXJyb3Ig
aGFwcGVuZWQgYW5kIGNhbGxlciBzaG91bGQgc3RvcCBwcm9jZXNzaW5nLgogICAgIC8vIHN0ZDo6
bnVsbG9wdCBtZWFucyB3ZSBjb3VsZG4ndCBzZW5kIHRocm91Z2ggdGhlIHN0cmVhbSwgc28gdHJ5
IHNlbmRpbmcgb3V0IG9mIHN0cmVhbS4KLSAgICBhdXRvIHN5bmNSZXF1ZXN0SUQgPSBtX2Nvbm5l
Y3Rpb24ubWFrZVN5bmNSZXF1ZXN0SUQoKTsKLSAgICBpZiAoIW1fY29ubmVjdGlvbi5wdXNoUGVu
ZGluZ1N5bmNSZXF1ZXN0SUQoc3luY1JlcXVlc3RJRCkpCisgICAgYXV0byBzeW5jUmVxdWVzdElE
ID0gbV9jb25uZWN0aW9uLT5tYWtlU3luY1JlcXVlc3RJRCgpOworICAgIGlmICghbV9jb25uZWN0
aW9uLT5wdXNoUGVuZGluZ1N5bmNSZXF1ZXN0SUQoc3luY1JlcXVlc3RJRCkpCiAgICAgICAgIHJl
dHVybiBTZW5kU3luY1Jlc3VsdCB7IH07CiAKICAgICBhdXRvIHJlc3VsdCA9IFsmXSgpIC0+IHN0
ZDo6b3B0aW9uYWw8U2VuZFN5bmNSZXN1bHQ+IHsKQEAgLTIyMCw5ICsyNTAsOSBAQCBzdGQ6Om9w
dGlvbmFsPFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0PiBTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjp0cgogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIG1fY2xpZW50T2Zmc2V0ID0gMDsKLSAgICAgICAgcmV0dXJuIG1fY29ubmVjdGlvbi53YWl0
Rm9yU3luY1JlcGx5KHN5bmNSZXF1ZXN0SUQsIFQ6Om5hbWUoKSwgdGltZW91dCwgeyB9KTsKKyAg
ICAgICAgcmV0dXJuIG1fY29ubmVjdGlvbi0+d2FpdEZvclN5bmNSZXBseShzeW5jUmVxdWVzdElE
LCBUOjpuYW1lKCksIHRpbWVvdXQsIHsgfSk7CiAgICAgfSgpOwotICAgIG1fY29ubmVjdGlvbi5w
b3BQZW5kaW5nU3luY1JlcXVlc3RJRChzeW5jUmVxdWVzdElEKTsKKyAgICBtX2Nvbm5lY3Rpb24t
PnBvcFBlbmRpbmdTeW5jUmVxdWVzdElEKHN5bmNSZXF1ZXN0SUQpOwogICAgIGlmIChyZXN1bHQg
JiYgKnJlc3VsdCkgewogICAgICAgICBhdXRvJiBkZWNvZGVyID0gKipyZXN1bHQ7CiAgICAgICAg
IHN0ZDo6b3B0aW9uYWw8dHlwZW5hbWUgVDo6UmVwbHlBcmd1bWVudHM+IHJlcGx5QXJndW1lbnRz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uLmNwcAppbmRleCAwNTQ2MzcyYmZhOTJhMzFhZGZmZTg2OGQxMDI5NDIyY2UxOTkwNTZh
Li5jMzIxNGNmMjk4ZTEwZDU5ZGM5NDc5MDE2MDdkYzliNDg1MDRmNzBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcApA
QCAtMjgsMTQgKzI4LDgxIEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAi
U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oIgotCisjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiBuYW1lc3BhY2UgSVBDIHsKK25hbWVzcGFjZSB7Cisv
LyBGSVhNRShodHRwOi8vd2Via2l0Lm9yZy9iLzIzODk4Nik6IFdvcmthcm91bmQgZm9yIG5vdCBi
ZWluZyBhYmxlIHRvIGRlbGl2ZXIgbWVzc2FnZXMgZnJvbSB0aGUgZGVkaWNhdGVkIGNvbm5lY3Rp
b24gdG8gdGhlIHdvcmsgcXVldWUgdGhlIGNsaWVudCB1c2VzLgorY2xhc3MgRGVkaWNhdGVkQ29u
bmVjdGlvbkNsaWVudCBmaW5hbCA6IHB1YmxpYyBDb25uZWN0aW9uOjpDbGllbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERlZGljYXRl
ZENvbm5lY3Rpb25DbGllbnQpOworcHVibGljOgorICAgIERlZGljYXRlZENvbm5lY3Rpb25DbGll
bnQoKSA9IGRlZmF1bHQ7CisgICAgLy8gQ29ubmVjdGlvbjo6Q2xpZW50LgorICAgIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2Rlcikg
ZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJl
ZjxFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIGRpZENsb3NlKENvbm5lY3Rpb24mKSBmaW5hbCB7IH0g
Ly8gQ2xpZW50IGlzIGV4cGVjdGVkIHRvIGxpc3RlbiB0byBDb25uZWN0aW9uOjpkaWRDbG9zZSgp
IGZyb20gdGhlIGNvbm5lY3Rpb24gaXQgc2VudCB0byB0aGUgZGVkaWNhdGVkIGNvbm5lY3Rpb24g
dG8uCisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoQ29ubmVjdGlvbiYsIE1lc3Nh
Z2VOYW1lKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9IC8vIFRoZSBzZW5kZXIgaXMg
ZXhwZWN0ZWQgdG8gYmUgdHJ1c3RlZCwgc28gYWxsIGludmFsaWQgbWVzc2FnZXMgYXJlIHByb2dy
YW1taW5nIGVycm9ycy4KK3ByaXZhdGU6Cit9OworCit9CisKK1JlZjxTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uPiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGUoQ29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbUJ1ZmZlciwgU3RyZWFtQ29ubmVj
dGlvbldvcmtRdWV1ZSYgd29ya1F1ZXVlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0
cmVhbVNlcnZlckNvbm5lY3Rpb24oUmVmIHsgY29ubmVjdGlvbiB9LCBXVEZNb3ZlKHN0cmVhbUJ1
ZmZlciksIHdvcmtRdWV1ZSwgSGFzRGVkaWNhdGVkQ29ubmVjdGlvbjo6Tm8pKTsKK30KKworUmVm
PFN0cmVhbVNlcnZlckNvbm5lY3Rpb24+IFN0cmVhbVNlcnZlckNvbm5lY3Rpb246OmNyZWF0ZVdp
dGhEZWRpY2F0ZWRDb25uZWN0aW9uKEF0dGFjaG1lbnQmJiBjb25uZWN0aW9uSWRlbnRpZmllciwg
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbUJ1ZmZlciwgU3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZSYgd29ya1F1ZXVlKQoreworI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQorICAg
IElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSGFuZGxlIHsgY29ubmVjdGlv
bklkZW50aWZpZXIucmVsZWFzZUZpbGVEZXNjcmlwdG9yKCkgfTsKKyNlbGlmIE9TKERBUldJTikK
KyAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbkhhbmRsZSB7IGNvbm5l
Y3Rpb25JZGVudGlmaWVyLnBvcnQoKSB9OworI2VsaWYgT1MoV0lORE9XUykKKyAgICBJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbkhhbmRsZSB7IGNvbm5lY3Rpb25JZGVudGlm
aWVyLmhhbmRsZSgpIH07CisjZWxzZQorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgSVBDOjpD
b25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25IYW5kbGUgeyB9OworI2VuZGlmCisgICAg
c3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxEZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50PiBzX2Rl
ZGljYXRlZENvbm5lY3Rpb25DbGllbnQ7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIHNfb25j
ZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uoc19vbmNlRmxhZywgW10geworICAgICAgICBzX2Rl
ZGljYXRlZENvbm5lY3Rpb25DbGllbnQuY29uc3RydWN0KCk7CisgICAgfSk7CisgICAgYXV0byBj
b25uZWN0aW9uID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVDbGllbnRDb25uZWN0aW9uKGNvbm5l
Y3Rpb25IYW5kbGUsIHNfZGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudC5nZXQoKSk7CisgICAgYXV0
byBzdHJlYW1Db25uZWN0aW9uID0gYWRvcHRSZWYoKm5ldyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
KFdURk1vdmUoY29ubmVjdGlvbiksIFdURk1vdmUoc3RyZWFtQnVmZmVyKSwgd29ya1F1ZXVlLCBI
YXNEZWRpY2F0ZWRDb25uZWN0aW9uOjpZZXMpKTsKKyAgICByZXR1cm4gc3RyZWFtQ29ubmVjdGlv
bjsKK30KIAotU3RyZWFtU2VydmVyQ29ubmVjdGlvbjo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbihD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtLCBT
dHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiB3b3JrUXVldWUpCi0gICAgOiBtX2Nvbm5lY3Rpb24o
Y29ubmVjdGlvbikKK1N0cmVhbVNlcnZlckNvbm5lY3Rpb246OlN0cmVhbVNlcnZlckNvbm5lY3Rp
b24oUmVmPENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYm
IHN0cmVhbSwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYgd29ya1F1ZXVlLCBIYXNEZWRpY2F0
ZWRDb25uZWN0aW9uIGhhc0RlZGljYXRlZENvbm5lY3Rpb24pCisgICAgOiBtX2Nvbm5lY3Rpb24o
V1RGTW92ZShjb25uZWN0aW9uKSkKICAgICAsIG1fd29ya1F1ZXVlKHdvcmtRdWV1ZSkKICAgICAs
IG1fYnVmZmVyKFdURk1vdmUoc3RyZWFtKSkKKyAgICAsIG1faGFzRGVkaWNhdGVkQ29ubmVjdGlv
bihoYXNEZWRpY2F0ZWRDb25uZWN0aW9uID09IEhhc0RlZGljYXRlZENvbm5lY3Rpb246OlllcykK
K3sKK30KKworU3RyZWFtU2VydmVyQ29ubmVjdGlvbjo6flN0cmVhbVNlcnZlckNvbm5lY3Rpb24o
KQogeworICAgIEFTU0VSVCghbV9oYXNEZWRpY2F0ZWRDb25uZWN0aW9uIHx8ICFtX2Nvbm5lY3Rp
b24tPmlzVmFsaWQoKSk7Cit9CisKK3ZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjo6b3Blbigp
Cit7CisgICAgaWYgKG1faGFzRGVkaWNhdGVkQ29ubmVjdGlvbikgeworICAgICAgICAvLyBGSVhN
RShodHRwOi8vd2Via2l0Lm9yZy9iLzIzODk4Nik6IFdvcmthcm91bmQgZm9yIG5vdCBiZWluZyBh
YmxlIHRvIGRlbGl2ZXIgbWVzc2FnZXMgZnJvbSB0aGUgZGVkaWNhdGVkIGNvbm5lY3Rpb24gdG8g
dGhlIHdvcmsgcXVldWUgdGhlIGNsaWVudCB1c2VzLgorICAgICAgICBtX2Nvbm5lY3Rpb24tPmFk
ZE1lc3NhZ2VSZWNlaXZlUXVldWUoKnRoaXMsIHsgfSk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+
b3BlbigpOworICAgIH0KK30KKwordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOjppbnZhbGlk
YXRlKCkKK3sKKyAgICBpZiAobV9oYXNEZWRpY2F0ZWRDb25uZWN0aW9uKSB7CisgICAgICAgIG1f
Y29ubmVjdGlvbi0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZSh7IH0pOworICAgICAgICBtX2Nv
bm5lY3Rpb24tPmludmFsaWRhdGUoKTsKKyAgICB9CiB9CiAKIHZvaWQgU3RyZWFtU2VydmVyQ29u
bmVjdGlvbjo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyhTdHJlYW1NZXNzYWdlUmVjZWl2ZXImIHJl
Y2VpdmVyLCBSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
KQpAQCAtNDcsMzAgKzExNCwxNSBAQCB2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb246OnN0YXJ0
UmVjZWl2aW5nTWVzc2FnZXMoU3RyZWFtTWVzc2FnZVJlY2VpdmVyJiByZWNlaQogICAgICAgICBt
X3JlY2VpdmVycy5hZGQoa2V5LCByZWNlaXZlcik7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IENh
biB3ZSBhdm9pZCBzeW5jaHJvbm91cyBkaXNwYXRjaCBoZXJlIGJ5IGFkanVzdGluZyB0aGUgYXNz
ZXJ0aW9uIGluIGBDb25uZWN0aW9uOjplbnF1ZXVlTWF0Y2hpbmdNZXNzYWdlc1RvTWVzc2FnZVJl
Y2VpdmVRdWV1ZWA/Ci0gICAgY2FsbE9uTWFpblJ1bkxvb3BBbmRXYWl0KFsmXSB7CisgICAgaWYg
KCFtX2hhc0RlZGljYXRlZENvbm5lY3Rpb24pCiAgICAgICAgIG1fY29ubmVjdGlvbi0+YWRkTWVz
c2FnZVJlY2VpdmVRdWV1ZSgqdGhpcywgeyByZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQgfSk7
Ci0gICAgfSk7CiAgICAgbV93b3JrUXVldWUuYWRkU3RyZWFtQ29ubmVjdGlvbigqdGhpcyk7CiB9
CiAKLXZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyhS
ZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lKQotewotICAgIGNhbGxPbk1haW5SdW5Mb29wQW5kV2Fp
dChbJl0gewotICAgICAgICBtX2Nvbm5lY3Rpb24tPmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUoKnRo
aXMsIHsgcmVjZWl2ZXJOYW1lIH0pOwotICAgIH0pOwotICAgIG1fd29ya1F1ZXVlLmFkZFN0cmVh
bUNvbm5lY3Rpb24oKnRoaXMpOwotfQotCi12b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb246OnN0
b3BSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lKQotewotICAgIG1f
Y29ubmVjdGlvbi0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZSh7IHJlY2VpdmVyTmFtZSB9KTsK
LSAgICBtX3dvcmtRdWV1ZS5yZW1vdmVTdHJlYW1Db25uZWN0aW9uKCp0aGlzKTsKLX0KLQogdm9p
ZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOjpzdG9wUmVjZWl2aW5nTWVzc2FnZXMoUmVjZWl2ZXJO
YW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKIHsKLSAgICBtX2Nvbm5l
Y3Rpb24tPnJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUoeyByZWNlaXZlck5hbWUsIGRlc3RpbmF0
aW9uSUQgfSk7CisgICAgaWYgKCFtX2hhc0RlZGljYXRlZENvbm5lY3Rpb24pCisgICAgICAgIG1f
Y29ubmVjdGlvbi0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZSh7IHJlY2VpdmVyTmFtZSwgZGVz
dGluYXRpb25JRCB9KTsKICAgICBtX3dvcmtRdWV1ZS5yZW1vdmVTdHJlYW1Db25uZWN0aW9uKCp0
aGlzKTsKIAogICAgIGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhf
dD4ocmVjZWl2ZXJOYW1lKSwgZGVzdGluYXRpb25JRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggYWJlZjRlY2ZlM2U5
Mzc4YzE3ZmFiZTM0ZDNjMjQ4M2QxNDA3NDdiZC4uNzEzNWQ0NjNhM2YxMjRjN2IxMGFlYjM0ZDlj
NzhkYjgwZWE2NDRmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0
cmVhbVNlcnZlckNvbm5lY3Rpb24uaApAQCAtNTMsMTkgKzUzLDI1IEBAIGNsYXNzIFN0cmVhbUNv
bm5lY3Rpb25Xb3JrUXVldWU7CiBjbGFzcyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIGZpbmFsIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFN0cmVhbVNlcnZlckNvbm5lY3Rpb24+LCBwcml2
YXRlIE1lc3NhZ2VSZWNlaXZlUXVldWUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0cmVh
bVNlcnZlckNvbm5lY3Rpb24pOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U3RyZWFtU2VydmVy
Q29ubmVjdGlvbj4gY3JlYXRlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0cmVhbUNvbm5lY3Rp
b25CdWZmZXImJiBzdHJlYW1CdWZmZXIsIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmIHdvcmtR
dWV1ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmVhbVNlcnZlckNv
bm5lY3Rpb24oY29ubmVjdGlvbiwgV1RGTW92ZShzdHJlYW1CdWZmZXIpLCB3b3JrUXVldWUpKTsK
LSAgICB9Ci0gICAgflN0cmVhbVNlcnZlckNvbm5lY3Rpb24oKSBmaW5hbCA9IGRlZmF1bHQ7Cisg
ICAgLy8gQ3JlYXRlcyBTdHJlYW1DbGllbnRDb25uZWN0aW9uIHdoZXJlIHRoZSBvdXQgb2Ygc3Ry
ZWFtIG1lc3NhZ2VzIGFuZCBzZXJ2ZXIgcmVwbGllcyBhcmUKKyAgICAvLyByZWNlaXZlZCB0aHJv
dWdoIHRoZSBwYXNzZWQgSVBDOjpDb25uZWN0aW9uLiBUaGUgbWVzc2FnZXMgZnJvbSB0aGUgc2Vy
dmVyIGFyZSBzZW50IHRvCisgICAgLy8gdGhlIHBhc3NlZCBJUEM6OkNvbm5lY3Rpb24uCisgICAg
Ly8gTm90ZTogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdXNlZCBvbmx5IGluIGNhc2VzIHdoZXJl
IHRoZQorICAgIC8vIHN0cmVhbSBzZXJ2ZXIgc3RhcnRzIGxpc3RlbmluZyB0byBtZXNzYWdlcyB3
aXRoIG5ldyBpZGVudGlmaWVycyBvbiB0aGUgc2FtZSB0aHJlYWQgYXMKKyAgICAvLyBpbiB3aGlj
aCB0aGUgc2VydmVyIElQQzo6Q29ubmVjdGlvbiBkaXNwYXRjaCBtZXNzYWdlcy4gQXQgdGhlIHRp
bWUgb2Ygd3JpdGluZywKKyAgICAvLyBJUEM6OkNvbm5lY3Rpb24gZGlzcGF0Y2hlcyBtZXNzYWdl
cyBvbmx5IGluIG1haW4gdGhyZWFkLgorICAgIHN0YXRpYyBSZWY8U3RyZWFtU2VydmVyQ29ubmVj
dGlvbj4gY3JlYXRlKENvbm5lY3Rpb24mLCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYsIFN0cmVh
bUNvbm5lY3Rpb25Xb3JrUXVldWUmKTsKKworICAgIC8vIENyZWF0ZXMgU3RyZWFtU2VydmVyQ29u
bmVjdGlvbiB3aGVyZSB0aGUgb3V0IG9mIHN0cmVhbSBtZXNzYWdlcyBhbmQgc2VydmVyIHJlcGxp
ZXMgYXJlCisgICAgLy8gcmVjZWl2ZWQgdGhyb3VnaCBhIGRlZGlkY2F0ZWQsIG5ldyBJUEM6OkNv
bm5lY3Rpb24uIFRoZSBtZXNzYWdlcyBmcm9tIHRoZSBzZXJ2ZXIgYXJlIHNlbnQgdG8KKyAgICAv
LyB0aGUgZGVkaWNhdGVkIGNvbm5lY2l0b24uCisgICAgc3RhdGljIFJlZjxTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uPiBjcmVhdGVXaXRoRGVkaWNhdGVkQ29ubmVjdGlvbihBdHRhY2htZW50JiYgY29u
bmVjdGlvbklkZW50aWZpZXIsIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiwgU3RyZWFtQ29ubmVj
dGlvbldvcmtRdWV1ZSYpOworICAgIH5TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uKCkgZmluYWw7CiAK
ICAgICB2b2lkIHN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoU3RyZWFtTWVzc2FnZVJlY2VpdmVyJiwg
UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKICAgICAvLyBTdG9wcyB0aGUg
bWVzc2FnZSByZWNlaXB0LiBOb3RlOiBhbHJlYWR5IHJlY2VpdmVkIG1lc3NhZ2VzIG1pZ2h0IHN0
aWxsIGJlIGRlbGl2ZXJlZC4KICAgICB2b2lkIHN0b3BSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZl
ck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwogCi0gICAgdm9pZCBzdGFydFJlY2Vpdmlu
Z01lc3NhZ2VzKFJlY2VpdmVyTmFtZSk7Ci0gICAgdm9pZCBzdG9wUmVjZWl2aW5nTWVzc2FnZXMo
UmVjZWl2ZXJOYW1lKTsKLQogICAgIENvbm5lY3Rpb24mIGNvbm5lY3Rpb24oKSB7IHJldHVybiBt
X2Nvbm5lY3Rpb247IH0KIAogICAgIGVudW0gRGlzcGF0Y2hSZXN1bHQgOiBib29sIHsKQEAgLTc0
LDExICs4MCwxNSBAQCBwdWJsaWM6CiAgICAgfTsKICAgICBEaXNwYXRjaFJlc3VsdCBkaXNwYXRj
aFN0cmVhbU1lc3NhZ2VzKHNpemVfdCBtZXNzYWdlTGltaXQpOwogCisgICAgdm9pZCBvcGVuKCk7
CisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZS4uLiBBcmd1bWVudHM+CiAgICAgdm9pZCBzZW5kU3luY1JlcGx5KENvbm5lY3Rpb246OlN5
bmNSZXF1ZXN0SUQsIEFyZ3VtZW50cyYmLi4uKTsKIAogcHJpdmF0ZToKLSAgICBTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYsIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiwg
U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYpOworICAgIGVudW0gY2xhc3MgSGFzRGVkaWNhdGVk
Q29ubmVjdGlvbiA6IGJvb2wgeyBObywgWWVzIH07CisgICAgU3RyZWFtU2VydmVyQ29ubmVjdGlv
bihSZWY8Q29ubmVjdGlvbj4mJiwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmLCBTdHJlYW1Db25u
ZWN0aW9uV29ya1F1ZXVlJiwgSGFzRGVkaWNhdGVkQ29ubmVjdGlvbik7CiAKICAgICAvLyBNZXNz
YWdlUmVjZWl2ZVF1ZXVlCiAgICAgdm9pZCBlbnF1ZXVlTWVzc2FnZShDb25uZWN0aW9uJiwgc3Rk
Ojp1bmlxdWVfcHRyPERlY29kZXI+JiYpIGZpbmFsOwpAQCAtMTE5LDYgKzEyOSw3IEBAIHByaXZh
dGU6CiAgICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+PiBtX291dE9mU3RyZWFtTWVz
c2FnZXMgV1RGX0dVQVJERURfQllfTE9DSyhtX291dE9mU3RyZWFtTWVzc2FnZXNMb2NrKTsKIAog
ICAgIGJvb2wgbV9pc0Rpc3BhdGNoaW5nU3RyZWFtTWVzc2FnZSB7IGZhbHNlIH07CisgICAgY29u
c3QgYm9vbCBtX2hhc0RlZGljYXRlZENvbm5lY3Rpb247CiAgICAgTG9jayBtX3JlY2VpdmVyc0xv
Y2s7CiAgICAgdXNpbmcgUmVjZWl2ZXJzTWFwID0gSGFzaE1hcDxzdGQ6OnBhaXI8dWludDhfdCwg
dWludDY0X3Q+LCBSZWY8U3RyZWFtTWVzc2FnZVJlY2VpdmVyPj47CiAgICAgUmVjZWl2ZXJzTWFw
IG1fcmVjZWl2ZXJzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9yZWNlaXZlcnNMb2NrKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQpp
bmRleCA5NDcyMzUwZjg1ZjQ5ZDVjYmJiMjQzNDdkNTkzYmViODYyMTRjODM3Li4wMTlhZTMzNzYz
NTE4MjViMDBmZWI1MjQ2NGY5ZjQ0NWYwNGQ4MDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCkBAIC0yNyw2ICsyNyw3IEBA
CiAjaW1wb3J0ICJDb25uZWN0aW9uLmgiCiAKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKKyNp
bXBvcnQgIklQQ1Rlc3Rlci5oIgogI2ltcG9ydCAiSW1wb3J0YW5jZUFzc2VydGlvbi5oIgogI2lt
cG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWFjaE1lc3NhZ2UuaCIKQEAgLTU1OCwxMSArNTU5
LDE0IEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcigpCiAjaWYg
UExBVEZPUk0oTUFDKQogICAgIGRlY29kZXItPnNldEltcG9ydGFuY2VBc3NlcnRpb24oSW1wb3J0
YW5jZUFzc2VydGlvbiB7IGhlYWRlciB9KTsKICNlbmRpZgotCisgICAgCiAgICAgaWYgKGRlY29k
ZXItPm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9uKSB7
CiAgICAgICAgIEFTU0VSVChtX2lzU2VydmVyKTsKLSAgICAgICAgQVNTRVJUKCFtX2lzQ29ubmVj
dGVkKTsKICAgICAgICAgQVNTRVJUKCFtX3NlbmRQb3J0KTsKKyAgICAgICAgaWYgKG1faXNDb25u
ZWN0ZWQpIHsKKyAgICAgICAgICAgIEFTU0VSVF9JU19URVNUSU5HX0lQQygpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CiAKICAgICAgICAgTWFjaFBvcnQgcG9ydDsKICAgICAgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGUocG9ydCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0lQQ1N0cmVhbVRlc3Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENTdHJl
YW1UZXN0ZXIuY3BwCmluZGV4IGFiYjZhYzQ5ZDY4MTdjZTYwMjBmOWM3ZDNhYzdiMjY1YTYxZmRi
MzguLjgyMjY3ZTIxYWRlNjJhOWI2Njc0NWYzZGM4N2E2Y2E1YzMwYjJlZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1N0cmVhbVRlc3Rlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvSVBDU3RyZWFtVGVzdGVyLmNwcApAQCAtNTUsNiArNTUsNyBAQCBJUENTdHJl
YW1UZXN0ZXI6On5JUENTdHJlYW1UZXN0ZXIoKSA9IGRlZmF1bHQ7CiB2b2lkIElQQ1N0cmVhbVRl
c3Rlcjo6aW5pdGlhbGl6ZSgpCiB7CiAgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdGFydFJlY2Vp
dmluZ01lc3NhZ2VzKCp0aGlzLCBNZXNzYWdlczo6SVBDU3RyZWFtVGVzdGVyOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX3N0cmVhbUNvbm5l
Y3Rpb24tPm9wZW4oKTsKICAgICB3b3JrUXVldWUoKS5kaXNwYXRjaChbdGhpc10gewogICAgICAg
ICBtX3N0cmVhbUNvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpJUENTdHJl
YW1UZXN0ZXJQcm94eTo6V2FzQ3JlYXRlZCh3b3JrUXVldWUoKS53YWtlVXBTZW1hcGhvcmUoKSks
IG1faWRlbnRpZmllcik7CiAgICAgfSk7CkBAIC02Miw2ICs2Myw3IEBAIHZvaWQgSVBDU3RyZWFt
VGVzdGVyOjppbml0aWFsaXplKCkKIAogdm9pZCBJUENTdHJlYW1UZXN0ZXI6OnN0b3BMaXN0ZW5p
bmdGb3JJUEMoUmVmPElQQ1N0cmVhbVRlc3Rlcj4mJiByZWZGcm9tQ29ubmVjdGlvbikKIHsKKyAg
ICBtX3N0cmVhbUNvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKICAgICBtX3N0cmVhbUNvbm5lY3Rp
b24tPnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhNZXNzYWdlczo6SVBDU3RyZWFtVGVzdGVyOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICB3b3JrUXVl
dWUoKS5zdG9wQW5kV2FpdEZvckNvbXBsZXRpb24oKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVy
LmgKaW5kZXggNjhiYjZjYmIxNGY1OGIxMzc2MWVhZDljZDViMzhhOWM5ZGI5ZmJiZi4uNzAwOTdi
ODA2YmUzM2ZkZDI1MTBjNDliNWVlMzM4M2NkN2IxZWFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvSVBDVGVzdGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVz
dGVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLSNkZWZpbmUg
QVNTRVJUX0lTX1RFU1RJTkdfSVBDKCkgQVNTRVJUKGlzVGVzdGluZ0lQQygpLCAiVW50cnVzdGVk
IGNvbm5lY3Rpb24gc2VudCBpbnZhbGlkIGRhdGEuIFNob3VsZCBvbmx5IGhhcHBlbiB3aGVuIHRl
c3RpbmcgSVBDLiIpCisjZGVmaW5lIEFTU0VSVF9JU19URVNUSU5HX0lQQygpIEFTU0VSVChXZWJL
aXQ6OmlzVGVzdGluZ0lQQygpLCAiVW50cnVzdGVkIGNvbm5lY3Rpb24gc2VudCBpbnZhbGlkIGRh
dGEuIFNob3VsZCBvbmx5IGhhcHBlbiB3aGVuIHRlc3RpbmcgSVBDLiIpCiAKICNpZiBFTkFCTEUo
SVBDX1RFU1RJTkdfQVBJKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
LmNwcAppbmRleCA1ZTkyMmY3OWE4ZmViYjczNjYyMGU4NDgxNzEzZDdjY2Y4ZTc0MDY4Li5hNWNm
YzE3MDQ4YWYwMGIzODM2YmRmOTg0N2Q1MGNhNTM2NjNlYzdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKQEAgLTU1LDYgKzU1LDcgQEAgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShHUFVQcm9jZXNz
Q29ubmVjdGlvbiYKICAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5hZGRDbGllbnQoKnRoaXMp
OwogICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2
NCgpLCAqdGhpcyk7CiAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZUdyYXBoaWNzQ29u
dGV4dEdMKGF0dHJpYnV0ZXMsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCByZW5kZXJp
bmdCYWNrZW5kLCBtX3N0cmVhbUNvbm5lY3Rpb24uc3RyZWFtQnVmZmVyKCkpLCAwLCBJUEM6OlNl
bmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7Cisg
ICAgbV9zdHJlYW1Db25uZWN0aW9uLm9wZW4oKTsKICAgICAvLyBUT0RPOiBXZSBtdXN0IHdhaXQg
dW50aWwgaW5pdGlhbGl6ZWQsIGJlY2F1c2UgYXQgdGhlIG1vbWVudCB3ZSBjYW5ub3QgcmVjZWl2
ZSBJUEMgbWVzc2FnZXMKICAgICAvLyBkdXJpbmcgd2FpdCB3aGlsZSBpbiBzeW5jaHJvbm91cyBz
dHJlYW0gc2VuZC4gU2hvdWxkIGJlIGZpeGVkIGFzIHBhcnQgb2YgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzIxMS4KICAgICB3YWl0VW50aWxJbml0aWFsaXplZCgp
OwpAQCAtMzM3LDYgKzMzOCw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
YWJhbmRvbkdwdVByb2Nlc3MoKQogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
aXNjb25uZWN0R3B1UHJvY2Vzc0lmTmVlZGVkKCkKIHsKICAgICBpZiAoYXV0byBncHVQcm9jZXNz
Q29ubmVjdGlvbiA9IHN0ZDo6ZXhjaGFuZ2UobV9ncHVQcm9jZXNzQ29ubmVjdGlvbiwgbnVsbHB0
cikpIHsKKyAgICAgICAgbV9zdHJlYW1Db25uZWN0aW9uLmludmFsaWRhdGUoKTsKICAgICAgICAg
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPnJlbW92ZUNsaWVudCgqdGhpcyk7CiAgICAgICAgIGdwdVBy
b2Nlc3NDb25uZWN0aW9uLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSk7CiAgICAg
ICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6R1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3Nh
Z2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuY3BwCmluZGV4IDgzMjc2NjMzY2I1NzdkOTU4YjQ0NDVhYTc0Yjk3MTE0NDUw
NzE0M2YuLmU5MjRlYWY1OWIyYzk2MGFmMDk4MjIyNDMwNWYyYmE2YTcyMzkyYTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTcwLDEzICs3MCwxNCBAQCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6On5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHko
KQogR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZW5z
dXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKQogewogICAgIGlmICghbV9ncHVQcm9jZXNzQ29ubmVj
dGlvbikgewotICAgICAgICBhdXRvJiBncHVQcm9jZXNzQ29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7Ci0gICAgICAgIGdwdVBy
b2Nlc3NDb25uZWN0aW9uLmFkZENsaWVudCgqdGhpcyk7Ci0gICAgICAgIGdwdVByb2Nlc3NDb25u
ZWN0aW9uLm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKCkudG9VSW50NjQoKSwgKnRoaXMpOworICAgICAgICBtX2dw
dVByb2Nlc3NDb25uZWN0aW9uID0gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVBy
b2Nlc3NDb25uZWN0aW9uKCk7CisgICAgICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmFkZENs
aWVudCgqdGhpcyk7CisKICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNvbm5lY3Rpb25C
dWZmZXJTaXplID0gMSA8PCAyMTsKLSAgICAgICAgbV9zdHJlYW1Db25uZWN0aW9uID0gbWFrZVVu
aXF1ZTxJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24+KGdwdVByb2Nlc3NDb25uZWN0aW9uLmNv
bm5lY3Rpb24oKSwgY29ubmVjdGlvbkJ1ZmZlclNpemUpOwotICAgICAgICBncHVQcm9jZXNzQ29u
bmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Q3JlYXRlUmVuZGVyaW5nQmFja2VuZChtX3BhcmFtZXRlcnMsIG1fc3RyZWFtQ29ubmVj
dGlvbi0+c3RyZWFtQnVmZmVyKCkpLCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2Fn
ZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7Ci0gICAgICAgIG1fZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24gPSBncHVQcm9jZXNzQ29ubmVjdGlvbjsKKyAgICAgICAgYXV0byBbc3RyZWFtQ29ubmVj
dGlvbiwgZGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudElkZW50aWZlcl0gPSBJUEM6OlN0cmVhbUNs
aWVudENvbm5lY3Rpb246OmNyZWF0ZVdpdGhEZWRpY2F0ZWRDb25uZWN0aW9uKCp0aGlzLCBjb25u
ZWN0aW9uQnVmZmVyU2l6ZSk7CisgICAgICAgIG1fc3RyZWFtQ29ubmVjdGlvbiA9IFdURk1vdmUo
c3RyZWFtQ29ubmVjdGlvbik7CisgICAgICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+b3BlbigpOwor
ICAgICAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlUmVuZGVyaW5nQmFja2VuZChtX3Bh
cmFtZXRlcnMsIGRlZGljYXRlZENvbm5lY3Rpb25DbGllbnRJZGVudGlmZXIsIG1fc3RyZWFtQ29u
bmVjdGlvbi0+c3RyZWFtQnVmZmVyKCkpLCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVz
c2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiAgICAgfQogICAgIHJldHVybiAqbV9n
cHVQcm9jZXNzQ29ubmVjdGlvbjsKIH0KQEAgLTEwMSw2ICsxMDIsNyBAQCB2b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6ZGlzY29ubmVjdEdQVVByb2Nlc3MoKQogICAgIG1fZ2V0UGl4
ZWxCdWZmZXJTaGFyZWRNZW1vcnkgPSBudWxscHRyOwogICAgIG1fcmVuZGVyaW5nVXBkYXRlSUQg
PSB7IH07CiAgICAgbV9kaWRSZW5kZXJpbmdVcGRhdGVJRCA9IHsgfTsKKyAgICBtX3N0cmVhbUNv
bm5lY3Rpb24tPmludmFsaWRhdGUoKTsKICAgICBtX3N0cmVhbUNvbm5lY3Rpb24gPSBudWxscHRy
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAppbmRleCAxZDAwZjRm
OTZjZTQ4ZWNjNDYyNGQzODJjNTBlMjkxZjNlN2M3MTJhLi42Y2E2Mzg1ZDMwMGIxOTExZjdkY2Rh
NWQ4MzZmZWRjNzg1ZDJjNTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmgKQEAgLTE3Miw5ICsxNzIsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZsdXNoKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlKFJl
bmRlcmluZ1VwZGF0ZUlEIGRpZFJlbmRlcmluZ1VwZGF0ZUlEKTsKIAorICAgIEdQVVByb2Nlc3ND
b25uZWN0aW9uKiBtX2dwdVByb2Nlc3NDb25uZWN0aW9uIHsgbnVsbHB0ciB9OworICAgIFJlZlB0
cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpTdHJlYW1DbGllbnRDb25uZWN0aW9uPiBtX3N0cmVhbUNvbm5lY3Rpb247CiAgICAgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7Ci0gICAgV2Vh
a1B0cjxHUFVQcm9jZXNzQ29ubmVjdGlvbj4gbV9ncHVQcm9jZXNzQ29ubmVjdGlvbjsKICAgICBS
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgeyAqdGhp
cyB9OwogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IG1fZ2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1v
cnk7CiAgICAgV2ViQ29yZTo6VGltZXIgbV9kZXN0cm95R2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1v
cnlUaW1lciB7ICp0aGlzLCAmUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkZXN0cm95R2V0
UGl4ZWxCdWZmZXJTaGFyZWRNZW1vcnkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5LmNwcApp
bmRleCA4NDMwNGE3NzY1ZDc5ZjI3NTE4ODkxNWFhZGQzMDE4ZWIxNjE2ZGIyLi5hNmQ4ODEyYmFk
ZDdkOTA1ZGI3Y2IzZDYxMGE0NWIwNmJmMzNlY2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVUHJv
eHkuY3BwCkBAIC01MSw2ICs1MSw3IEBAIFJlbW90ZUdQVVByb3h5OjpSZW1vdGVHUFVQcm94eShH
UFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIFdlYkdQCiAgICAgbV9n
cHVQcm9jZXNzQ29ubmVjdGlvbi0+YWRkQ2xpZW50KCp0aGlzKTsKICAgICBtX2dwdVByb2Nlc3ND
b25uZWN0aW9uLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OlJlbW90ZUdQVVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIudG9V
SW50NjQoKSwgKnRoaXMpOwogICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVSZW1vdGVH
UFUoaWRlbnRpZmllciwgcmVuZGVyaW5nQmFja2VuZCwgbV9zdHJlYW1Db25uZWN0aW9uLnN0cmVh
bUJ1ZmZlcigpKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldh
aXRpbmdGb3JTeW5jUmVwbHkpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi5vcGVuKCk7CiAgICAg
Ly8gVE9ETzogV2UgbXVzdCB3YWl0IHVudGlsIGluaXRpYWxpemVkLCBiZWNhdXNlIGF0IHRoZSBt
b21lbnQgd2UgY2Fubm90IHJlY2VpdmUgSVBDIG1lc3NhZ2VzCiAgICAgLy8gZHVyaW5nIHdhaXQg
d2hpbGUgaW4gc3luY2hyb25vdXMgc3RyZWFtIHNlbmQuIFNob3VsZCBiZSBmaXhlZCBhcyBwYXJ0
IG9mIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcyMTEuCiAgICAg
d2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKQEAgLTY4LDYgKzY5LDcgQEAgdm9pZCBSZW1vdGVHUFVQ
cm94eTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYg
Y29ubmVjdGkKIHZvaWQgUmVtb3RlR1BVUHJveHk6OmFiYW5kb25HUFVQcm9jZXNzKCkKIHsKICAg
ICBhdXRvIGdwdVByb2Nlc3NDb25uZWN0aW9uID0gc3RkOjpleGNoYW5nZShtX2dwdVByb2Nlc3ND
b25uZWN0aW9uLCBudWxscHRyKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24uaW52YWxpZGF0ZSgp
OwogICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdQVVByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1fYmFja2luZy50b1VJbnQ2NCgpKTsKICAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9u
ID0gbnVsbHB0cjsKICAgICBtX2xvc3QgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcAppbmRleCBkYjVhYThlNDBkM2RiZjZh
YmJjNzRmZmEwYWNjMDhiMmRkMmI1NmY1Li5lZGZlOTA2ZTg0ZTgwNTA2NzdkNzY2NWFlN2UwYTE4
M2JkYWE0MjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9J
UENUZXN0aW5nQVBJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9J
UENUZXN0aW5nQVBJLmNwcApAQCAtNTQxLDEwICs1NDEsMTEgQEAgSlNWYWx1ZVJlZiBKU0lQQ1N0
cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmRNZXNzYWdlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamUKIAogICAgIGF1dG8gW2Rlc3RpbmF0aW9uSUQsIG1lc3NhZ2VOYW1lLCB0aW1lb3V0XSA9
ICppbmZvOwogICAgIGF1dG8mIHN0cmVhbUNvbm5lY3Rpb24gPSBqc1N0cmVhbUNvbm5lY3Rpb24t
PmNvbm5lY3Rpb24oKTsKKyAgICBhdXRvJiBjb25uZWN0aW9uID0gc3RyZWFtQ29ubmVjdGlvbi5j
b25uZWN0aW9uRm9yVGVzdGluZygpOwogCiAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZVJl
ZjxJUEM6OkVuY29kZXI+KG1lc3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklEKTsKICAgICBpZiAocHJl
cGFyZVRvU2VuZE91dE9mU3RyZWFtTWVzc2FnZShjb250ZXh0LCBhcmd1bWVudENvdW50LCBhcmd1
bWVudHMsICpqc1N0cmVhbUNvbm5lY3Rpb24tPm1fanNJUEMsIHN0cmVhbUNvbm5lY3Rpb24sIGVu
Y29kZXIuZ2V0KCksIGRlc3RpbmF0aW9uSUQsIHRpbWVvdXQsIGV4Y2VwdGlvbikpCi0gICAgICAg
IHN0cmVhbUNvbm5lY3Rpb24ubV9jb25uZWN0aW9uLnNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2Rl
ciksIHsgfSk7CisgICAgICAgIGNvbm5lY3Rpb24uc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVy
KSwgeyB9KTsKIAogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KQEAgLTU2NiwxMyArNTY3LDE0
IEBAIEpTVmFsdWVSZWYgSlNJUENTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kU3luY01lc3Nh
Z2UoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTCiAKICAgICBhdXRvIFtkZXN0aW5hdGlvbklELCBt
ZXNzYWdlTmFtZSwgdGltZW91dF0gPSAqaW5mbzsKICAgICBhdXRvJiBzdHJlYW1Db25uZWN0aW9u
ID0ganNTdHJlYW1Db25uZWN0aW9uLT5jb25uZWN0aW9uKCk7CisgICAgYXV0byYgY29ubmVjdGlv
biA9IHN0cmVhbUNvbm5lY3Rpb24uY29ubmVjdGlvbkZvclRlc3RpbmcoKTsKIAogICAgIElQQzo6
Q29ubmVjdGlvbjo6U3luY1JlcXVlc3RJRCBzeW5jUmVxdWVzdElEOwotICAgIGF1dG8gZW5jb2Rl
ciA9IHN0cmVhbUNvbm5lY3Rpb24ubV9jb25uZWN0aW9uLmNyZWF0ZVN5bmNNZXNzYWdlRW5jb2Rl
cihtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCwgc3luY1JlcXVlc3RJRCk7CisgICAgYXV0byBl
bmNvZGVyID0gY29ubmVjdGlvbi5jcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIobWVzc2FnZU5hbWUs
IGRlc3RpbmF0aW9uSUQsIHN5bmNSZXF1ZXN0SUQpOwogICAgIGlmICghcHJlcGFyZVRvU2VuZE91
dE9mU3RyZWFtTWVzc2FnZShjb250ZXh0LCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMsICpqc1N0
cmVhbUNvbm5lY3Rpb24tPm1fanNJUEMsIHN0cmVhbUNvbm5lY3Rpb24sIGVuY29kZXIuZ2V0KCks
IGRlc3RpbmF0aW9uSUQsIHRpbWVvdXQsIGV4Y2VwdGlvbikpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAotICAgIGlmIChhdXRvIHJlcGx5RGVjb2RlciA9
IHN0cmVhbUNvbm5lY3Rpb24ubV9jb25uZWN0aW9uLnNlbmRTeW5jTWVzc2FnZShzeW5jUmVxdWVz
dElELCBXVEZNb3ZlKGVuY29kZXIpLCB0aW1lb3V0LCB7IH0pKSB7CisgICAgaWYgKGF1dG8gcmVw
bHlEZWNvZGVyID0gY29ubmVjdGlvbi5zZW5kU3luY01lc3NhZ2Uoc3luY1JlcXVlc3RJRCwgV1RG
TW92ZShlbmNvZGVyKSwgdGltZW91dCwgeyB9KSkgewogICAgICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9DQVRDSF9TQ09QRShnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICBhdXRvKiBqc1Jl
c3VsdCA9IGpzUmVzdWx0RnJvbVJlcGx5RGVjb2RlcihnbG9iYWxPYmplY3QsIG1lc3NhZ2VOYW1l
LCAqcmVwbHlEZWNvZGVyKTsKICAgICAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KaW5k
ZXggNjI0ZTczN2E1OGIzNDVlYTNmNzA4NWIyNzY2YzQxNTRlNzNmZTEwYS4uNGQ5MzQzMDc3NzNm
YjdjMDUyYWQ3OGViNWE3NmY4MjI2YmVhMzUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpAQCAtMzc5LDcgKzM3OSw3IEBAIHZv
aWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnVwZGF0ZVJlbmRlcmluZygpCiAKICAgICBN
ZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVl
IG1lc3NhZ2UobGF5ZXJUcmFuc2FjdGlvbiwgc2Nyb2xsaW5nVHJhbnNhY3Rpb24pOwogICAgIGF1
dG8gY29tbWl0RW5jb2RlciA9IG1ha2VVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPihNZXNzYWdlczo6
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlOjpuYW1lKCks
IG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKLSAgICBjb21taXRFbmNvZGVyLmdldCgpIDw8IG1l
c3NhZ2UuYXJndW1lbnRzKCk7CisgICAgY29tbWl0RW5jb2Rlci5nZXQoKSA8PCBXVEZNb3ZlKG1l
c3NhZ2UpLmFyZ3VtZW50cygpOwogCiAgICAgYXV0byBmbHVzaGVycyA9IGJhY2tpbmdTdG9yZUNv
bGxlY3Rpb24uZGlkRmx1c2hMYXllcnMobGF5ZXJUcmFuc2FjdGlvbik7CiAgICAgUmVmUHRyPEJh
Y2tpbmdTdG9yZUZsdXNoZXI+IGJhY2tpbmdTdG9yZUZsdXNoZXIgPSBCYWNraW5nU3RvcmVGbHVz
aGVyOjpjcmVhdGUoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKSwgV1RGTW92ZShjb21taXRFbmNvZGVyKSwgV1RGTW92ZShmbHVzaGVycykpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457031</attachid>
            <date>2022-04-08 02:02:55 -0700</date>
            <delta_ts>2022-04-11 05:56:12 -0700</delta_ts>
            <desc>For landing</desc>
            <filename>bug-238516-20220408120253.patch</filename>
            <type>text/plain</type>
            <size>53569</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg5OWNmZDQ2NTU3N2ViZjFi
YjZkNDgxMzBmOWYxNDc5ODVlMTA0M2EuLjJjZDlmODRhOTlkZWEyOWYxNGNjMzkzMTMxMWIwMzA4
YjE0OWVkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAyIEBACisyMDIyLTA0LTA3ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCBzaG91bGQgaGF2ZSBkZWRpY2F0ZWQgSVBDOjpDb25uZWN0aW9uIGZvciBvdXQtb2Yt
c3RyZWFtIG1lc3NhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzg1MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVc2UgZGVkaWNhdGVkIElQQzo6Q29ubmVjdGlvbiBmb3IgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCBJUEMgc3RyZWFtIGNvbm5lY3Rpb24gaW5zdGVhZAorICAgICAgICBvZiB1c2luZyB0
aGUgV1AtR1BVUCBtYWluIGNvbm5lY3Rpb24uIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIgc3Rh
cnRzIGxpc3RlbmluZyB0bworICAgICAgICBpdHMgbWVzc2FnZXMgaW4gdGhlIHdvcmtlciB0aHJl
YWQuIEF0IHRoYXQgcG9pbnQsIHNvbWUgb3V0LW9mLXN0cmVhbSBtZXNzYWdlIGZvciB0aGF0Cisg
ICAgICAgIGlkIG1pZ2h0IGFscmVhZHkgaGF2ZSBiZWVuIGRpc3BhdGNoZWQgdG8gbWFpbiB0aHJl
YWQsIGNhdXNpbmcgbWlzc2luZyBtZXNzYWdlIGFuZCBhc3NlcnQuCisKKyAgICAgICAgSW5zdGVh
ZCwgdXNlIGRlZGljYXRlZCBjb25uZWN0aW9uIGFuZCByb3V0ZSBhbGwgdGhlIG1lc3NhZ2VzIHRv
IHRoZSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uCisgICAgICAgIGluIGEgIm1lc3NhZ2UgcXVldWUi
LiBUaGlzIHdheSB3aGVuIGVhY2ggb3V0LW9mLXN0cmVhbSBtZXNzYWdlIG1hcmtlciBpcyBwcm9j
ZXNzZWQsIHRoZQorICAgICAgICBtZXNzYWdlIHdpbGwgYmUsIGRpcmVjdGx5IG9yIGV2ZW50dWFs
bHksIGZvdW5kIGZyb20gdGhlIG1lc3NhZ2UgcXVldWUuCisKKyAgICAgICAgUmVtb3ZlIHdvcmth
cm91bmRzOgorICAgICAgICAgLSBBZGRpbmcgYSBsaXN0ZW5lciB0byB0aGUgbWFpbiBXUC1HUFVQ
IGNvbm5lY3Rpb24gZm9yIGFsbCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyIG1lc3NhZ2VzCisg
ICAgICAgICAgIGFuZCByb3V0aW5nIHRoZW0gdG8gcGFydGljdWxhciBTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uLiBUaGlzIHdhcyBwcm9ibGVtYXRpYyBzaW5jZQorICAgICAgICAgICB0aGVyZSBhcmUg
bWFueSBSUkIgU3RyZWFtU2VydmVyQ29ubmVjdGlvbiBpbnN0YW5jZXMsIG9uZSBwZXIgUGFnZSwg
YnV0IG9ubHkgb25lIFdQLUdQVVAKKyAgICAgICAgICAgY29ubmVjdGlvbi4KKyAgICAgICAgIC0g
UkVMRUFTRV9MT0cgaW4gTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcCBhYm91dCB3YXJuaW5nIGZvciB0
aGUgYWJvdmUuIFR1cm4gdGhpcyBiYWNrIGludG8gYW4KKyAgICAgICAgICAgQVNTRVJULgorCisg
ICAgICAgIFNpbmNlIElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBhbmQgSVBDOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uIGFyZSBsaWtlIElQQzo6Q29ubmVjdGlvbiwKKyAgICAgICAgYWRkIG9w
ZW4oKSBhbmQgaW52YWxpZGF0ZSgpIGNhbGxzLiBUaGVzZSBoYXZlIHNhbWUgY29udHJhY3QgYXMg
d2l0aCBJUEM6OkNvbm5lY3Rpb246CisgICAgICAgIG9wZW4oKSBzaG91bGQgYmUgY2FsbGVkIGlm
IGNvbm5lY3Rpb24gaXMgdG8gYmUgdXNlZCwgaW52YWxpZGF0ZSgpIG11c3QgYmUgY2FsbGVkIGlm
IG9wZW4oKSB3YXMgY2FsbGVkLgorICAgICAgICBUaGVzZSBjYWxscyBoYXZlIGFuIGVmZmVjdCBj
dXJyZW50bHkgb25seSB3aXRoIGRlZGljYXRlZCBjb25uZWN0aW9ucywgYnV0IHRoZXNlIGFyZSBh
ZGRlZCB0byBhbGwKKyAgICAgICAgSVBDOjpTdHJlYW0qQ29ubmVjdGlvbiBjbGllbnRzIGZvciBj
b25zaXN0ZW5jeSBhbmQgZnV0dXJlIHVzZXMuCisKKyAgICAgICAgQ2hhbmdlcyBzZW1hbnRpY3Mg
b2YgSVBDOjpDb25uZWN0aW9uIHNsaWdodGx5OgorICAgICAgICBCZWZvcmUsIHRoZXJlIHdhcyBu
byB1bnRydXN0ZWQgaG9sZGVycyBvZiAic2VydmVyIiBJUEM6OkNvbm5lY3Rpb24sIGUuZy4gdGhl
IElQQzo6Q29ubmVjdGlvbiBpbnN0YW5jZXMKKyAgICAgICAgd2VyZSBuZXZlciBpbnN0YW50aWF0
ZWQgYnkgV1AuCisgICAgICAgIEFmdGVyLCB1bnRydXN0ZWQgV1AgaW5zdGFudGlhdGVzIHRoZXNl
IElQQyBzdHJlYW0gZGVkaWNhdGVkIGNvbm5lY3Rpb25zLgorICAgICAgICBUaGlzIGlzIGFjY291
bnRlZCBpbiB0aGUgY2FzZSB3aGVyZSBJUEM6OkNvbm5lY3Rpb24gZW5zdXJlcyB0aGF0IElQQzo6
TWVzc2FnZU5hbWVzOjpJbml0aWFsaXplQ29ubmVjdGlvbgorICAgICAgICBtZXNzYWdlIGlzIG5v
dCBhY3RlZCBvbiB0d2ljZS4KKworICAgICAgICBUZXN0ZWQgYnkgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9saW5rcy9saW5rcy1jcmVhdGVkLWJ5LWEtYW5k
LWFyZWEtZWxlbWVudHMvdGFyZ2V0X2JsYW5rX2ltcGxpY2l0X25vb3BlbmVyLmh0bWwKKyAgICAg
ICAgICAgICAgICAgIC0tY2hpbGQtcHJvY2Vzc2VzPTEgLS1leHBlcmltZW50YWwtZmVhdHVyZT1V
c2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVyaW5nRW5hYmxlZD10cnVlIC0taXRlcmF0aW9ucz0xMDAg
LS1mb3JjZSAtLXNpbXVsYXRvcgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Y3JlYXRlUmVuZGVyaW5nQmFja2VuZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpzdG9wTGlzdGVuaW5nRm9ySVBDKToKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c3RhcnRMaXN0ZW5pbmdGb3JJUEMpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdG9wTGlzdGVuaW5nRm9ySVBD
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUdQVS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdQVTo6aW5pdGlhbGl6ZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdQVTo6c3RvcExpc3RlbmluZ0ZvcklQQyk6CisgICAg
ICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwOgorICAgICAgICAo
SVBDOjpNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwOjphZGRJbXBsKToKKyAgICAgICAgKElQQzo6TWVz
c2FnZVJlY2VpdmVRdWV1ZU1hcDo6cmVtb3ZlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5l
Y3Rpb246OmNyZWF0ZVdpdGhEZWRpY2F0ZWRDb25uZWN0aW9uKToKKyAgICAgICAgKElQQzo6U3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbik6CisgICAgICAgIChJ
UEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246On5TdHJlYW1DbGllbnRDb25uZWN0aW9uKToKKyAg
ICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6b3Blbik6CisgICAgICAgIChJUEM6
OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OmludmFsaWRhdGUpOgorICAgICAgICAoSVBDOjpTdHJl
YW1DbGllbnRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9yVGVzdGluZyk6CisgICAgICAgICogUGxh
dGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAgKElQQzo6U3RyZWFt
Q2xpZW50Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5l
Y3Rpb246OnNlbmRTeW5jKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjp0cnlTZW5kU3luY1N0cmVhbSk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
OjpjcmVhdGVXaXRoRGVkaWNhdGVkQ29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVhbVNl
cnZlckNvbm5lY3Rpb25CYXNlOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSk6CisgICAgICAg
IChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjp+U3RyZWFtU2VydmVyQ29ubmVjdGlv
bkJhc2UpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6b3Blbik6
CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjppbnZhbGlkYXRlKToK
KyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0YXJ0UmVjZWl2aW5n
TWVzc2FnZXNJbXBsKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6
OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogU2hhcmVkL0lQQ1N0cmVhbVRlc3Rlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OklQQ1N0cmVhbVRlc3Rlcjo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJLaXQ6OklQQ1N0cmVhbVRlc3Rlcjo6c3RvcExpc3RlbmluZ0ZvcklQQyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkaXNjb25uZWN0R3B1UHJvY2Vzc0lmTmVlZGVkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmVuc3Vy
ZUdQVVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpkaXNjb25uZWN0R1BVUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR1BVUHJveHk6OlJlbW90ZUdQVVByb3h5KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR1BVUHJveHk6OmFiYW5kb25HUFVQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklQQ1Rl
c3RpbmdBUEk6OkpTSVBDU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZE1lc3NhZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU0lQQ1N0cmVhbUNsaWVudENvbm5lY3Rpb246
OnNlbmRTeW5jTWVzc2FnZSk6CisKIDIwMjItMDQtMDcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIFVzZSB0aGUgc2FtZSBjYWxsYmFjayBtZWNoYW5pc20gZm9y
IFNlcnZpY2VXb3JrZXIgb3BlbldpbmRvdyBhbmQgbmF2aWdhdGUgaW4gVUlQcm9jZXNzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggOGE1NjVkZjRmZjg0MzE1MmY2NTc1MjFhZTY3ZTMxOTZkMDA4ZDRjOS4uMzMw
YjAzOWNkZjg1NmY4OTIwY2NlYzlhZTM3OWZhOTdlODllNzU1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAt
NTMyLDEwICs1MzIsMTAgQEAgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkmIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmltYWdlRGVjb2RlckFWRlByb3h5KCkKIH0KICNlbmRpZgogCi12b2lk
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIGNyZWF0aW9uUGFyYW1ldGVycywg
SVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtQnVmZmVyKQordm9pZCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiBjcmVhdGlvblBhcmFtZXRlcnMsIElQQzo6QXR0
YWNobWVudCYmIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXImJiBzdHJlYW1CdWZmZXIpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRNYXAuZW5zdXJlKGNyZWF0aW9uUGFyYW1ldGVycy5pZGVudGlmaWVyLCBbJl0o
KSB7Ci0gICAgICAgIHJldHVybiBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUg
eyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoY3JlYXRpb25Q
YXJhbWV0ZXJzKSwgV1RGTW92ZShzdHJlYW1CdWZmZXIpKSB9OworICAgICAgICByZXR1cm4gSVBD
OjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlIHsgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGNyZWF0aW9uUGFyYW1ldGVycyksIFdURk1vdmUoY29u
bmVjdGlvbklkZW50aWZpZXIpLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlcikpIH07CiAgICAgfSk7CiAg
ICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCmluZGV4IGI3MmMwYjM3MzYyYjczOWRiZmEzZWQ5YTBjNGEwMWUzYjIxYjFlOTkuLjAzNDRl
M2NjMGM0ZjgxMzJlN2RmMzk1NTUwNzE1Mzk1ODYzZTYwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMjE3LDcg
KzIxNyw3IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXImIG1lZGlh
UmVjb3JkZXJNYW5hZ2VyKCk7CiAjZW5kaWYKIAotICAgIHZvaWQgY3JlYXRlUmVuZGVyaW5nQmFj
a2VuZChSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYsIElQQzo6U3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKKyAgICB2b2lkIGNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQo
UmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmLCBJUEM6OkF0dGFjaG1l
bnQmJiwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYpOwogICAgIHZvaWQgcmVsZWFzZVJl
bmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogCiAjaWYgRU5BQkxF
KFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAxYjgzMmEzMTgzZjgyOTRl
YzA1N2NjYTljNzZmYWJhMDAyNGU1NGJiLi5lYTNjMTQ3ZWM0MTljM2Y0OTU1NjMxY2UyMDUzZGUy
MGQ2YjY1YmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjMsNyArMjMsNyBA
QAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogbWVzc2FnZXMgLT4gR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyBXYW50c0Rpc3BhdGNoTWVzc2FnZSB7Ci0gICAgdm9pZCBDcmVhdGVSZW5kZXJp
bmdCYWNrZW5kKHN0cnVjdCBXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBh
cmFtZXRlcnMgY3JlYXRpb25QYXJhbWV0ZXJzLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIg
c3RyZWFtQnVmZmVyKQorICAgIHZvaWQgQ3JlYXRlUmVuZGVyaW5nQmFja2VuZChzdHJ1Y3QgV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzIGNyZWF0aW9uUGFy
YW1ldGVycywgSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyLCBJUEM6OlN0cmVh
bUNvbm5lY3Rpb25CdWZmZXIgc3RyZWFtQnVmZmVyKQogICAgIHZvaWQgUmVsZWFzZVJlbmRlcmlu
Z0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcikKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgdm9pZCBDcmVhdGVHcmFwaGlj
c0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0
dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHN0cmVh
bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCmluZGV4IDZkYjY0NDBjZjk2ZDkyYWMyZDdmNWJl
MWQ1MjIzYWUwNWEwMTcxYjQuLmYwMjQyYWY3YTQ1MDBhNTA0MjZjM2IyMjU1NDE0MjM2NjgzNmM3
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcApAQCAtODYsNiArODYsNyBAQCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKCkKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OmluaXRpYWxpemUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiYgYXR0cmlidXRlcykKIHsKICAgICBhc3NlcnRJc01haW5SdW5Mb29wKCk7CisgICAgbV9zdHJl
YW1Db25uZWN0aW9uLT5vcGVuKCk7CiAgICAgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1X
b3JrUXVldWUoKS5kaXNwYXRjaChbYXR0cmlidXRlcyA9IFdURk1vdmUoYXR0cmlidXRlcyksIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSgpIG11dGFibGUgewogICAgICAgICBwcm90ZWN0
ZWRUaGlzLT53b3JrUXVldWVJbml0aWFsaXplKFdURk1vdmUoYXR0cmlidXRlcykpOwogICAgIH0p
OwpAQCAtOTUsNiArOTYsNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjppbml0aWFs
aXplKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZQogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6c3RvcExpc3RlbmluZ0ZvcklQQyhSZWY8UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w+JiYgcmVmRnJvbUNvbm5lY3Rpb24pCiB7CiAgICAgYXNzZXJ0SXNNYWluUnVuTG9v
cCgpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOwogICAgIG1fc3RyZWFt
Q29ubmVjdGlvbi0+c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKICAgICByZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdv
cmtRdWV1ZSgpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShyZWZGcm9tQ29ubmVj
dGlvbildKCkgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT53b3JrUXVldWVVbmluaXRpYWxpemUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCBkMzZjYzQwMjdkMjYyNjNjMGY0ODA5ZDgw
MWM5YjIwODBmMmZkYTFlLi5kNWNjMDk5OWM2YTNiMjNlNzJlNWJiYWY0MzM2NDZlNTFjMjQxN2Q1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC03NiwxNiArNzYsMTYgQEAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIGNyZWF0aW9uUGFyYW1ldGVycywgSVBDOjpTdHJlYW1D
b25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtQnVmZmVyKQorUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3Jl
YXRpb25QYXJhbWV0ZXJzJiYgY3JlYXRpb25QYXJhbWV0ZXJzLCBJUEM6OkF0dGFjaG1lbnQmJiBj
b25uZWN0aW9uSWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFt
QnVmZmVyKQogewotICAgIGF1dG8gaW5zdGFuY2UgPSBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgV1RGTW92ZShjcmVhdGlvblBh
cmFtZXRlcnMpLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlcikpKTsKKyAgICBhdXRvIGluc3RhbmNlID0g
YWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MsIFdURk1vdmUoY3JlYXRpb25QYXJhbWV0ZXJzKSwgV1RGTW92ZShjb25uZWN0aW9uSWRl
bnRpZmllciksIFdURk1vdmUoc3RyZWFtQnVmZmVyKSkpOwogICAgIGluc3RhbmNlLT5zdGFydExp
c3RlbmluZ0ZvcklQQygpOwogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAotUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3Jl
YXRpb25QYXJhbWV0ZXJzJiYgY3JlYXRpb25QYXJhbWV0ZXJzLCBJUEM6OlN0cmVhbUNvbm5lY3Rp
b25CdWZmZXImJiBzdHJlYW1CdWZmZXIpCitSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiBj
cmVhdGlvblBhcmFtZXRlcnMsIElQQzo6QXR0YWNobWVudCYmIGNvbm5lY3Rpb25JZGVudGlmaWVy
LCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW1CdWZmZXIpCiAgICAgOiBtX3dv
cmtRdWV1ZShJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OmNyZWF0ZSgiUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCB3b3JrIHF1ZXVlIikpCi0gICAgLCBtX3N0cmVhbUNvbm5lY3Rpb24oSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGUoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jb25uZWN0aW9uKCksIFdURk1vdmUoc3RyZWFtQnVmZmVyKSwgbV93b3JrUXVldWUuZ2V0KCkp
KQorICAgICwgbV9zdHJlYW1Db25uZWN0aW9uKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbjo6
Y3JlYXRlV2l0aERlZGljYXRlZENvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uSWRlbnRpZmll
ciksIFdURk1vdmUoc3RyZWFtQnVmZmVyKSwgbV93b3JrUXVldWUuZ2V0KCkpKQogICAgICwgbV9y
ZW1vdGVSZXNvdXJjZUNhY2hlKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mud2ViUHJvY2Vzc0lk
ZW50aWZpZXIoKSkKICAgICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKQogICAgICwgbV9yZXNvdXJjZU93bmVyKGdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3Mud2ViUHJvY2Vzc0lkZW50aXR5KCkpCkBAIC0xMDMsMTcgKzEwMywxNSBAQCB2b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN0YXJ0TGlzdGVuaW5nRm9ySVBDKCkKICAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fcmVtb3RlRGlzcGxheUxpc3RzTG9jayB9OwogICAgICAgICBtX2Nh
blJlZ2lzdGVyUmVtb3RlRGlzcGxheUxpc3RzID0gdHJ1ZTsKICAgICB9Ci0KICAgICBtX3N0cmVh
bUNvbm5lY3Rpb24tPnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoKnRoaXMsIE1lc3NhZ2VzOjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIudG9VSW50NjQoKSk7Ci0gICAgLy8gUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlciBtZXNzYWdlcyBkZXBlbmQgb24gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgYmVjYXVzZSBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kIGNyZWF0ZXMgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlciBh
bmQKLSAgICAvLyBtYWtlcyBhIHJlY2VpdmUgcXVldWUgZm9yIGl0LiBJbiBvcmRlciB0byBndWFy
YW50ZWUgY29ycmVjdCBvcmRlcmluZywgZW5zdXJlIHRoYXQgYWxsIFJlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXIgbWVzc2FnZXMgYXJlIHByb2Nlc3NlZCBpbgotICAgIC8vIHRoZSBzYW1lIHNlcXVl
bmNlIGFzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgbWVzc2FnZXMuCi0gICAgbV9zdHJlYW1Db25u
ZWN0aW9uLT5zdGFydFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVEaXNwbGF5TGlz
dFJlY29yZGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworICAgIG1fc3RyZWFtQ29ubmVjdGlv
bi0+b3BlbigpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN0b3BMaXN0ZW5p
bmdGb3JJUEMoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgbV9zdHJl
YW1Db25uZWN0aW9uLT5pbnZhbGlkYXRlKCk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdG9w
UmVjZWl2aW5nTWVzc2FnZXMoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKIAogICAgIC8vIFRoaXMgaXRlbSBpcyBkaXNwYXRjaGVkIHRvIHRoZSBXb3JrUXVldWUgYmVm
b3JlIGNhbGxpbmcgc3RvcEFuZFdhaXRGb3JDb21wbGV0aW9uKCkgc3VjaCB0aGF0IGl0IHdpbGwg
cHJvY2VzcyBpdCBsYXN0LCBhZnRlciBhbnkgZXhpc3Rpbmcgd29yay4KICAgICBtX3dvcmtRdWV1
ZS0+ZGlzcGF0Y2goWyZdIHsKQEAgLTEyNCw4ICsxMjIsNiBAQCB2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoKQogICAgIH0pOwogICAgIG1fd29ya1F1ZXVl
LT5zdG9wQW5kV2FpdEZvckNvbXBsZXRpb24oKTsKIAotICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+
c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50
NjQoKSk7Ci0gICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdG9wUmVjZWl2aW5nTWVzc2FnZXMoTWVz
c2FnZXM6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7
CiAKICAgICB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3JlbW90ZURpc3BsYXlMaXN0c0xv
Y2sgfTsKQEAgLTE0Miw3ICsxMzgsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRp
c3BhdGNoKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQogCiBJUEM6OkNvbm5lY3Rpb24qIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gJm1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpOworICAg
IHJldHVybiAmbV9zdHJlYW1Db25uZWN0aW9uLT5jb25uZWN0aW9uKCk7CiB9CiAKIHVpbnQ2NF90
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IGY0MzgzYmVmZmU0NzI1NTllNTU0NGYzYmE0ZWM3
MGJmNWE1NGI0OTQuLjRlNGEyNzA2ZDQxNGI4MWRmNDc5MmQ0OTIxMmM4NzViNDVkMmZkYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtNzUsNyArNzUsNyBAQCBlbnVtIGNsYXNzIFN3YXBCdWZm
ZXJzRGlzcGxheVJlcXVpcmVtZW50IDogdWludDhfdDsKIAogY2xhc3MgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCA6IHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpTdHJlYW1N
ZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyaW5n
QmFja2VuZD4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ciYmKTsKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IGNyZWF0ZShHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFy
YW1ldGVycyYmLCBJUEM6OkF0dGFjaG1lbnQmJiwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVy
JiYpOwogICAgIHZpcnR1YWwgflJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoKTsKICAgICB2b2lkIHN0
b3BMaXN0ZW5pbmdGb3JJUEMoKTsKIApAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBwZXJmb3JtV2l0aE1lZGlhUGxheWVyT25NYWluVGhyZWFkKFdlYkNvcmU6Ok1lZGlhUGxheWVy
SWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpNZWRpYVBsYXllciYpPiYmKTsKIAog
cHJpdmF0ZToKLSAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYsIElQQzo6
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKKyAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYsIElQQzo6QXR0YWNobWVudCYmLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXImJik7CiAgICAgdm9pZCBzdGFydExpc3RlbmluZ0ZvcklQQygpOwogCiAgICAgc3RkOjpvcHRp
b25hbDxTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4gdXBkYXRlU2hhcmVkTWVtb3J5Rm9yR2V0UGl4
ZWxCdWZmZXJIZWxwZXIoc2l6ZV90IGJ5dGVDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5jcHAKaW5kZXggZGY1MjM4
NGUzOWIxNDQ2NzhhNWQyNjUyZTdkNmRlYzU1OTYwZDY4MC4uMWIwNzdiODk0YWJhZDE2ZGY0MDVk
ZmRhZWU2ZmVmZmRmMDZlMGUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmNwcApAQCAtNjAsNiArNjAsNyBAQCBSZW1v
dGVHUFU6On5SZW1vdGVHUFUoKSA9IGRlZmF1bHQ7CiB2b2lkIFJlbW90ZUdQVTo6aW5pdGlhbGl6
ZSgpCiB7CiAgICAgYXNzZXJ0SXNNYWluUnVuTG9vcCgpOworICAgIG1fc3RyZWFtQ29ubmVjdGlv
bi0+b3BlbigpOwogICAgIHdvcmtRdWV1ZSgpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfV0oKSBtdXRhYmxlIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+d29ya1F1ZXVl
SW5pdGlhbGl6ZSgpOwogICAgIH0pOwpAQCAtNjksNiArNzAsNyBAQCB2b2lkIFJlbW90ZUdQVTo6
aW5pdGlhbGl6ZSgpCiB2b2lkIFJlbW90ZUdQVTo6c3RvcExpc3RlbmluZ0ZvcklQQyhSZWY8UmVt
b3RlR1BVPiYmIHJlZkZyb21Db25uZWN0aW9uKQogewogICAgIGFzc2VydElzTWFpblJ1bkxvb3Ao
KTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKICAgICBtX3N0cmVhbUNv
bm5lY3Rpb24tPnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhNZXNzYWdlczo6UmVtb3RlR1BVOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICB3b3JrUXVl
dWUoKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocmVmRnJvbUNvbm5lY3Rpb24p
XSgpIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+d29ya1F1ZXVlVW5pbml0aWFsaXplKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVl
TWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVN
YXAuY3BwCmluZGV4IDU4MmQyNzgxOTk5MTU3ZmQyMzM0MTk2NzE3YzM4MGRhN2YwMzAzMzEuLmMz
MzA0MDFjNTFiOGFkZmI5Yjc1Yjk2NTYzMTJhMDc3ZmY3MjJkN2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwCkBAIC0z
OSwxMCArMzksNyBAQCB2b2lkIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OmFkZEltcGwoU3RvcmVU
eXBlJiYgcXVldWUsIGNvbnN0IFJlY2VpdmVyTWF0Y2hlciYgbQogICAgIHVpbnQ4X3QgcmVjZWl2
ZXJOYW1lID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oKm1hdGNoZXIucmVjZWl2ZXJOYW1lKTsKICAg
ICBpZiAoIW1hdGNoZXIuZGVzdGluYXRpb25JRC5oYXNfdmFsdWUoKSkgewogICAgICAgICBhdXRv
IHJlc3VsdCA9IG1fYW55SURRdWV1ZXMuYWRkKHJlY2VpdmVyTmFtZSwgV1RGTW92ZShxdWV1ZSkp
OwotICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgICAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgYmUgYW4gYXNzZXJ0aW9uLiBTZWUgd2Via2l0Lm9yZy9iLzIzNzY3NCBh
bmQgd2Via2l0Lm9yZy9iLzIzODM5MS4KLSAgICAgICAgICAgIEFMV0FZU19MT0dfV0lUSF9TVFJF
QU0oc3RyZWFtIDw8ICJNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwOjphZGRJbXBsIC0gYWRkaW5nIGR1
cGxpY2F0ZSBhbnkgaWQgcmVjZWl2ZXIgIiA8PCBzdGF0aWNfY2FzdDx1aW50OF90PihyZWNlaXZl
ck5hbWUpKTsKLSAgICAgICAgfQorICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0
LmlzTmV3RW50cnkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGF1dG8gcmVzdWx0ID0g
bV9xdWV1ZXMuYWRkKHN0ZDo6bWFrZV9wYWlyKHJlY2VpdmVyTmFtZSwgKm1hdGNoZXIuZGVzdGlu
YXRpb25JRCksIFdURk1vdmUocXVldWUpKTsKQEAgLTU5LDEwICs1Niw3IEBAIHZvaWQgTWVzc2Fn
ZVJlY2VpdmVRdWV1ZU1hcDo6cmVtb3ZlKGNvbnN0IFJlY2VpdmVyTWF0Y2hlciYgbWF0Y2hlcikK
ICAgICB1aW50OF90IHJlY2VpdmVyTmFtZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KCptYXRjaGVy
LnJlY2VpdmVyTmFtZSk7CiAgICAgaWYgKCFtYXRjaGVyLmRlc3RpbmF0aW9uSUQuaGFzX3ZhbHVl
KCkpIHsKICAgICAgICAgYXV0byByZXN1bHQgPSBtX2FueUlEUXVldWVzLnJlbW92ZShyZWNlaXZl
ck5hbWUpOwotICAgICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgYmUgYW4gYXNzZXJ0aW9uLiBTZWUgd2Via2l0Lm9yZy9iLzIzNzY3NCBhbmQgd2Vi
a2l0Lm9yZy9iLzIzODM5MS4KLSAgICAgICAgICAgIEFMV0FZU19MT0dfV0lUSF9TVFJFQU0oc3Ry
ZWFtIDw8ICJNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwOjphZGRJbXBsIC0gYWRkaW5nIGR1cGxpY2F0
ZSBhbnkgaWQgcmVjZWl2ZXIgIiA8PCBzdGF0aWNfY2FzdDx1aW50OF90PihyZWNlaXZlck5hbWUp
KTsKLSAgICAgICAgfQorICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRvIHJlc3VsdCA9IG1fcXVldWVzLnJlbW92ZShz
dGQ6Om1ha2VfcGFpcihyZWNlaXZlck5hbWUsICptYXRjaGVyLmRlc3RpbmF0aW9uSUQpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bi5jcHAKaW5kZXggYjEwMWUwMmZkYjVlNWE0YTU2ODYxZGM3ZWViZjFiYTJhMWNlMmI5OS4uODUw
NjRlNTg2ZTc4NTk4YmU1MWRmNmM4ZmVhNDJkOGMxYWUxNmZjZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTI4
LDkgKzI4LDQ1IEBACiAKIG5hbWVzcGFjZSBJUEMgewogCi1TdHJlYW1DbGllbnRDb25uZWN0aW9u
OjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemVfdCBz
aXplKQotICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCi0gICAgLCBtX2J1ZmZlcihzaXpl
KQorLy8gRklYTUUoaHR0cDovL3dlYmtpdC5vcmcvYi8yMzg5ODYpOiBXb3JrYXJvdW5kIGZvciBu
b3QgYmVpbmcgYWJsZSB0byBkZWxpdmVyIG1lc3NhZ2VzIGZyb20gdGhlIGRlZGljYXRlZCBjb25u
ZWN0aW9uIHRvIHRoZSB3b3JrIHF1ZXVlIHRoZSBjbGllbnQgdXNlcy4KK2NsYXNzIFN0cmVhbUNs
aWVudENvbm5lY3Rpb246OkRlZGljYXRlZENvbm5lY3Rpb25DbGllbnQgZmluYWwgOiBwdWJsaWMg
Q29ubmVjdGlvbjo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShEZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50KTsKK3B1YmxpYzoK
KyAgICBEZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50KE1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIp
CisgICAgICAgIDogbV9yZWNlaXZlcihyZWNlaXZlcikKKyAgICB7CisgICAgfQorICAgIC8vIENv
bm5lY3Rpb246OkNsaWVudC4KKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIpIGZpbmFsIHsgbV9yZWNlaXZlci5kaWRSZWNl
aXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsgfQorICAgIGJvb2wgZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIFVuaXF1
ZVJlZjxFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKSBmaW5hbCB7IHJldHVybiBtX3JlY2VpdmVyLmRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOyB9
CisgICAgdm9pZCBkaWRDbG9zZShDb25uZWN0aW9uJikgZmluYWwgeyB9IC8vIENsaWVudCBpcyBl
eHBlY3RlZCB0byBsaXN0ZW4gdG8gQ29ubmVjdGlvbjo6ZGlkQ2xvc2UoKSBmcm9tIHRoZSBjb25u
ZWN0aW9uIGl0IHNlbnQgdG8gdGhlIGRlZGljYXRlZCBjb25uZWN0aW9uIHRvLgorICAgIHZvaWQg
ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvbm5lY3Rpb24mLCBNZXNzYWdlTmFtZSkgZmluYWwg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfSAvLyBUaGUgc2VuZGVyIGlzIGV4cGVjdGVkIHRvIGJl
IHRydXN0ZWQsIHNvIGFsbCBpbnZhbGlkIG1lc3NhZ2VzIGFyZSBwcm9ncmFtbWluZyBlcnJvcnMu
Citwcml2YXRlOgorICAgIE1lc3NhZ2VSZWNlaXZlciYgbV9yZWNlaXZlcjsKK307CisKK1N0cmVh
bUNsaWVudENvbm5lY3Rpb246OlN0cmVhbUNvbm5lY3Rpb25XaXRoRGVkaWNhdGVkQ29ubmVjdGlv
biBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpjcmVhdGVXaXRoRGVkaWNhdGVkQ29ubmVjdGlvbihN
ZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyLCBzaXplX3QgYnVmZmVyU2l6ZSkKK3sKKyAgICBhdXRv
IGNvbm5lY3Rpb25JZGVudGlmaWVycyA9IENvbm5lY3Rpb246OmNyZWF0ZUNvbm5lY3Rpb25JZGVu
dGlmaWVyUGFpcigpOworICAgIC8vIENyZWF0ZSBTdHJlYW1DbGllbnRDb25uZWN0aW9uIHdpdGgg
InNlcnZlciIgdHlwZSBDb25uZWN0aW9uLiBUaGUgY2FsbGVyIHdpbGwgc2VuZCB0aGUgImNsaWVu
dCIgdHlwZSBjb25uZWN0aW9uIGlkZW50aWZpZXIgdmlhCisgICAgLy8gSVBDIHRvIHRoZSBvdGhl
ciBzaWRlLCB3aGVyZSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHdpbGwgYmUgY3JlYXRlZCB3aXRo
ICJjbGllbnQiIHR5cGUgQ29ubmVjdGlvbi4KKyAgICAvLyBGb3IgQ29ubmVjdGlvbiwgInNlcnZl
ciIgbWVhbnMgdGhlIGNvbm5lY3Rpb24gd2hpY2ggd2FzIGNyZWF0ZWQgZmlyc3QsIHRoZSBjb25u
ZWN0aW9uIHdoaWNoIGlzIG5vdCBzZW50IHRocm91Z2ggSVBDIHRvIG90aGVyIHBhcnR5LgorICAg
IC8vIEZvciBDb25uZWN0aW9uLCAiY2xpZW50IiBtZWFucyB0aGUgY29ubmVjdGlvbiB3aGljaCB3
YXMgZXN0YWJsaXNoZWQgYnkgcmVjZWl2aW5nIGl0IHRocm91Z2ggSVBDIGFuZCBjcmVhdGluZyBJ
UEM6OkNvbm5lY3Rpb24gb3V0IGZyb20gdGhlIGlkZW50aWZpZXIuCisgICAgLy8gVGhlICJDbGll
bnQiIGluIFN0cmVhbUNsaWVudENvbm5lY3Rpb24gbWVhbnMgdGhlIHBhcnR5IHRoYXQgbW9zdGx5
IGRvZXMgc2VuZGluZywgZS5nLiB1bnRydXN0ZWQgcGFydHkuCisgICAgLy8gVGhlICJTZXJ2ZXIi
IGluIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24gbWVhbnMgdGhlIHBhcnR5IHRoYXQgbW9zdGx5IGRv
ZXMgcmVjZWl2aW5nLCBlLmcuIHRoZSB0cnVzdGVkIHBhcnR5IHdoaWNoIGhvbGRzIHRoZSBkZXN0
aW5hdGlvbiBvYmplY3QgdG8gY29tbXVuaWNhdGUgd2l0aC4KKyAgICBhdXRvIGRlZGljYXRlZENv
bm5lY3Rpb25DbGllbnQgPSBtYWtlVW5pcXVlPERlZGljYXRlZENvbm5lY3Rpb25DbGllbnQ+KHJl
Y2VpdmVyKTsKKyAgICBhdXRvIGRlZGljYXRlZENvbm5lY3Rpb24gPSBDb25uZWN0aW9uOjpjcmVh
dGVTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVycy0+c2VydmVyLCAqZGVkaWNh
dGVkQ29ubmVjdGlvbkNsaWVudCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFN0cmVhbUNsaWVudENv
bm5lY3Rpb24+IHN0cmVhbUNvbm5lY3Rpb24geyBuZXcgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbihX
VEZNb3ZlKGRlZGljYXRlZENvbm5lY3Rpb24pLCBidWZmZXJTaXplLCBXVEZNb3ZlKGRlZGljYXRl
ZENvbm5lY3Rpb25DbGllbnQpKSB9OworICAgIC8vIEZJWE1FKGh0dHA6Ly93ZWJraXQub3JnL2Iy
Mzg5NDQpOiBNYWtlIElQQzo6QXR0YWNobWVudCByZWFsbHkgbW92YWJsZSBvbiBPUyhEQVJXSU4p
LgorICAgIHJldHVybiB7IFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbiksIFdURk1vdmUoY29ubmVj
dGlvbklkZW50aWZpZXJzLT5jbGllbnQpIH07CisjCit9CisKK1N0cmVhbUNsaWVudENvbm5lY3Rp
b246OlN0cmVhbUNsaWVudENvbm5lY3Rpb24oUmVmPENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwg
c2l6ZV90IGJ1ZmZlclNpemUsIHN0ZDo6dW5pcXVlX3B0cjxEZWRpY2F0ZWRDb25uZWN0aW9uQ2xp
ZW50PiYmIGRlZGljYXRlZENvbm5lY3Rpb25DbGllbnQpCisgICAgOiBtX2Nvbm5lY3Rpb24oV1RG
TW92ZShjb25uZWN0aW9uKSkKKyAgICAsIG1fZGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudChXVEZN
b3ZlKGRlZGljYXRlZENvbm5lY3Rpb25DbGllbnQpKQorICAgICwgbV9idWZmZXIoYnVmZmVyU2l6
ZSkKIHsKICAgICAvLyBSZWFkIHN0YXJ0cyBmcm9tIDAgd2l0aCBsaW1pdCBvZiAwIGFuZCByZWFk
ZXIgc2xlZXBpbmcuCiAgICAgc2hhcmVkQ2xpZW50T2Zmc2V0KCkuc3RvcmUoQ2xpZW50T2Zmc2V0
OjpzZXJ2ZXJJc1NsZWVwaW5nVGFnLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKQEAgLTM4
LDYgKzc0LDI4IEBAIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlN0cmVhbUNsaWVudENvbm5lY3Rp
b24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgc2l6ZV90IHNpCiAgICAgc2hhcmVkQ2xpZW50TGlt
aXQoKS5zdG9yZShzdGF0aWNfY2FzdDxDbGllbnRMaW1pdD4oMCksIHN0ZDo6bWVtb3J5X29yZGVy
X3JlbGF4ZWQpOwogfQogCitTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25u
ZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemVfdCBidWZmZXJTaXplKQorICAgIDog
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbihSZWYgeyBjb25uZWN0aW9uIH0sIGJ1ZmZlclNpemUsIHsg
fSkKK3sKK30KKworU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6flN0cmVhbUNsaWVudENvbm5lY3Rp
b24oKQoreworICAgIEFTU0VSVCghbV9kZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50IHx8ICFtX2Nv
bm5lY3Rpb24tPmlzVmFsaWQoKSk7Cit9CisKK3ZvaWQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
b3BlbigpCit7CisgICAgaWYgKG1fZGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudCkKKyAgICAgICAg
bV9jb25uZWN0aW9uLT5vcGVuKCk7Cit9CisKK3ZvaWQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
aW52YWxpZGF0ZSgpCit7CisgICAgaWYgKG1fZGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudCkKKyAg
ICAgICAgbV9jb25uZWN0aW9uLT5pbnZhbGlkYXRlKCk7Cit9CisKIHZvaWQgU3RyZWFtQ2xpZW50
Q29ubmVjdGlvbjo6c2V0V2FrZVVwU2VtYXBob3JlKElQQzo6U2VtYXBob3JlJiYgc2VtYXBob3Jl
KQogewogICAgIG1fd2FrZVVwU2VtYXBob3JlID0gV1RGTW92ZShzZW1hcGhvcmUpOwpAQCAtODMs
NCArMTQxLDkgQEAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYgU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6YnVmZmVyRm9yVGVzdGluZygpCiAgICAgcmV0dXJuIG1fYnVmZmVyOwogfQogCitDb25uZWN0
aW9uJiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9yVGVzdGluZygpCit7Cisg
ICAgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IDJiNDdlMjVl
Y2JjMTE4MjQ5MWQyZGZkZTcyODBkN2JjMzA1MTFlNzQuLjRlNDIwZDRmZjYxNWI1NzBlZTBiNTIy
NjkyODliMzQ2ODAxZjc3ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmgKQEAgLTU3LDggKzU3LDMxIEBAIGNsYXNzIFN0cmVh
bUNsaWVudENvbm5lY3Rpb24gZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0cmVhbUNsaWVudENvbm5lY3Rpb24pOwogcHVibGlj
OgorICAgIC8vIENyZWF0ZXMgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiB3aGVyZSB0aGUgb3V0IG9m
IHN0cmVhbSBtZXNzYWdlcyBhbmQgc2VydmVyIHJlcGxpZXMgYXJlCisgICAgLy8gc2VudCB0aHJv
dWdoIHRoZSBwYXNzZWQgSVBDOjpDb25uZWN0aW9uLiBUaGUgbWVzc2FnZXMgZnJvbSB0aGUgc2Vy
dmVyIGFyZSBkZWxpdmVyZWQgdG8KKyAgICAvLyB0aGUgY2FsbGVyIHRocm91Z2ggdGhlIHBhc3Nl
ZCBJUEM6OkNvbm5lY3Rpb24uCisgICAgLy8gTm90ZTogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUg
dXNlZCBvbmx5IGluIGNhc2VzIHdoZXJlIHRoZQorICAgIC8vIHN0cmVhbSBzZXJ2ZXIgc3RhcnRz
IGxpc3RlbmluZyB0byBtZXNzYWdlcyB3aXRoIG5ldyBpZGVudGlmaWVycyBvbiB0aGUgc2FtZSB0
aHJlYWQgYXMKKyAgICAvLyBpbiB3aGljaCB0aGUgc2VydmVyIElQQzo6Q29ubmVjdGlvbiBkaXNw
YXRjaCBtZXNzYWdlcy4gQXQgdGhlIHRpbWUgb2Ygd3JpdGluZywKKyAgICAvLyBJUEM6OkNvbm5l
Y3Rpb24gZGlzcGF0Y2hlcyBtZXNzYWdlcyBvbmx5IGluIG1haW4gdGhyZWFkLgogICAgIFN0cmVh
bUNsaWVudENvbm5lY3Rpb24oQ29ubmVjdGlvbiYsIHNpemVfdCBidWZmZXJTaXplKTsKIAorICAg
IHN0cnVjdCBTdHJlYW1Db25uZWN0aW9uV2l0aERlZGljYXRlZENvbm5lY3Rpb24geworICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U3RyZWFtQ2xpZW50Q29ubmVjdGlvbj4gc3RyZWFtQ29ubmVjdGlv
bjsKKyAgICAgICAgQXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllcjsKKyAgICAgICAgLy8g
RklYTUU6IE9uY2UgSVBDIGNhbiB0cmVhdCBoYW5kbGVzIGFzIGZpcnN0IGNsYXNzIG9iamVjdHMs
IGFkZCBzdHJlYW0gYnVmZmVyIGFzCisgICAgICAgIC8vIGEgaGFuZGxlIGhlcmUuCisgICAgfTsK
KworICAgIC8vIENyZWF0ZXMgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiB3aGVyZSB0aGUgb3V0IG9m
IHN0cmVhbSBtZXNzYWdlcyBhbmQgc2VydmVyIHJlcGxpZXMgYXJlCisgICAgLy8gc2VudCB0aHJv
dWdoIGEgZGVkaWRjYXRlZCwgbmV3IElQQzo6Q29ubmVjdGlvbi4gVGhlIG1lc3NhZ2VzIGZyb20g
dGhlIHNlcnZlciBhcmUgZGVsaXZlcmVkIHRvCisgICAgLy8gdGhlIGNhbGxlciB0aHJvdWdoIHRo
ZSBwYXNzZWQgSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCisgICAgLy8gVGhlIGNhbGxlciBzaG91bGQg
c2VuZCBTdHJlYW1Db25uZWN0aW9uV2l0aERlZGljYXRlZENvbm5lY3Rpb246OmNvbm5lY3Rpb25J
ZGVudGlmaWVyIGFuZAorICAgIC8vIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnN0cmVhbUJ1ZmZl
cigpIHRvIHRoZSBzZXJ2ZXIgdmlhIGFuIGV4aXN0aW5nIElQQzo6Q29ubmVjdGlvbi4KKyAgICBz
dGF0aWMgU3RyZWFtQ29ubmVjdGlvbldpdGhEZWRpY2F0ZWRDb25uZWN0aW9uIGNyZWF0ZVdpdGhE
ZWRpY2F0ZWRDb25uZWN0aW9uKE1lc3NhZ2VSZWNlaXZlciYsIHNpemVfdCBidWZmZXJTaXplKTsK
KworICAgIH5TdHJlYW1DbGllbnRDb25uZWN0aW9uKCk7CisKICAgICBTdHJlYW1Db25uZWN0aW9u
QnVmZmVyJiBzdHJlYW1CdWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQogICAgIHZvaWQgc2V0
V2FrZVVwU2VtYXBob3JlKElQQzo6U2VtYXBob3JlJiYpOwogICAgIGJvb2wgaGFzV2FrZVVwU2Vt
YXBob3JlKCkgY29uc3QgeyByZXR1cm4gbV93YWtlVXBTZW1hcGhvcmUuaGFzX3ZhbHVlKCk7IH0K
QEAgLTcwLDYgKzkzLDkgQEAgcHVibGljOgogICAgIH0KICAgICB2b2lkIHNlbmREZWZlcnJlZFdh
a2VVcE1lc3NhZ2VJZk5lZWRlZCgpOwogCisgICAgdm9pZCBvcGVuKCk7CisgICAgdm9pZCBpbnZh
bGlkYXRlKCk7CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBib29sIHNl
bmQoVCYmIG1lc3NhZ2UsIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgVGltZW91
dCk7CiAKICAgICB1c2luZyBTZW5kU3luY1Jlc3VsdCA9IENvbm5lY3Rpb246OlNlbmRTeW5jUmVz
dWx0OwpAQCAtODAsOSArMTA2LDExIEBAIHB1YmxpYzoKICAgICBib29sIHdhaXRGb3JBbmREaXNw
YXRjaEltbWVkaWF0ZWx5KE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgVGltZW91
dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+ID0geyB9KTsKIAogICAgIFN0cmVhbUNvbm5lY3Rp
b25CdWZmZXImIGJ1ZmZlckZvclRlc3RpbmcoKTsKKyAgICBDb25uZWN0aW9uJiBjb25uZWN0aW9u
Rm9yVGVzdGluZygpOwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6OklQQ1Rl
c3RpbmdBUEk6OkpTSVBDU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjsKKyAgICBjbGFzcyBEZWRpY2F0
ZWRDb25uZWN0aW9uQ2xpZW50OworICAgIFN0cmVhbUNsaWVudENvbm5lY3Rpb24oUmVmPENvbm5l
Y3Rpb24+JiYsIHNpemVfdCBidWZmZXJTaXplLCBzdGQ6OnVuaXF1ZV9wdHI8RGVkaWNhdGVkQ29u
bmVjdGlvbkNsaWVudD4mJik7CiAKICAgICBzdHJ1Y3QgU3BhbiB7CiAgICAgICAgIHVpbnQ4X3Qq
IGRhdGE7CkBAIC0xMjIsMTQgKzE1MCwxNiBAQCBwcml2YXRlOgogICAgIHVpbnQ4X3QqIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KICAgICBzaXplX3QgZGF0YVNpemUo
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5kYXRhU2l6ZSgpOyB9CiAKLSAgICBDb25uZWN0aW9u
JiBtX2Nvbm5lY3Rpb247CisgICAgUmVmPENvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8RGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudD4gbV9kZWRpY2F0ZWRDb25u
ZWN0aW9uQ2xpZW50OwogICAgIHVpbnQ2NF90IG1fY3VycmVudERlc3RpbmF0aW9uSUQgeyAwIH07
Ci0KICAgICBzaXplX3QgbV9jbGllbnRPZmZzZXQgeyAwIH07CiAgICAgU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlciBtX2J1ZmZlcjsKICAgICBzdGQ6Om9wdGlvbmFsPFNlbWFwaG9yZT4gbV93YWtlVXBT
ZW1hcGhvcmU7CiAgICAgdW5zaWduZWQgbV9yZW1haW5pbmdNZXNzYWdlQ291bnRCZWZvcmVTZW5k
aW5nV2FrZVVwIHsgMCB9OwogICAgIHVuc2lnbmVkIG1fd2FrZVVwTWVzc2FnZUh5c3RlcmVzaXMg
eyAwIH07CisKKyAgICBmcmllbmQgY2xhc3MgV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU0lQQ1N0
cmVhbUNsaWVudENvbm5lY3Rpb247CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPgpAQCAtMTQ2LDcgKzE3Niw3IEBAIGJvb2wgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2Vu
ZChUJiYgbWVzc2FnZSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklECiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3Nh
Z2UoV1RGTW92ZSgqc3BhbikpOwotICAgIGlmICghbV9jb25uZWN0aW9uLnNlbmQoV1RGTW92ZSht
ZXNzYWdlKSwgZGVzdGluYXRpb25JRCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VF
dmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpKQorICAgIGlmICghbV9jb25uZWN0aW9uLT5zZW5k
KFdURk1vdmUobWVzc2FnZSksIGRlc3RpbmF0aW9uSUQsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0
Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTgxLDEzICsyMTEsMTMgQEAgU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2Vu
ZFN5bmMoVCYmIG1lc3MKICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKCptYXliZVNlbmRSZXN1
bHQpOwogICAgIH0KICAgICBzZW5kUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZShXVEZNb3ZlKCpz
cGFuKSk7Ci0gICAgcmV0dXJuIG1fY29ubmVjdGlvbi5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2Up
LCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0KTsKKyAg
ICByZXR1cm4gbV9jb25uZWN0aW9uLT5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3Zl
KHJlcGx5KSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0KTsKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KIGJvb2wgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkoT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5h
dGlvbklELCBUaW1lb3V0IHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9y
T3B0aW9ucykKIHsKLSAgICByZXR1cm4gbV9jb25uZWN0aW9uLndhaXRGb3JBbmREaXNwYXRjaElt
bWVkaWF0ZWx5PFQ+KGRlc3RpbmF0aW9uSUQsIHRpbWVvdXQsIHdhaXRGb3JPcHRpb25zKTsKKyAg
ICByZXR1cm4gbV9jb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxUPihk
ZXN0aW5hdGlvbklELCB0aW1lb3V0LCB3YWl0Rm9yT3B0aW9ucyk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CkBAIC0xOTUsOCArMjI1LDggQEAgc3RkOjpvcHRpb25hbDxTdHJlYW1DbGllbnRD
b25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdD4gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6dHIKIHsK
ICAgICAvLyBJbiB0aGlzIGZ1bmN0aW9uLCBTZW5kU3luY1Jlc3VsdCB7IH0gbWVhbnMgZXJyb3Ig
aGFwcGVuZWQgYW5kIGNhbGxlciBzaG91bGQgc3RvcCBwcm9jZXNzaW5nLgogICAgIC8vIHN0ZDo6
bnVsbG9wdCBtZWFucyB3ZSBjb3VsZG4ndCBzZW5kIHRocm91Z2ggdGhlIHN0cmVhbSwgc28gdHJ5
IHNlbmRpbmcgb3V0IG9mIHN0cmVhbS4KLSAgICBhdXRvIHN5bmNSZXF1ZXN0SUQgPSBtX2Nvbm5l
Y3Rpb24ubWFrZVN5bmNSZXF1ZXN0SUQoKTsKLSAgICBpZiAoIW1fY29ubmVjdGlvbi5wdXNoUGVu
ZGluZ1N5bmNSZXF1ZXN0SUQoc3luY1JlcXVlc3RJRCkpCisgICAgYXV0byBzeW5jUmVxdWVzdElE
ID0gbV9jb25uZWN0aW9uLT5tYWtlU3luY1JlcXVlc3RJRCgpOworICAgIGlmICghbV9jb25uZWN0
aW9uLT5wdXNoUGVuZGluZ1N5bmNSZXF1ZXN0SUQoc3luY1JlcXVlc3RJRCkpCiAgICAgICAgIHJl
dHVybiBTZW5kU3luY1Jlc3VsdCB7IH07CiAKICAgICBhdXRvIHJlc3VsdCA9IFsmXSgpIC0+IHN0
ZDo6b3B0aW9uYWw8U2VuZFN5bmNSZXN1bHQ+IHsKQEAgLTIyMCw5ICsyNTAsOSBAQCBzdGQ6Om9w
dGlvbmFsPFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0PiBTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjp0cgogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIG1fY2xpZW50T2Zmc2V0ID0gMDsKLSAgICAgICAgcmV0dXJuIG1fY29ubmVjdGlvbi53YWl0
Rm9yU3luY1JlcGx5KHN5bmNSZXF1ZXN0SUQsIFQ6Om5hbWUoKSwgdGltZW91dCwgeyB9KTsKKyAg
ICAgICAgcmV0dXJuIG1fY29ubmVjdGlvbi0+d2FpdEZvclN5bmNSZXBseShzeW5jUmVxdWVzdElE
LCBUOjpuYW1lKCksIHRpbWVvdXQsIHsgfSk7CiAgICAgfSgpOwotICAgIG1fY29ubmVjdGlvbi5w
b3BQZW5kaW5nU3luY1JlcXVlc3RJRChzeW5jUmVxdWVzdElEKTsKKyAgICBtX2Nvbm5lY3Rpb24t
PnBvcFBlbmRpbmdTeW5jUmVxdWVzdElEKHN5bmNSZXF1ZXN0SUQpOwogICAgIGlmIChyZXN1bHQg
JiYgKnJlc3VsdCkgewogICAgICAgICBhdXRvJiBkZWNvZGVyID0gKipyZXN1bHQ7CiAgICAgICAg
IHN0ZDo6b3B0aW9uYWw8dHlwZW5hbWUgVDo6UmVwbHlBcmd1bWVudHM+IHJlcGx5QXJndW1lbnRz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uLmNwcAppbmRleCAwNTQ2MzcyYmZhOTJhMzFhZGZmZTg2OGQxMDI5NDIyY2UxOTkwNTZh
Li5iYTVjZjc0ZmYxNGNiMDhmNWZjM2FiNjFhNjM3YTA3NjVlOWNjNzdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcApA
QCAtMjgsMTQgKzI4LDgxIEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAi
U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oIgotCisjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiBuYW1lc3BhY2UgSVBDIHsKK25hbWVzcGFjZSB7Cisv
LyBGSVhNRShodHRwOi8vd2Via2l0Lm9yZy9iLzIzODk4Nik6IFdvcmthcm91bmQgZm9yIG5vdCBi
ZWluZyBhYmxlIHRvIGRlbGl2ZXIgbWVzc2FnZXMgZnJvbSB0aGUgZGVkaWNhdGVkIGNvbm5lY3Rp
b24gdG8gdGhlIHdvcmsgcXVldWUgdGhlIGNsaWVudCB1c2VzLgorY2xhc3MgRGVkaWNhdGVkQ29u
bmVjdGlvbkNsaWVudCBmaW5hbCA6IHB1YmxpYyBDb25uZWN0aW9uOjpDbGllbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERlZGljYXRl
ZENvbm5lY3Rpb25DbGllbnQpOworcHVibGljOgorICAgIERlZGljYXRlZENvbm5lY3Rpb25DbGll
bnQoKSA9IGRlZmF1bHQ7CisgICAgLy8gQ29ubmVjdGlvbjo6Q2xpZW50LgorICAgIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2Rlcikg
ZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJl
ZjxFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIGRpZENsb3NlKENvbm5lY3Rpb24mKSBmaW5hbCB7IH0g
Ly8gQ2xpZW50IGlzIGV4cGVjdGVkIHRvIGxpc3RlbiB0byBDb25uZWN0aW9uOjpkaWRDbG9zZSgp
IGZyb20gdGhlIGNvbm5lY3Rpb24gaXQgc2VudCB0byB0aGUgZGVkaWNhdGVkIGNvbm5lY3Rpb24g
dG8uCisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoQ29ubmVjdGlvbiYsIE1lc3Nh
Z2VOYW1lKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9IC8vIFRoZSBzZW5kZXIgaXMg
ZXhwZWN0ZWQgdG8gYmUgdHJ1c3RlZCwgc28gYWxsIGludmFsaWQgbWVzc2FnZXMgYXJlIHByb2dy
YW1taW5nIGVycm9ycy4KK3ByaXZhdGU6Cit9OworCit9CisKK1JlZjxTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uPiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGUoQ29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbUJ1ZmZlciwgU3RyZWFtQ29ubmVj
dGlvbldvcmtRdWV1ZSYgd29ya1F1ZXVlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0
cmVhbVNlcnZlckNvbm5lY3Rpb24oUmVmIHsgY29ubmVjdGlvbiB9LCBXVEZNb3ZlKHN0cmVhbUJ1
ZmZlciksIHdvcmtRdWV1ZSwgSGFzRGVkaWNhdGVkQ29ubmVjdGlvbjo6Tm8pKTsKK30KKworUmVm
PFN0cmVhbVNlcnZlckNvbm5lY3Rpb24+IFN0cmVhbVNlcnZlckNvbm5lY3Rpb246OmNyZWF0ZVdp
dGhEZWRpY2F0ZWRDb25uZWN0aW9uKEF0dGFjaG1lbnQmJiBjb25uZWN0aW9uSWRlbnRpZmllciwg
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbUJ1ZmZlciwgU3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZSYgd29ya1F1ZXVlKQoreworI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQorICAg
IElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSGFuZGxlIHsgY29ubmVjdGlv
bklkZW50aWZpZXIucmVsZWFzZSgpLnJlbGVhc2UoKSB9OworI2VsaWYgT1MoREFSV0lOKQorICAg
IElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSGFuZGxlIHsgY29ubmVjdGlv
bklkZW50aWZpZXIucG9ydCgpIH07CisjZWxpZiBPUyhXSU5ET1dTKQorICAgIElQQzo6Q29ubmVj
dGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSGFuZGxlIHsgY29ubmVjdGlvbklkZW50aWZpZXIu
aGFuZGxlKCkgfTsKKyNlbHNlCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBJUEM6OkNvbm5l
Y3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbkhhbmRsZSB7IH07CisjZW5kaWYKKyAgICBzdGF0
aWMgTGF6eU5ldmVyRGVzdHJveWVkPERlZGljYXRlZENvbm5lY3Rpb25DbGllbnQ+IHNfZGVkaWNh
dGVkQ29ubmVjdGlvbkNsaWVudDsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgc19vbmNlRmxh
ZzsKKyAgICBzdGQ6OmNhbGxfb25jZShzX29uY2VGbGFnLCBbXSB7CisgICAgICAgIHNfZGVkaWNh
dGVkQ29ubmVjdGlvbkNsaWVudC5jb25zdHJ1Y3QoKTsKKyAgICB9KTsKKyAgICBhdXRvIGNvbm5l
Y3Rpb24gPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZUNsaWVudENvbm5lY3Rpb24oY29ubmVjdGlv
bkhhbmRsZSwgc19kZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50LmdldCgpKTsKKyAgICBhdXRvIHN0
cmVhbUNvbm5lY3Rpb24gPSBhZG9wdFJlZigqbmV3IFN0cmVhbVNlcnZlckNvbm5lY3Rpb24oV1RG
TW92ZShjb25uZWN0aW9uKSwgV1RGTW92ZShzdHJlYW1CdWZmZXIpLCB3b3JrUXVldWUsIEhhc0Rl
ZGljYXRlZENvbm5lY3Rpb246OlllcykpOworICAgIHJldHVybiBzdHJlYW1Db25uZWN0aW9uOwor
fQogCi1TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uKENvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0sIFN0cmVh
bUNvbm5lY3Rpb25Xb3JrUXVldWUmIHdvcmtRdWV1ZSkKLSAgICA6IG1fY29ubmVjdGlvbihjb25u
ZWN0aW9uKQorU3RyZWFtU2VydmVyQ29ubmVjdGlvbjo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbihS
ZWY8Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3Ry
ZWFtLCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiB3b3JrUXVldWUsIEhhc0RlZGljYXRlZENv
bm5lY3Rpb24gaGFzRGVkaWNhdGVkQ29ubmVjdGlvbikKKyAgICA6IG1fY29ubmVjdGlvbihXVEZN
b3ZlKGNvbm5lY3Rpb24pKQogICAgICwgbV93b3JrUXVldWUod29ya1F1ZXVlKQogICAgICwgbV9i
dWZmZXIoV1RGTW92ZShzdHJlYW0pKQorICAgICwgbV9oYXNEZWRpY2F0ZWRDb25uZWN0aW9uKGhh
c0RlZGljYXRlZENvbm5lY3Rpb24gPT0gSGFzRGVkaWNhdGVkQ29ubmVjdGlvbjo6WWVzKQorewor
fQorCitTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOjp+U3RyZWFtU2VydmVyQ29ubmVjdGlvbigpCiB7
CisgICAgQVNTRVJUKCFtX2hhc0RlZGljYXRlZENvbm5lY3Rpb24gfHwgIW1fY29ubmVjdGlvbi0+
aXNWYWxpZCgpKTsKK30KKwordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOjpvcGVuKCkKK3sK
KyAgICBpZiAobV9oYXNEZWRpY2F0ZWRDb25uZWN0aW9uKSB7CisgICAgICAgIC8vIEZJWE1FKGh0
dHA6Ly93ZWJraXQub3JnL2IvMjM4OTg2KTogV29ya2Fyb3VuZCBmb3Igbm90IGJlaW5nIGFibGUg
dG8gZGVsaXZlciBtZXNzYWdlcyBmcm9tIHRoZSBkZWRpY2F0ZWQgY29ubmVjdGlvbiB0byB0aGUg
d29yayBxdWV1ZSB0aGUgY2xpZW50IHVzZXMuCisgICAgICAgIG1fY29ubmVjdGlvbi0+YWRkTWVz
c2FnZVJlY2VpdmVRdWV1ZSgqdGhpcywgeyB9KTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5vcGVu
KCk7CisgICAgfQorfQorCit2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb246OmludmFsaWRhdGUo
KQoreworICAgIGlmIChtX2hhc0RlZGljYXRlZENvbm5lY3Rpb24pIHsKKyAgICAgICAgbV9jb25u
ZWN0aW9uLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKHsgfSk7CisgICAgICAgIG1fY29ubmVj
dGlvbi0+aW52YWxpZGF0ZSgpOworICAgIH0KIH0KIAogdm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uOjpzdGFydFJlY2VpdmluZ01lc3NhZ2VzKFN0cmVhbU1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2
ZXIsIFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCkBA
IC00NywzMCArMTE0LDE1IEBAIHZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRSZWNl
aXZpbmdNZXNzYWdlcyhTdHJlYW1NZXNzYWdlUmVjZWl2ZXImIHJlY2VpCiAgICAgICAgIG1fcmVj
ZWl2ZXJzLmFkZChrZXksIHJlY2VpdmVyKTsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogQ2FuIHdl
IGF2b2lkIHN5bmNocm9ub3VzIGRpc3BhdGNoIGhlcmUgYnkgYWRqdXN0aW5nIHRoZSBhc3NlcnRp
b24gaW4gYENvbm5lY3Rpb246OmVucXVldWVNYXRjaGluZ01lc3NhZ2VzVG9NZXNzYWdlUmVjZWl2
ZVF1ZXVlYD8KLSAgICBjYWxsT25NYWluUnVuTG9vcEFuZFdhaXQoWyZdIHsKKyAgICBpZiAoIW1f
aGFzRGVkaWNhdGVkQ29ubmVjdGlvbikKICAgICAgICAgbV9jb25uZWN0aW9uLT5hZGRNZXNzYWdl
UmVjZWl2ZVF1ZXVlKCp0aGlzLCB7IHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCB9KTsKLSAg
ICB9KTsKICAgICBtX3dvcmtRdWV1ZS5hZGRTdHJlYW1Db25uZWN0aW9uKCp0aGlzKTsKIH0KIAot
dm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOjpzdGFydFJlY2VpdmluZ01lc3NhZ2VzKFJlY2Vp
dmVyTmFtZSByZWNlaXZlck5hbWUpCi17Ci0gICAgY2FsbE9uTWFpblJ1bkxvb3BBbmRXYWl0KFsm
XSB7Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+YWRkTWVzc2FnZVJlY2VpdmVRdWV1ZSgqdGhpcywg
eyByZWNlaXZlck5hbWUgfSk7Ci0gICAgfSk7Ci0gICAgbV93b3JrUXVldWUuYWRkU3RyZWFtQ29u
bmVjdGlvbigqdGhpcyk7Ci19Ci0KLXZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjo6c3RvcFJl
Y2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUpCi17Ci0gICAgbV9jb25u
ZWN0aW9uLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKHsgcmVjZWl2ZXJOYW1lIH0pOwotICAg
IG1fd29ya1F1ZXVlLnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24oKnRoaXMpOwotfQotCiB2b2lkIFN0
cmVhbVNlcnZlckNvbm5lY3Rpb246OnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZlck5hbWUg
cmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQogewotICAgIG1fY29ubmVjdGlv
bi0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZSh7IHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25J
RCB9KTsKKyAgICBpZiAoIW1faGFzRGVkaWNhdGVkQ29ubmVjdGlvbikKKyAgICAgICAgbV9jb25u
ZWN0aW9uLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKHsgcmVjZWl2ZXJOYW1lLCBkZXN0aW5h
dGlvbklEIH0pOwogICAgIG1fd29ya1F1ZXVlLnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24oKnRoaXMp
OwogCiAgICAgYXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90Pihy
ZWNlaXZlck5hbWUpLCBkZXN0aW5hdGlvbklEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaAppbmRleCBhYmVmNGVjZmUzZTkzNzhj
MTdmYWJlMzRkM2MyNDgzZDE0MDc0N2JkLi43MTM1ZDQ2M2EzZjEyNGM3YjEwYWViMzRkOWM3OGRi
ODBlYTY0NGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFt
U2VydmVyQ29ubmVjdGlvbi5oCkBAIC01MywxOSArNTMsMjUgQEAgY2xhc3MgU3RyZWFtQ29ubmVj
dGlvbldvcmtRdWV1ZTsKIGNsYXNzIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4sIHByaXZhdGUg
TWVzc2FnZVJlY2VpdmVRdWV1ZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uPiBjcmVhdGUoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlciYmIHN0cmVhbUJ1ZmZlciwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYgd29ya1F1ZXVl
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RyZWFtU2VydmVyQ29ubmVj
dGlvbihjb25uZWN0aW9uLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlciksIHdvcmtRdWV1ZSkpOwotICAg
IH0KLSAgICB+U3RyZWFtU2VydmVyQ29ubmVjdGlvbigpIGZpbmFsID0gZGVmYXVsdDsKKyAgICAv
LyBDcmVhdGVzIFN0cmVhbUNsaWVudENvbm5lY3Rpb24gd2hlcmUgdGhlIG91dCBvZiBzdHJlYW0g
bWVzc2FnZXMgYW5kIHNlcnZlciByZXBsaWVzIGFyZQorICAgIC8vIHJlY2VpdmVkIHRocm91Z2gg
dGhlIHBhc3NlZCBJUEM6OkNvbm5lY3Rpb24uIFRoZSBtZXNzYWdlcyBmcm9tIHRoZSBzZXJ2ZXIg
YXJlIHNlbnQgdG8KKyAgICAvLyB0aGUgcGFzc2VkIElQQzo6Q29ubmVjdGlvbi4KKyAgICAvLyBO
b3RlOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSB1c2VkIG9ubHkgaW4gY2FzZXMgd2hlcmUgdGhl
CisgICAgLy8gc3RyZWFtIHNlcnZlciBzdGFydHMgbGlzdGVuaW5nIHRvIG1lc3NhZ2VzIHdpdGgg
bmV3IGlkZW50aWZpZXJzIG9uIHRoZSBzYW1lIHRocmVhZCBhcworICAgIC8vIGluIHdoaWNoIHRo
ZSBzZXJ2ZXIgSVBDOjpDb25uZWN0aW9uIGRpc3BhdGNoIG1lc3NhZ2VzLiBBdCB0aGUgdGltZSBv
ZiB3cml0aW5nLAorICAgIC8vIElQQzo6Q29ubmVjdGlvbiBkaXNwYXRjaGVzIG1lc3NhZ2VzIG9u
bHkgaW4gbWFpbiB0aHJlYWQuCisgICAgc3RhdGljIFJlZjxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
PiBjcmVhdGUoQ29ubmVjdGlvbiYsIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiwgU3RyZWFtQ29u
bmVjdGlvbldvcmtRdWV1ZSYpOworCisgICAgLy8gQ3JlYXRlcyBTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uIHdoZXJlIHRoZSBvdXQgb2Ygc3RyZWFtIG1lc3NhZ2VzIGFuZCBzZXJ2ZXIgcmVwbGllcyBh
cmUKKyAgICAvLyByZWNlaXZlZCB0aHJvdWdoIGEgZGVkaWRjYXRlZCwgbmV3IElQQzo6Q29ubmVj
dGlvbi4gVGhlIG1lc3NhZ2VzIGZyb20gdGhlIHNlcnZlciBhcmUgc2VudCB0bworICAgIC8vIHRo
ZSBkZWRpY2F0ZWQgY29ubmVjaXRvbi4KKyAgICBzdGF0aWMgUmVmPFN0cmVhbVNlcnZlckNvbm5l
Y3Rpb24+IGNyZWF0ZVdpdGhEZWRpY2F0ZWRDb25uZWN0aW9uKEF0dGFjaG1lbnQmJiBjb25uZWN0
aW9uSWRlbnRpZmllciwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmLCBTdHJlYW1Db25uZWN0aW9u
V29ya1F1ZXVlJik7CisgICAgflN0cmVhbVNlcnZlckNvbm5lY3Rpb24oKSBmaW5hbDsKIAogICAg
IHZvaWQgc3RhcnRSZWNlaXZpbmdNZXNzYWdlcyhTdHJlYW1NZXNzYWdlUmVjZWl2ZXImLCBSZWNl
aXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwogICAgIC8vIFN0b3BzIHRoZSBtZXNz
YWdlIHJlY2VpcHQuIE5vdGU6IGFscmVhZHkgcmVjZWl2ZWQgbWVzc2FnZXMgbWlnaHQgc3RpbGwg
YmUgZGVsaXZlcmVkLgogICAgIHZvaWQgc3RvcFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyTmFt
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CiAKLSAgICB2b2lkIHN0YXJ0UmVjZWl2aW5nTWVz
c2FnZXMoUmVjZWl2ZXJOYW1lKTsKLSAgICB2b2lkIHN0b3BSZWNlaXZpbmdNZXNzYWdlcyhSZWNl
aXZlck5hbWUpOwotCiAgICAgQ29ubmVjdGlvbiYgY29ubmVjdGlvbigpIHsgcmV0dXJuIG1fY29u
bmVjdGlvbjsgfQogCiAgICAgZW51bSBEaXNwYXRjaFJlc3VsdCA6IGJvb2wgewpAQCAtNzQsMTEg
KzgwLDE1IEBAIHB1YmxpYzoKICAgICB9OwogICAgIERpc3BhdGNoUmVzdWx0IGRpc3BhdGNoU3Ry
ZWFtTWVzc2FnZXMoc2l6ZV90IG1lc3NhZ2VMaW1pdCk7CiAKKyAgICB2b2lkIG9wZW4oKTsKKyAg
ICB2b2lkIGludmFsaWRhdGUoKTsKKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
Li4uIEFyZ3VtZW50cz4KICAgICB2b2lkIHNlbmRTeW5jUmVwbHkoQ29ubmVjdGlvbjo6U3luY1Jl
cXVlc3RJRCwgQXJndW1lbnRzJiYuLi4pOwogCiBwcml2YXRlOgotICAgIFN0cmVhbVNlcnZlckNv
bm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJiwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmLCBTdHJl
YW1Db25uZWN0aW9uV29ya1F1ZXVlJik7CisgICAgZW51bSBjbGFzcyBIYXNEZWRpY2F0ZWRDb25u
ZWN0aW9uIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uKFJl
ZjxDb25uZWN0aW9uPiYmLCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYsIFN0cmVhbUNvbm5lY3Rp
b25Xb3JrUXVldWUmLCBIYXNEZWRpY2F0ZWRDb25uZWN0aW9uKTsKIAogICAgIC8vIE1lc3NhZ2VS
ZWNlaXZlUXVldWUKICAgICB2b2lkIGVucXVldWVNZXNzYWdlKENvbm5lY3Rpb24mLCBzdGQ6OnVu
aXF1ZV9wdHI8RGVjb2Rlcj4mJikgZmluYWw7CkBAIC0xMTksNiArMTI5LDcgQEAgcHJpdmF0ZToK
ICAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4+IG1fb3V0T2ZTdHJlYW1NZXNzYWdl
cyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fb3V0T2ZTdHJlYW1NZXNzYWdlc0xvY2spOwogCiAgICAg
Ym9vbCBtX2lzRGlzcGF0Y2hpbmdTdHJlYW1NZXNzYWdlIHsgZmFsc2UgfTsKKyAgICBjb25zdCBi
b29sIG1faGFzRGVkaWNhdGVkQ29ubmVjdGlvbjsKICAgICBMb2NrIG1fcmVjZWl2ZXJzTG9jazsK
ICAgICB1c2luZyBSZWNlaXZlcnNNYXAgPSBIYXNoTWFwPHN0ZDo6cGFpcjx1aW50OF90LCB1aW50
NjRfdD4sIFJlZjxTdHJlYW1NZXNzYWdlUmVjZWl2ZXI+PjsKICAgICBSZWNlaXZlcnNNYXAgbV9y
ZWNlaXZlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX3JlY2VpdmVyc0xvY2spOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCmluZGV4
IDk0NzIzNTBmODVmNDlkNWNiYmIyNDM0N2Q1OTNiZWI4NjIxNGM4MzcuLjAxOWFlMzM3NjM1MTgy
NWIwMGZlYjUyNDY0ZjlmNDQ1ZjA0ZDgwMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KQEAgLTI3LDYgKzI3LDcgQEAKICNp
bXBvcnQgIkNvbm5lY3Rpb24uaCIKIAogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgorI2ltcG9y
dCAiSVBDVGVzdGVyLmgiCiAjaW1wb3J0ICJJbXBvcnRhbmNlQXNzZXJ0aW9uLmgiCiAjaW1wb3J0
ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNYWNoTWVzc2FnZS5oIgpAQCAtNTU4LDExICs1NTksMTQg
QEAgdm9pZCBDb25uZWN0aW9uOjpyZWNlaXZlU291cmNlRXZlbnRIYW5kbGVyKCkKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgZGVjb2Rlci0+c2V0SW1wb3J0YW5jZUFzc2VydGlvbihJbXBvcnRhbmNl
QXNzZXJ0aW9uIHsgaGVhZGVyIH0pOwogI2VuZGlmCi0KKyAgICAKICAgICBpZiAoZGVjb2Rlci0+
bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlTmFtZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb24pIHsKICAg
ICAgICAgQVNTRVJUKG1faXNTZXJ2ZXIpOwotICAgICAgICBBU1NFUlQoIW1faXNDb25uZWN0ZWQp
OwogICAgICAgICBBU1NFUlQoIW1fc2VuZFBvcnQpOworICAgICAgICBpZiAobV9pc0Nvbm5lY3Rl
ZCkgeworICAgICAgICAgICAgQVNTRVJUX0lTX1RFU1RJTkdfSVBDKCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KIAogICAgICAgICBNYWNoUG9ydCBwb3J0OwogICAgICAgICBpZiAo
IWRlY29kZXItPmRlY29kZShwb3J0KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvSVBDU3RyZWFtVGVzdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1N0cmVhbVRl
c3Rlci5jcHAKaW5kZXggYWJiNmFjNDlkNjgxN2NlNjAyMGY5YzdkM2FjN2IyNjVhNjFmZGIzOC4u
ODIyNjdlMjFhZGU2MmE5YjY2NzQ1ZjNkYzg3YTZjYTVjMzBiMmVmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvSVBDU3RyZWFtVGVzdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9JUENTdHJlYW1UZXN0ZXIuY3BwCkBAIC01NSw2ICs1NSw3IEBAIElQQ1N0cmVhbVRl
c3Rlcjo6fklQQ1N0cmVhbVRlc3RlcigpID0gZGVmYXVsdDsKIHZvaWQgSVBDU3RyZWFtVGVzdGVy
Ojppbml0aWFsaXplKCkKIHsKICAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0YXJ0UmVjZWl2aW5n
TWVzc2FnZXMoKnRoaXMsIE1lc3NhZ2VzOjpJUENTdHJlYW1UZXN0ZXI6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fc3RyZWFtQ29ubmVjdGlv
bi0+b3BlbigpOwogICAgIHdvcmtRdWV1ZSgpLmRpc3BhdGNoKFt0aGlzXSB7CiAgICAgICAgIG1f
c3RyZWFtQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OklQQ1N0cmVhbVRl
c3RlclByb3h5OjpXYXNDcmVhdGVkKHdvcmtRdWV1ZSgpLndha2VVcFNlbWFwaG9yZSgpKSwgbV9p
ZGVudGlmaWVyKTsKICAgICB9KTsKQEAgLTYyLDYgKzYzLDcgQEAgdm9pZCBJUENTdHJlYW1UZXN0
ZXI6OmluaXRpYWxpemUoKQogCiB2b2lkIElQQ1N0cmVhbVRlc3Rlcjo6c3RvcExpc3RlbmluZ0Zv
cklQQyhSZWY8SVBDU3RyZWFtVGVzdGVyPiYmIHJlZkZyb21Db25uZWN0aW9uKQogeworICAgIG1f
c3RyZWFtQ29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOwogICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+
c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpJUENTdHJlYW1UZXN0ZXI6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgIHdvcmtRdWV1ZSgp
LnN0b3BBbmRXYWl0Rm9yQ29tcGxldGlvbigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvSVBDVGVzdGVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuaApp
bmRleCA2OGJiNmNiYjE0ZjU4YjEzNzYxZWFkOWNkNWIzOGE5YzlkYjlmYmJmLi43MDA5N2I4MDZi
ZTMzZmRkMjUxMGM0OWI1ZWUzMzgzY2Q3YjFlYWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9JUENUZXN0ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIu
aApAQCAtNDQsNyArNDQsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotI2RlZmluZSBBU1NF
UlRfSVNfVEVTVElOR19JUEMoKSBBU1NFUlQoaXNUZXN0aW5nSVBDKCksICJVbnRydXN0ZWQgY29u
bmVjdGlvbiBzZW50IGludmFsaWQgZGF0YS4gU2hvdWxkIG9ubHkgaGFwcGVuIHdoZW4gdGVzdGlu
ZyBJUEMuIikKKyNkZWZpbmUgQVNTRVJUX0lTX1RFU1RJTkdfSVBDKCkgQVNTRVJUKFdlYktpdDo6
aXNUZXN0aW5nSVBDKCksICJVbnRydXN0ZWQgY29ubmVjdGlvbiBzZW50IGludmFsaWQgZGF0YS4g
U2hvdWxkIG9ubHkgaGFwcGVuIHdoZW4gdGVzdGluZyBJUEMuIikKIAogI2lmIEVOQUJMRShJUENf
VEVTVElOR19BUEkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3Bw
CmluZGV4IDVlOTIyZjc5YThmZWJiNzM2NjIwZTg0ODE3MTNkN2NjZjhlNzQwNjguLmE1Y2ZjMTcw
NDhhZjAwYjM4MzZiZGY5ODQ3ZDUwY2E1MzY2M2VjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtNTUsNiArNTUsNyBAQCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KEdQVVByb2Nlc3NDb25u
ZWN0aW9uJgogICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmFkZENsaWVudCgqdGhpcyk7CiAg
ICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+bWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCks
ICp0aGlzKTsKICAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlR3JhcGhpY3NDb250ZXh0
R0woYXR0cmlidXRlcywgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIHJlbmRlcmluZ0Jh
Y2tlbmQsIG1fc3RyZWFtQ29ubmVjdGlvbi5zdHJlYW1CdWZmZXIoKSksIDAsIElQQzo6U2VuZE9w
dGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICBt
X3N0cmVhbUNvbm5lY3Rpb24ub3BlbigpOwogICAgIC8vIFRPRE86IFdlIG11c3Qgd2FpdCB1bnRp
bCBpbml0aWFsaXplZCwgYmVjYXVzZSBhdCB0aGUgbW9tZW50IHdlIGNhbm5vdCByZWNlaXZlIElQ
QyBtZXNzYWdlcwogICAgIC8vIGR1cmluZyB3YWl0IHdoaWxlIGluIHN5bmNocm9ub3VzIHN0cmVh
bSBzZW5kLiBTaG91bGQgYmUgZml4ZWQgYXMgcGFydCBvZiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjExLgogICAgIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7CkBA
IC0zMzcsNiArMzM4LDcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjphYmFu
ZG9uR3B1UHJvY2VzcygpCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2Nv
bm5lY3RHcHVQcm9jZXNzSWZOZWVkZWQoKQogewogICAgIGlmIChhdXRvIGdwdVByb2Nlc3NDb25u
ZWN0aW9uID0gc3RkOjpleGNoYW5nZShtX2dwdVByb2Nlc3NDb25uZWN0aW9uLCBudWxscHRyKSkg
eworICAgICAgICBtX3N0cmVhbUNvbm5lY3Rpb24uaW52YWxpZGF0ZSgpOwogICAgICAgICBncHVQ
cm9jZXNzQ29ubmVjdGlvbi0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKICAgICAgICAgZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICAgICAg
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wobV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpLCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2
ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5jcHAKaW5kZXggODMyNzY2MzNjYjU3N2Q5NThiNDQ0NWFhNzRiOTcxMTQ0NTA3MTQz
Zi4uZTkyNGVhZjU5YjJjOTYwYWYwOTgyMjI0MzA1ZjJiYTZhNzIzOTJhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcApAQCAtNzAsMTMgKzcwLDE0IEBAIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6flJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpCiBH
UFVQcm9jZXNzQ29ubmVjdGlvbiYgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjplbnN1cmVH
UFVQcm9jZXNzQ29ubmVjdGlvbigpCiB7CiAgICAgaWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0aW9u
KSB7Ci0gICAgICAgIGF1dG8mIGdwdVByb2Nlc3NDb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKLSAgICAgICAgZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24uYWRkQ2xpZW50KCp0aGlzKTsKLSAgICAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24ubWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgcmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgICAgIG1fZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24gPSAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24oKTsKKyAgICAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+YWRkQ2xpZW50
KCp0aGlzKTsKKwogICAgICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY29ubmVjdGlvbkJ1ZmZl
clNpemUgPSAxIDw8IDIxOwotICAgICAgICBtX3N0cmVhbUNvbm5lY3Rpb24gPSBtYWtlVW5pcXVl
PElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbj4oZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVj
dGlvbigpLCBjb25uZWN0aW9uQnVmZmVyU2l6ZSk7Ci0gICAgICAgIGdwdVByb2Nlc3NDb25uZWN0
aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpDcmVhdGVSZW5kZXJpbmdCYWNrZW5kKG1fcGFyYW1ldGVycywgbV9zdHJlYW1Db25uZWN0aW9u
LT5zdHJlYW1CdWZmZXIoKSksIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZl
bldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKLSAgICAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlv
biA9IGdwdVByb2Nlc3NDb25uZWN0aW9uOworICAgICAgICBhdXRvIFtzdHJlYW1Db25uZWN0aW9u
LCBkZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50SWRlbnRpZmVyXSA9IElQQzo6U3RyZWFtQ2xpZW50
Q29ubmVjdGlvbjo6Y3JlYXRlV2l0aERlZGljYXRlZENvbm5lY3Rpb24oKnRoaXMsIGNvbm5lY3Rp
b25CdWZmZXJTaXplKTsKKyAgICAgICAgbV9zdHJlYW1Db25uZWN0aW9uID0gV1RGTW92ZShzdHJl
YW1Db25uZWN0aW9uKTsKKyAgICAgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5vcGVuKCk7CisgICAg
ICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVSZW5kZXJpbmdCYWNrZW5kKG1fcGFyYW1l
dGVycywgZGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudElkZW50aWZlciwgbV9zdHJlYW1Db25uZWN0
aW9uLT5zdHJlYW1CdWZmZXIoKSksIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdl
RXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKICAgICB9CiAgICAgcmV0dXJuICptX2dwdVBy
b2Nlc3NDb25uZWN0aW9uOwogfQpAQCAtMTAxLDYgKzEwMiw3IEBAIHZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjpkaXNjb25uZWN0R1BVUHJvY2VzcygpCiAgICAgbV9nZXRQaXhlbEJ1
ZmZlclNoYXJlZE1lbW9yeSA9IG51bGxwdHI7CiAgICAgbV9yZW5kZXJpbmdVcGRhdGVJRCA9IHsg
fTsKICAgICBtX2RpZFJlbmRlcmluZ1VwZGF0ZUlEID0geyB9OworICAgIG1fc3RyZWFtQ29ubmVj
dGlvbi0+aW52YWxpZGF0ZSgpOwogICAgIG1fc3RyZWFtQ29ubmVjdGlvbiA9IG51bGxwdHI7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCmluZGV4IDFkMDBmNGY5NmNl
NDhlY2M0NjI0ZDM4MmM1MGUyOTFmM2U3YzcxMmEuLjZjYTYzODVkMzAwYjE5MTFmN2RjZGE1ZDgz
NmZlZGM3ODVkMmM1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaApA
QCAtMTcyLDkgKzE3MiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRmx1c2goV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0Rmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkRmluYWxpemVSZW5kZXJpbmdVcGRhdGUoUmVuZGVy
aW5nVXBkYXRlSUQgZGlkUmVuZGVyaW5nVXBkYXRlSUQpOwogCisgICAgR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24qIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24geyBudWxscHRyIH07CisgICAgUmVmUHRyPElQ
Qzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OlN0
cmVhbUNsaWVudENvbm5lY3Rpb24+IG1fc3RyZWFtQ29ubmVjdGlvbjsKICAgICBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKLSAgICBXZWFrUHRy
PEdQVVByb2Nlc3NDb25uZWN0aW9uPiBtX2dwdVByb2Nlc3NDb25uZWN0aW9uOwogICAgIFJlbW90
ZVJlc291cmNlQ2FjaGVQcm94eSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB7ICp0aGlzIH07
CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gbV9nZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeTsK
ICAgICBXZWJDb3JlOjpUaW1lciBtX2Rlc3Ryb3lHZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeVRp
bWVyIHsgKnRoaXMsICZSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRlc3Ryb3lHZXRQaXhl
bEJ1ZmZlclNoYXJlZE1lbW9yeSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVUHJveHkuY3BwCmluZGV4
IDg0MzA0YTc3NjVkNzlmMjc1MTg4OTE1YWFkZDMwMThlYjE2MTZkYjIuLmE2ZDg4MTJiYWRkN2Q5
MDVkYjdjYjNkNjEwYTQ1YjA2YmYzM2VjZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5j
cHAKQEAgLTUxLDYgKzUxLDcgQEAgUmVtb3RlR1BVUHJveHk6OlJlbW90ZUdQVVByb3h5KEdQVVBy
b2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgV2ViR1AKICAgICBtX2dwdVBy
b2Nlc3NDb25uZWN0aW9uLT5hZGRDbGllbnQoKnRoaXMpOwogICAgIG1fZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
UmVtb3RlR1BVUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllci50b1VJbnQ2
NCgpLCAqdGhpcyk7CiAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZVJlbW90ZUdQVShp
ZGVudGlmaWVyLCByZW5kZXJpbmdCYWNrZW5kLCBtX3N0cmVhbUNvbm5lY3Rpb24uc3RyZWFtQnVm
ZmVyKCkpLCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGlu
Z0ZvclN5bmNSZXBseSk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLm9wZW4oKTsKICAgICAvLyBU
T0RPOiBXZSBtdXN0IHdhaXQgdW50aWwgaW5pdGlhbGl6ZWQsIGJlY2F1c2UgYXQgdGhlIG1vbWVu
dCB3ZSBjYW5ub3QgcmVjZWl2ZSBJUEMgbWVzc2FnZXMKICAgICAvLyBkdXJpbmcgd2FpdCB3aGls
ZSBpbiBzeW5jaHJvbm91cyBzdHJlYW0gc2VuZC4gU2hvdWxkIGJlIGZpeGVkIGFzIHBhcnQgb2Yg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzIxMS4KICAgICB3YWl0
VW50aWxJbml0aWFsaXplZCgpOwpAQCAtNjgsNiArNjksNyBAQCB2b2lkIFJlbW90ZUdQVVByb3h5
OjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBjb25u
ZWN0aQogdm9pZCBSZW1vdGVHUFVQcm94eTo6YWJhbmRvbkdQVVByb2Nlc3MoKQogewogICAgIGF1
dG8gZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24sIG51bGxwdHIpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi5pbnZhbGlkYXRlKCk7CiAg
ICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR1BVUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9iYWNraW5nLnRvVUludDY0KCkpOwogICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24gPSBu
dWxscHRyOwogICAgIG1fbG9zdCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCmluZGV4IGRiNWFhOGU0MGQzZGJmNmFiYmM3
NGZmYTBhY2MwOGIyZGQyYjU2ZjUuLmVkZmU5MDZlODRlODA1MDY3N2Q3NjY1YWU3ZTBhMTgzYmRh
YTQyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rl
c3RpbmdBUEkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rl
c3RpbmdBUEkuY3BwCkBAIC01NDEsMTAgKzU0MSwxMSBAQCBKU1ZhbHVlUmVmIEpTSVBDU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbjo6c2VuZE1lc3NhZ2UoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2Jq
ZQogCiAgICAgYXV0byBbZGVzdGluYXRpb25JRCwgbWVzc2FnZU5hbWUsIHRpbWVvdXRdID0gKmlu
Zm87CiAgICAgYXV0byYgc3RyZWFtQ29ubmVjdGlvbiA9IGpzU3RyZWFtQ29ubmVjdGlvbi0+Y29u
bmVjdGlvbigpOworICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBzdHJlYW1Db25uZWN0aW9uLmNvbm5l
Y3Rpb25Gb3JUZXN0aW5nKCk7CiAKICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlUmVmPElQ
Qzo6RW5jb2Rlcj4obWVzc2FnZU5hbWUsIGRlc3RpbmF0aW9uSUQpOwogICAgIGlmIChwcmVwYXJl
VG9TZW5kT3V0T2ZTdHJlYW1NZXNzYWdlKGNvbnRleHQsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50
cywgKmpzU3RyZWFtQ29ubmVjdGlvbi0+bV9qc0lQQywgc3RyZWFtQ29ubmVjdGlvbiwgZW5jb2Rl
ci5nZXQoKSwgZGVzdGluYXRpb25JRCwgdGltZW91dCwgZXhjZXB0aW9uKSkKLSAgICAgICAgc3Ry
ZWFtQ29ubmVjdGlvbi5tX2Nvbm5lY3Rpb24uc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwg
eyB9KTsKKyAgICAgICAgY29ubmVjdGlvbi5zZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCB7
IH0pOwogCiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQpAQCAtNTY2LDEzICs1NjcsMTQgQEAg
SlNWYWx1ZVJlZiBKU0lQQ1N0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmRTeW5jTWVzc2FnZShK
U0NvbnRleHRSZWYgY29udGV4dCwgSlMKIAogICAgIGF1dG8gW2Rlc3RpbmF0aW9uSUQsIG1lc3Nh
Z2VOYW1lLCB0aW1lb3V0XSA9ICppbmZvOwogICAgIGF1dG8mIHN0cmVhbUNvbm5lY3Rpb24gPSBq
c1N0cmVhbUNvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKTsKKyAgICBhdXRvJiBjb25uZWN0aW9uID0g
c3RyZWFtQ29ubmVjdGlvbi5jb25uZWN0aW9uRm9yVGVzdGluZygpOwogCiAgICAgSVBDOjpDb25u
ZWN0aW9uOjpTeW5jUmVxdWVzdElEIHN5bmNSZXF1ZXN0SUQ7Ci0gICAgYXV0byBlbmNvZGVyID0g
c3RyZWFtQ29ubmVjdGlvbi5tX2Nvbm5lY3Rpb24uY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKG1l
c3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklELCBzeW5jUmVxdWVzdElEKTsKKyAgICBhdXRvIGVuY29k
ZXIgPSBjb25uZWN0aW9uLmNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihtZXNzYWdlTmFtZSwgZGVz
dGluYXRpb25JRCwgc3luY1JlcXVlc3RJRCk7CiAgICAgaWYgKCFwcmVwYXJlVG9TZW5kT3V0T2ZT
dHJlYW1NZXNzYWdlKGNvbnRleHQsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cywgKmpzU3RyZWFt
Q29ubmVjdGlvbi0+bV9qc0lQQywgc3RyZWFtQ29ubmVjdGlvbiwgZW5jb2Rlci5nZXQoKSwgZGVz
dGluYXRpb25JRCwgdGltZW91dCwgZXhjZXB0aW9uKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGNvbnRleHQpOwogCi0gICAgaWYgKGF1dG8gcmVwbHlEZWNvZGVyID0gc3Ry
ZWFtQ29ubmVjdGlvbi5tX2Nvbm5lY3Rpb24uc2VuZFN5bmNNZXNzYWdlKHN5bmNSZXF1ZXN0SUQs
IFdURk1vdmUoZW5jb2RlciksIHRpbWVvdXQsIHsgfSkpIHsKKyAgICBpZiAoYXV0byByZXBseURl
Y29kZXIgPSBjb25uZWN0aW9uLnNlbmRTeW5jTWVzc2FnZShzeW5jUmVxdWVzdElELCBXVEZNb3Zl
KGVuY29kZXIpLCB0aW1lb3V0LCB7IH0pKSB7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X0NBVENIX1NDT1BFKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIGF1dG8qIGpzUmVzdWx0
ID0ganNSZXN1bHRGcm9tUmVwbHlEZWNvZGVyKGdsb2JhbE9iamVjdCwgbWVzc2FnZU5hbWUsICpy
ZXBseURlY29kZXIpOwogICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCA2
MjRlNzM3YTU4YjM0NWVhM2Y3MDg1YjI3NjZjNDE1NGU3M2ZlMTBhLi40ZDkzNDMwNzc3M2ZiN2Mw
NTJhZDc4ZWI1YTc2ZjgyMjZiZWEzNTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC0zNzksNyArMzc5LDcgQEAgdm9pZCBS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlUmVuZGVyaW5nKCkKIAogICAgIE1lc3Nh
Z2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWUgbWVz
c2FnZShsYXllclRyYW5zYWN0aW9uLCBzY3JvbGxpbmdUcmFuc2FjdGlvbik7CiAgICAgYXV0byBj
b21taXRFbmNvZGVyID0gbWFrZVVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+KE1lc3NhZ2VzOjpSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU6Om5hbWUoKSwgbV9p
ZGVudGlmaWVyLnRvVUludDY0KCkpOwotICAgIGNvbW1pdEVuY29kZXIuZ2V0KCkgPDwgbWVzc2Fn
ZS5hcmd1bWVudHMoKTsKKyAgICBjb21taXRFbmNvZGVyLmdldCgpIDw8IFdURk1vdmUobWVzc2Fn
ZSkuYXJndW1lbnRzKCk7CiAKICAgICBhdXRvIGZsdXNoZXJzID0gYmFja2luZ1N0b3JlQ29sbGVj
dGlvbi5kaWRGbHVzaExheWVycyhsYXllclRyYW5zYWN0aW9uKTsKICAgICBSZWZQdHI8QmFja2lu
Z1N0b3JlRmx1c2hlcj4gYmFja2luZ1N0b3JlRmx1c2hlciA9IEJhY2tpbmdTdG9yZUZsdXNoZXI6
OmNyZWF0ZShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LCBXVEZNb3ZlKGNvbW1pdEVuY29kZXIpLCBXVEZNb3ZlKGZsdXNoZXJzKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457250</attachid>
            <date>2022-04-11 05:56:16 -0700</date>
            <delta_ts>2022-04-12 02:48:25 -0700</delta_ts>
            <desc>For landing</desc>
            <filename>bug-238516-20220411155615.patch</filename>
            <type>text/plain</type>
            <size>53260</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGZjZmYzNDI0MDU1OTI5OGI1
ZDI4OGRhYTdiMjQ2NmQzOTc0ZTA0YjYuLjdlMzY5MWY4YzNkMmI4ZGNlODI1NjBlODU0NTg2NDkw
OWZjNzZkOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAyIEBACisyMDIyLTA0LTExICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCBzaG91bGQgaGF2ZSBkZWRpY2F0ZWQgSVBDOjpDb25uZWN0aW9uIGZvciBvdXQtb2Yt
c3RyZWFtIG1lc3NhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzg1MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVc2UgZGVkaWNhdGVkIElQQzo6Q29ubmVjdGlvbiBmb3IgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCBJUEMgc3RyZWFtIGNvbm5lY3Rpb24gaW5zdGVhZAorICAgICAgICBvZiB1c2luZyB0
aGUgV1AtR1BVUCBtYWluIGNvbm5lY3Rpb24uIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIgc3Rh
cnRzIGxpc3RlbmluZyB0bworICAgICAgICBpdHMgbWVzc2FnZXMgaW4gdGhlIHdvcmtlciB0aHJl
YWQuIEF0IHRoYXQgcG9pbnQsIHNvbWUgb3V0LW9mLXN0cmVhbSBtZXNzYWdlIGZvciB0aGF0Cisg
ICAgICAgIGlkIG1pZ2h0IGFscmVhZHkgaGF2ZSBiZWVuIGRpc3BhdGNoZWQgdG8gbWFpbiB0aHJl
YWQsIGNhdXNpbmcgbWlzc2luZyBtZXNzYWdlIGFuZCBhc3NlcnQuCisKKyAgICAgICAgSW5zdGVh
ZCwgdXNlIGRlZGljYXRlZCBjb25uZWN0aW9uIGFuZCByb3V0ZSBhbGwgdGhlIG1lc3NhZ2VzIHRv
IHRoZSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uCisgICAgICAgIGluIGEgIm1lc3NhZ2UgcXVldWUi
LiBUaGlzIHdheSB3aGVuIGVhY2ggb3V0LW9mLXN0cmVhbSBtZXNzYWdlIG1hcmtlciBpcyBwcm9j
ZXNzZWQsIHRoZQorICAgICAgICBtZXNzYWdlIHdpbGwgYmUsIGRpcmVjdGx5IG9yIGV2ZW50dWFs
bHksIGZvdW5kIGZyb20gdGhlIG1lc3NhZ2UgcXVldWUuCisKKyAgICAgICAgUmVtb3ZlIHdvcmth
cm91bmRzOgorICAgICAgICAgLSBBZGRpbmcgYSBsaXN0ZW5lciB0byB0aGUgbWFpbiBXUC1HUFVQ
IGNvbm5lY3Rpb24gZm9yIGFsbCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyIG1lc3NhZ2VzCisg
ICAgICAgICAgIGFuZCByb3V0aW5nIHRoZW0gdG8gcGFydGljdWxhciBTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uLiBUaGlzIHdhcyBwcm9ibGVtYXRpYyBzaW5jZQorICAgICAgICAgICB0aGVyZSBhcmUg
bWFueSBSUkIgU3RyZWFtU2VydmVyQ29ubmVjdGlvbiBpbnN0YW5jZXMsIG9uZSBwZXIgUGFnZSwg
YnV0IG9ubHkgb25lIFdQLUdQVVAKKyAgICAgICAgICAgY29ubmVjdGlvbi4KKyAgICAgICAgIC0g
UkVMRUFTRV9MT0cgaW4gTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcCBhYm91dCB3YXJuaW5nIGZvciB0
aGUgYWJvdmUuIFR1cm4gdGhpcyBiYWNrIGludG8gYW4KKyAgICAgICAgICAgQVNTRVJULgorCisg
ICAgICAgIFNpbmNlIElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBhbmQgSVBDOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uIGFyZSBsaWtlIElQQzo6Q29ubmVjdGlvbiwKKyAgICAgICAgYWRkIG9w
ZW4oKSBhbmQgaW52YWxpZGF0ZSgpIGNhbGxzLiBUaGVzZSBoYXZlIHNhbWUgY29udHJhY3QgYXMg
d2l0aCBJUEM6OkNvbm5lY3Rpb246CisgICAgICAgIG9wZW4oKSBzaG91bGQgYmUgY2FsbGVkIGlm
IGNvbm5lY3Rpb24gaXMgdG8gYmUgdXNlZCwgaW52YWxpZGF0ZSgpIG11c3QgYmUgY2FsbGVkIGlm
IG9wZW4oKSB3YXMgY2FsbGVkLgorICAgICAgICBUaGVzZSBjYWxscyBoYXZlIGFuIGVmZmVjdCBj
dXJyZW50bHkgb25seSB3aXRoIGRlZGljYXRlZCBjb25uZWN0aW9ucywgYnV0IHRoZXNlIGFyZSBh
ZGRlZCB0byBhbGwKKyAgICAgICAgSVBDOjpTdHJlYW0qQ29ubmVjdGlvbiBjbGllbnRzIGZvciBj
b25zaXN0ZW5jeSBhbmQgZnV0dXJlIHVzZXMuCisKKyAgICAgICAgQ2hhbmdlcyBzZW1hbnRpY3Mg
b2YgSVBDOjpDb25uZWN0aW9uIHNsaWdodGx5OgorICAgICAgICBCZWZvcmUsIHRoZXJlIHdhcyBu
byB1bnRydXN0ZWQgaG9sZGVycyBvZiAic2VydmVyIiBJUEM6OkNvbm5lY3Rpb24sIGUuZy4gdGhl
IElQQzo6Q29ubmVjdGlvbiBpbnN0YW5jZXMKKyAgICAgICAgd2VyZSBuZXZlciBpbnN0YW50aWF0
ZWQgYnkgV1AuCisgICAgICAgIEFmdGVyLCB1bnRydXN0ZWQgV1AgaW5zdGFudGlhdGVzIHRoZXNl
IElQQyBzdHJlYW0gZGVkaWNhdGVkIGNvbm5lY3Rpb25zLgorICAgICAgICBUaGlzIGlzIGFjY291
bnRlZCBpbiB0aGUgY2FzZSB3aGVyZSBJUEM6OkNvbm5lY3Rpb24gZW5zdXJlcyB0aGF0IElQQzo6
TWVzc2FnZU5hbWVzOjpJbml0aWFsaXplQ29ubmVjdGlvbgorICAgICAgICBtZXNzYWdlIGlzIG5v
dCBhY3RlZCBvbiB0d2ljZS4KKworICAgICAgICBUZXN0ZWQgYnkgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9saW5rcy9saW5rcy1jcmVhdGVkLWJ5LWEtYW5k
LWFyZWEtZWxlbWVudHMvdGFyZ2V0X2JsYW5rX2ltcGxpY2l0X25vb3BlbmVyLmh0bWwKKyAgICAg
ICAgICAgICAgICAgIC0tY2hpbGQtcHJvY2Vzc2VzPTEgLS1leHBlcmltZW50YWwtZmVhdHVyZT1V
c2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVyaW5nRW5hYmxlZD10cnVlIC0taXRlcmF0aW9ucz0xMDAg
LS1mb3JjZSAtLXNpbXVsYXRvcgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Y3JlYXRlUmVuZGVyaW5nQmFja2VuZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpzdG9wTGlzdGVuaW5nRm9ySVBDKToKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c3RhcnRMaXN0ZW5pbmdGb3JJUEMpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdG9wTGlzdGVuaW5nRm9ySVBD
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUdQVS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdQVTo6aW5pdGlhbGl6ZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdQVTo6c3RvcExpc3RlbmluZ0ZvcklQQyk6CisgICAg
ICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwOgorICAgICAgICAo
SVBDOjpNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwOjphZGRJbXBsKToKKyAgICAgICAgKElQQzo6TWVz
c2FnZVJlY2VpdmVRdWV1ZU1hcDo6cmVtb3ZlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5l
Y3Rpb246OmNyZWF0ZVdpdGhEZWRpY2F0ZWRDb25uZWN0aW9uKToKKyAgICAgICAgKElQQzo6U3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbik6CisgICAgICAgIChJ
UEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246On5TdHJlYW1DbGllbnRDb25uZWN0aW9uKToKKyAg
ICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6b3Blbik6CisgICAgICAgIChJUEM6
OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OmludmFsaWRhdGUpOgorICAgICAgICAoSVBDOjpTdHJl
YW1DbGllbnRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9yVGVzdGluZyk6CisgICAgICAgICogUGxh
dGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAgKElQQzo6U3RyZWFt
Q2xpZW50Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5l
Y3Rpb246OnNlbmRTeW5jKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjp0cnlTZW5kU3luY1N0cmVhbSk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
OjpjcmVhdGVXaXRoRGVkaWNhdGVkQ29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVhbVNl
cnZlckNvbm5lY3Rpb25CYXNlOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSk6CisgICAgICAg
IChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjp+U3RyZWFtU2VydmVyQ29ubmVjdGlv
bkJhc2UpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6b3Blbik6
CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjppbnZhbGlkYXRlKToK
KyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0YXJ0UmVjZWl2aW5n
TWVzc2FnZXNJbXBsKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6
OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogU2hhcmVkL0lQQ1N0cmVhbVRlc3Rlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OklQQ1N0cmVhbVRlc3Rlcjo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJLaXQ6OklQQ1N0cmVhbVRlc3Rlcjo6c3RvcExpc3RlbmluZ0ZvcklQQyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkaXNjb25uZWN0R3B1UHJvY2Vzc0lmTmVlZGVkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmVuc3Vy
ZUdQVVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpkaXNjb25uZWN0R1BVUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR1BVUHJveHk6OlJlbW90ZUdQVVByb3h5KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR1BVUHJveHk6OmFiYW5kb25HUFVQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklQQ1Rl
c3RpbmdBUEk6OkpTSVBDU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZE1lc3NhZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU0lQQ1N0cmVhbUNsaWVudENvbm5lY3Rpb246
OnNlbmRTeW5jTWVzc2FnZSk6CisKIDIwMjItMDQtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIFdpbmRvd3MgYnVpbGQgZml4IGFmdGVyIHIy
OTI2OTYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNDJjMGJmMDJmOGU1NDVjYzM2MDE3YWViNmRlZDBiZDhj
NjI2YmQ0NS4uODA0YTVjNjlmMGI0YTFhNjdlNmQ2YjkwMzY5MjJjNWFhNDI3MTc4OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcApAQCAtNTM4LDEwICs1MzgsMTAgQEAgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkm
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmltYWdlRGVjb2RlckFWRlByb3h5KCkKIH0KICNl
bmRpZgogCi12b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0Jh
Y2tlbmQoUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIGNyZWF0aW9u
UGFyYW1ldGVycywgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtQnVmZmVyKQor
dm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiBjcmVhdGlvblBhcmFtZXRl
cnMsIElQQzo6QXR0YWNobWVudCYmIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNv
bm5lY3Rpb25CdWZmZXImJiBzdHJlYW1CdWZmZXIpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAuZW5zdXJlKGNyZWF0aW9uUGFyYW1ldGVycy5pZGVu
dGlmaWVyLCBbJl0oKSB7Ci0gICAgICAgIHJldHVybiBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VS
ZWNlaXZlUXVldWUgeyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIFdURk1v
dmUoY3JlYXRpb25QYXJhbWV0ZXJzKSwgV1RGTW92ZShzdHJlYW1CdWZmZXIpKSB9OworICAgICAg
ICByZXR1cm4gSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlIHsgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGNyZWF0aW9uUGFyYW1ldGVycyks
IFdURk1vdmUoY29ubmVjdGlvbklkZW50aWZpZXIpLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlcikpIH07
CiAgICAgfSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCmluZGV4IDE5MWMwYTk5ODNjMjI1YzdjZGE2NzBhOWY2ZDRiYWRmYmU1
ZTAyN2IuLmZiNTZiMDZkYTU5ZjZhM2U3MmIyODg2ZGUzOGFjYjZhZjY1ZjQzZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aApAQCAtMjI0LDcgKzIyNCw3IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlTWVkaWFSZWNvcmRlck1h
bmFnZXImIG1lZGlhUmVjb3JkZXJNYW5hZ2VyKCk7CiAjZW5kaWYKIAotICAgIHZvaWQgY3JlYXRl
UmVuZGVyaW5nQmFja2VuZChSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJz
JiYsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKKyAgICB2b2lkIGNyZWF0ZVJlbmRl
cmluZ0JhY2tlbmQoUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmLCBJ
UEM6OkF0dGFjaG1lbnQmJiwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYpOwogICAgIHZv
aWQgcmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwog
CiAjaWYgRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAxYjgz
MmEzMTgzZjgyOTRlYzA1N2NjYTljNzZmYWJhMDAyNGU1NGJiLi5lYTNjMTQ3ZWM0MTljM2Y0OTU1
NjMxY2UyMDUzZGUyMGQ2YjY1YmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
MjMsNyArMjMsNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogbWVzc2FnZXMgLT4gR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBXYW50c0Rpc3BhdGNoTWVzc2FnZSB7Ci0gICAgdm9pZCBD
cmVhdGVSZW5kZXJpbmdCYWNrZW5kKHN0cnVjdCBXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRDcmVhdGlvblBhcmFtZXRlcnMgY3JlYXRpb25QYXJhbWV0ZXJzLCBJUEM6OlN0cmVhbUNvbm5l
Y3Rpb25CdWZmZXIgc3RyZWFtQnVmZmVyKQorICAgIHZvaWQgQ3JlYXRlUmVuZGVyaW5nQmFja2Vu
ZChzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJz
IGNyZWF0aW9uUGFyYW1ldGVycywgSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVy
LCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgc3RyZWFtQnVmZmVyKQogICAgIHZvaWQgUmVs
ZWFzZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBy
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgdm9pZCBD
cmVhdGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
IGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9u
QnVmZmVyIHN0cmVhbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCmluZGV4IDZkYjY0NDBjZjk2
ZDkyYWMyZDdmNWJlMWQ1MjIzYWUwNWEwMTcxYjQuLmYwMjQyYWY3YTQ1MDBhNTA0MjZjM2IyMjU1
NDE0MjM2NjgzNmM3MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcApAQCAtODYsNiArODYs
NyBAQCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKCkK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmluaXRpYWxpemUoR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKIHsKICAgICBhc3NlcnRJc01haW5SdW5Mb29wKCk7
CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5vcGVuKCk7CiAgICAgcmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKS5kaXNwYXRjaChbYXR0cmlidXRlcyA9IFdURk1vdmUoYXR0
cmlidXRlcyksIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSgpIG11dGFibGUgewogICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT53b3JrUXVldWVJbml0aWFsaXplKFdURk1vdmUoYXR0cmlidXRl
cykpOwogICAgIH0pOwpAQCAtOTUsNiArOTYsNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjppbml0aWFsaXplKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZQog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6c3RvcExpc3RlbmluZ0ZvcklQQyhSZWY8UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w+JiYgcmVmRnJvbUNvbm5lY3Rpb24pCiB7CiAgICAgYXNzZXJ0
SXNNYWluUnVuTG9vcCgpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOwog
ICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICByZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFN0cmVhbVdvcmtRdWV1ZSgpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShy
ZWZGcm9tQ29ubmVjdGlvbildKCkgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT53b3JrUXVldWVV
bmluaXRpYWxpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCAwNWQ5MjYwZjU0YzA4
MGRiNzAyNmRjMzI4YTk3OWU0YzZhZWViYTg4Li43ZDZmZDI3OGEzM2Q3MzE2NWVkYzE0ZDFlM2I4
YjBlZTIwZWMyNzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC04MCwxNiArODAsMTYg
QEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIGNyZWF0aW9uUGFyYW1ldGVycywg
SVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtQnVmZmVyKQorUmVmPFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZShHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYgY3JlYXRpb25QYXJhbWV0ZXJzLCBJUEM6OkF0
dGFjaG1lbnQmJiBjb25uZWN0aW9uSWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyJiYgc3RyZWFtQnVmZmVyKQogewotICAgIGF1dG8gaW5zdGFuY2UgPSBhZG9wdFJlZigqbmV3
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgV1RGTW92
ZShjcmVhdGlvblBhcmFtZXRlcnMpLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlcikpKTsKKyAgICBhdXRv
IGluc3RhbmNlID0gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKGdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MsIFdURk1vdmUoY3JlYXRpb25QYXJhbWV0ZXJzKSwgV1RGTW92ZShj
b25uZWN0aW9uSWRlbnRpZmllciksIFdURk1vdmUoc3RyZWFtQnVmZmVyKSkpOwogICAgIGluc3Rh
bmNlLT5zdGFydExpc3RlbmluZ0ZvcklQQygpOwogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAot
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYgY3JlYXRpb25QYXJhbWV0ZXJzLCBJUEM6OlN0
cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW1CdWZmZXIpCitSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBh
cmFtZXRlcnMmJiBjcmVhdGlvblBhcmFtZXRlcnMsIElQQzo6QXR0YWNobWVudCYmIGNvbm5lY3Rp
b25JZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW1CdWZmZXIp
CiAgICAgOiBtX3dvcmtRdWV1ZShJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OmNyZWF0
ZSgiUmVtb3RlUmVuZGVyaW5nQmFja2VuZCB3b3JrIHF1ZXVlIikpCi0gICAgLCBtX3N0cmVhbUNv
bm5lY3Rpb24oSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGUoZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCksIFdURk1vdmUoc3RyZWFtQnVmZmVyKSwgbV93b3Jr
UXVldWUuZ2V0KCkpKQorICAgICwgbV9zdHJlYW1Db25uZWN0aW9uKElQQzo6U3RyZWFtU2VydmVy
Q29ubmVjdGlvbjo6Y3JlYXRlV2l0aERlZGljYXRlZENvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0
aW9uSWRlbnRpZmllciksIFdURk1vdmUoc3RyZWFtQnVmZmVyKSwgbV93b3JrUXVldWUuZ2V0KCkp
KQogICAgICwgbV9yZW1vdGVSZXNvdXJjZUNhY2hlKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
d2ViUHJvY2Vzc0lkZW50aWZpZXIoKSkKICAgICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cyhncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQogICAgICwgbV9yZXNvdXJjZU93bmVyKGdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3Mud2ViUHJvY2Vzc0lkZW50aXR5KCkpCkBAIC0xMTAsMTcgKzEx
MCwxNCBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN0YXJ0TGlzdGVuaW5nRm9ySVBD
KCkKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcmVtb3RlRGlzcGxheUxpc3RzTG9jayB9Owog
ICAgICAgICBtX2NhblJlZ2lzdGVyUmVtb3RlRGlzcGxheUxpc3RzID0gdHJ1ZTsKICAgICB9Ci0K
ICAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoKnRoaXMsIE1l
c3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50NjQoKSk7Ci0gICAgLy8gUmVtb3RlRGlz
cGxheUxpc3RSZWNvcmRlciBtZXNzYWdlcyBkZXBlbmQgb24gUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZCwgYmVjYXVzZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIGNyZWF0ZXMgUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlciBhbmQKLSAgICAvLyBtYWtlcyBhIHJlY2VpdmUgcXVldWUgZm9yIGl0LiBJbiBv
cmRlciB0byBndWFyYW50ZWUgY29ycmVjdCBvcmRlcmluZywgZW5zdXJlIHRoYXQgYWxsIFJlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXIgbWVzc2FnZXMgYXJlIHByb2Nlc3NlZCBpbgotICAgIC8vIHRo
ZSBzYW1lIHNlcXVlbmNlIGFzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgbWVzc2FnZXMuCi0gICAg
bV9zdHJlYW1Db25uZWN0aW9uLT5zdGFydFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1v
dGVEaXNwbGF5TGlzdFJlY29yZGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworICAgIG1fc3Ry
ZWFtQ29ubmVjdGlvbi0+b3BlbigpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OnN0b3BMaXN0ZW5pbmdGb3JJUEMoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5pbnZhbGlkYXRlKCk7CiAKICAgICAvLyBUaGlzIGl0
ZW0gaXMgZGlzcGF0Y2hlZCB0byB0aGUgV29ya1F1ZXVlIGJlZm9yZSBjYWxsaW5nIHN0b3BBbmRX
YWl0Rm9yQ29tcGxldGlvbigpIHN1Y2ggdGhhdCBpdCB3aWxsIHByb2Nlc3MgaXQgbGFzdCwgYWZ0
ZXIgYW55IGV4aXN0aW5nIHdvcmsuCiAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFsmXSB7CkBA
IC0xMzIsNyArMTI5LDYgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdG9wTGlzdGVu
aW5nRm9ySVBDKCkKICAgICBtX3dvcmtRdWV1ZS0+c3RvcEFuZFdhaXRGb3JDb21wbGV0aW9uKCk7
CiAKICAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhNZXNzYWdl
czo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3JlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0KCkpOwotICAgIG1fc3RyZWFtQ29ubmVjdGlv
bi0+c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwogCiAgICAgewogICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9yZW1vdGVEaXNwbGF5TGlzdHNMb2NrIH07CkBAIC0xNDksNyArMTQ1LDcgQEAgdm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkKCk+JiYgdGFz
aykKIAogSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlU2Vu
ZGVyQ29ubmVjdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICZtX2dwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MtPmNvbm5lY3Rpb24oKTsKKyAgICByZXR1cm4gJm1fc3RyZWFtQ29ubmVjdGlvbi0+
Y29ubmVjdGlvbigpOwogfQogCiB1aW50NjRfdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNz
YWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCAy
Mzg4Y2NlZWRlOWNjZmJkOTBhM2JmZTQ4YWY0MjZlN2ZhMDkzZDY3Li42MjIwY2U1ZjE1ZTU3Yjgx
ZmY2ZjZhZGEzNmNiNGQ4MTFjZjFhMjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTc4LDcg
Kzc4LDcgQEAgZW51bSBjbGFzcyBTd2FwQnVmZmVyc0Rpc3BsYXlSZXF1aXJlbWVudCA6IHVpbnQ4
X3Q7CiAKIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgOiBwcml2YXRlIElQQzo6TWVzc2Fn
ZVNlbmRlciwgcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IGNyZWF0ZShHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYm
LCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisgICAgc3RhdGljIFJlZjxSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiwgSVBDOjpBdHRhY2htZW50JiYs
IElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kKCk7CiAgICAgdm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBDKCk7CiAKQEAgLTEw
Niw3ICsxMDYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYm
KTsKKyAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYsIElQQzo6QXR0YWNo
bWVudCYmLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CiAgICAgdm9pZCBzdGFydExp
c3RlbmluZ0ZvcklQQygpOwogCiAgICAgc3RkOjpvcHRpb25hbDxTaGFyZWRNZW1vcnk6OklQQ0hh
bmRsZT4gdXBkYXRlU2hhcmVkTWVtb3J5Rm9yR2V0UGl4ZWxCdWZmZXJIZWxwZXIoc2l6ZV90IGJ5
dGVDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUdQVS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUdQVS5jcHAKaW5kZXggZGY1MjM4NGUzOWIxNDQ2NzhhNWQyNjUyZTdkNmRl
YzU1OTYwZDY4MC4uMWIwNzdiODk0YWJhZDE2ZGY0MDVkZmRhZWU2ZmVmZmRmMDZlMGUyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVH
UFUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlR1BVLmNwcApAQCAtNjAsNiArNjAsNyBAQCBSZW1vdGVHUFU6On5SZW1vdGVHUFUoKSA9IGRl
ZmF1bHQ7CiB2b2lkIFJlbW90ZUdQVTo6aW5pdGlhbGl6ZSgpCiB7CiAgICAgYXNzZXJ0SXNNYWlu
UnVuTG9vcCgpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+b3BlbigpOwogICAgIHdvcmtRdWV1
ZSgpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgcHJvdGVjdGVkVGhpcy0+d29ya1F1ZXVlSW5pdGlhbGl6ZSgpOwogICAgIH0pOwpA
QCAtNjksNiArNzAsNyBAQCB2b2lkIFJlbW90ZUdQVTo6aW5pdGlhbGl6ZSgpCiB2b2lkIFJlbW90
ZUdQVTo6c3RvcExpc3RlbmluZ0ZvcklQQyhSZWY8UmVtb3RlR1BVPiYmIHJlZkZyb21Db25uZWN0
aW9uKQogewogICAgIGFzc2VydElzTWFpblJ1bkxvb3AoKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rp
b24tPmludmFsaWRhdGUoKTsKICAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0b3BSZWNlaXZpbmdN
ZXNzYWdlcyhNZXNzYWdlczo6UmVtb3RlR1BVOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKICAgICB3b3JrUXVldWUoKS5kaXNwYXRjaChbcHJvdGVjdGVk
VGhpcyA9IFdURk1vdmUocmVmRnJvbUNvbm5lY3Rpb24pXSgpIHsKICAgICAgICAgcHJvdGVjdGVk
VGhpcy0+d29ya1F1ZXVlVW5pbml0aWFsaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwCmluZGV4IDU4MmQyNzgxOTk5
MTU3ZmQyMzM0MTk2NzE3YzM4MGRhN2YwMzAzMzEuLmMzMzA0MDFjNTFiOGFkZmI5Yjc1Yjk2NTYz
MTJhMDc3ZmY3MjJkN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01l
c3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwCkBAIC0zOSwxMCArMzksNyBAQCB2b2lkIE1lc3Nh
Z2VSZWNlaXZlUXVldWVNYXA6OmFkZEltcGwoU3RvcmVUeXBlJiYgcXVldWUsIGNvbnN0IFJlY2Vp
dmVyTWF0Y2hlciYgbQogICAgIHVpbnQ4X3QgcmVjZWl2ZXJOYW1lID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oKm1hdGNoZXIucmVjZWl2ZXJOYW1lKTsKICAgICBpZiAoIW1hdGNoZXIuZGVzdGluYXRp
b25JRC5oYXNfdmFsdWUoKSkgewogICAgICAgICBhdXRvIHJlc3VsdCA9IG1fYW55SURRdWV1ZXMu
YWRkKHJlY2VpdmVyTmFtZSwgV1RGTW92ZShxdWV1ZSkpOwotICAgICAgICBpZiAoIXJlc3VsdC5p
c05ld0VudHJ5KSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYW4gYXNz
ZXJ0aW9uLiBTZWUgd2Via2l0Lm9yZy9iLzIzNzY3NCBhbmQgd2Via2l0Lm9yZy9iLzIzODM5MS4K
LSAgICAgICAgICAgIEFMV0FZU19MT0dfV0lUSF9TVFJFQU0oc3RyZWFtIDw8ICJNZXNzYWdlUmVj
ZWl2ZVF1ZXVlTWFwOjphZGRJbXBsIC0gYWRkaW5nIGR1cGxpY2F0ZSBhbnkgaWQgcmVjZWl2ZXIg
IiA8PCBzdGF0aWNfY2FzdDx1aW50OF90PihyZWNlaXZlck5hbWUpKTsKLSAgICAgICAgfQorICAg
ICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIGF1dG8gcmVzdWx0ID0gbV9xdWV1ZXMuYWRkKHN0ZDo6bWFrZV9w
YWlyKHJlY2VpdmVyTmFtZSwgKm1hdGNoZXIuZGVzdGluYXRpb25JRCksIFdURk1vdmUocXVldWUp
KTsKQEAgLTU5LDEwICs1Niw3IEBAIHZvaWQgTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6cmVtb3Zl
KGNvbnN0IFJlY2VpdmVyTWF0Y2hlciYgbWF0Y2hlcikKICAgICB1aW50OF90IHJlY2VpdmVyTmFt
ZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KCptYXRjaGVyLnJlY2VpdmVyTmFtZSk7CiAgICAgaWYg
KCFtYXRjaGVyLmRlc3RpbmF0aW9uSUQuaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgYXV0byByZXN1
bHQgPSBtX2FueUlEUXVldWVzLnJlbW92ZShyZWNlaXZlck5hbWUpOwotICAgICAgICBpZiAocmVz
dWx0KSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYW4gYXNzZXJ0aW9u
LiBTZWUgd2Via2l0Lm9yZy9iLzIzNzY3NCBhbmQgd2Via2l0Lm9yZy9iLzIzODM5MS4KLSAgICAg
ICAgICAgIEFMV0FZU19MT0dfV0lUSF9TVFJFQU0oc3RyZWFtIDw8ICJNZXNzYWdlUmVjZWl2ZVF1
ZXVlTWFwOjphZGRJbXBsIC0gYWRkaW5nIGR1cGxpY2F0ZSBhbnkgaWQgcmVjZWl2ZXIgIiA8PCBz
dGF0aWNfY2FzdDx1aW50OF90PihyZWNlaXZlck5hbWUpKTsKLSAgICAgICAgfQorICAgICAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBhdXRvIHJlc3VsdCA9IG1fcXVldWVzLnJlbW92ZShzdGQ6Om1ha2VfcGFpcihyZWNlaXZlck5h
bWUsICptYXRjaGVyLmRlc3RpbmF0aW9uSUQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggYjEwMWUwMmZkYjVl
NWE0YTU2ODYxZGM3ZWViZjFiYTJhMWNlMmI5OS4uODUwNjRlNTg2ZTc4NTk4YmU1MWRmNmM4ZmVh
NDJkOGMxYWUxNmZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTI4LDkgKzI4LDQ1IEBACiAKIG5hbWVzcGFj
ZSBJUEMgewogCi1TdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0aW9u
KENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemVfdCBzaXplKQotICAgIDogbV9jb25uZWN0aW9u
KGNvbm5lY3Rpb24pCi0gICAgLCBtX2J1ZmZlcihzaXplKQorLy8gRklYTUUoaHR0cDovL3dlYmtp
dC5vcmcvYi8yMzg5ODYpOiBXb3JrYXJvdW5kIGZvciBub3QgYmVpbmcgYWJsZSB0byBkZWxpdmVy
IG1lc3NhZ2VzIGZyb20gdGhlIGRlZGljYXRlZCBjb25uZWN0aW9uIHRvIHRoZSB3b3JrIHF1ZXVl
IHRoZSBjbGllbnQgdXNlcy4KK2NsYXNzIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OkRlZGljYXRl
ZENvbm5lY3Rpb25DbGllbnQgZmluYWwgOiBwdWJsaWMgQ29ubmVjdGlvbjo6Q2xpZW50IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEZWRp
Y2F0ZWRDb25uZWN0aW9uQ2xpZW50KTsKK3B1YmxpYzoKKyAgICBEZWRpY2F0ZWRDb25uZWN0aW9u
Q2xpZW50KE1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgICAgIDogbV9yZWNlaXZlcihy
ZWNlaXZlcikKKyAgICB7CisgICAgfQorICAgIC8vIENvbm5lY3Rpb246OkNsaWVudC4KKyAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRl
Y29kZXIpIGZpbmFsIHsgbV9yZWNlaXZlci5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBk
ZWNvZGVyKTsgfQorICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxFbmNvZGVyPiYgcmVwbHlFbmNv
ZGVyKSBmaW5hbCB7IHJldHVybiBtX3JlY2VpdmVyLmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOyB9CisgICAgdm9pZCBkaWRDbG9zZShDb25u
ZWN0aW9uJikgZmluYWwgeyB9IC8vIENsaWVudCBpcyBleHBlY3RlZCB0byBsaXN0ZW4gdG8gQ29u
bmVjdGlvbjo6ZGlkQ2xvc2UoKSBmcm9tIHRoZSBjb25uZWN0aW9uIGl0IHNlbnQgdG8gdGhlIGRl
ZGljYXRlZCBjb25uZWN0aW9uIHRvLgorICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KENvbm5lY3Rpb24mLCBNZXNzYWdlTmFtZSkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fSAvLyBUaGUgc2VuZGVyIGlzIGV4cGVjdGVkIHRvIGJlIHRydXN0ZWQsIHNvIGFsbCBpbnZhbGlk
IG1lc3NhZ2VzIGFyZSBwcm9ncmFtbWluZyBlcnJvcnMuCitwcml2YXRlOgorICAgIE1lc3NhZ2VS
ZWNlaXZlciYgbV9yZWNlaXZlcjsKK307CisKK1N0cmVhbUNsaWVudENvbm5lY3Rpb246OlN0cmVh
bUNvbm5lY3Rpb25XaXRoRGVkaWNhdGVkQ29ubmVjdGlvbiBTdHJlYW1DbGllbnRDb25uZWN0aW9u
OjpjcmVhdGVXaXRoRGVkaWNhdGVkQ29ubmVjdGlvbihNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVy
LCBzaXplX3QgYnVmZmVyU2l6ZSkKK3sKKyAgICBhdXRvIGNvbm5lY3Rpb25JZGVudGlmaWVycyA9
IENvbm5lY3Rpb246OmNyZWF0ZUNvbm5lY3Rpb25JZGVudGlmaWVyUGFpcigpOworICAgIC8vIENy
ZWF0ZSBTdHJlYW1DbGllbnRDb25uZWN0aW9uIHdpdGggInNlcnZlciIgdHlwZSBDb25uZWN0aW9u
LiBUaGUgY2FsbGVyIHdpbGwgc2VuZCB0aGUgImNsaWVudCIgdHlwZSBjb25uZWN0aW9uIGlkZW50
aWZpZXIgdmlhCisgICAgLy8gSVBDIHRvIHRoZSBvdGhlciBzaWRlLCB3aGVyZSBTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uIHdpbGwgYmUgY3JlYXRlZCB3aXRoICJjbGllbnQiIHR5cGUgQ29ubmVjdGlv
bi4KKyAgICAvLyBGb3IgQ29ubmVjdGlvbiwgInNlcnZlciIgbWVhbnMgdGhlIGNvbm5lY3Rpb24g
d2hpY2ggd2FzIGNyZWF0ZWQgZmlyc3QsIHRoZSBjb25uZWN0aW9uIHdoaWNoIGlzIG5vdCBzZW50
IHRocm91Z2ggSVBDIHRvIG90aGVyIHBhcnR5LgorICAgIC8vIEZvciBDb25uZWN0aW9uLCAiY2xp
ZW50IiBtZWFucyB0aGUgY29ubmVjdGlvbiB3aGljaCB3YXMgZXN0YWJsaXNoZWQgYnkgcmVjZWl2
aW5nIGl0IHRocm91Z2ggSVBDIGFuZCBjcmVhdGluZyBJUEM6OkNvbm5lY3Rpb24gb3V0IGZyb20g
dGhlIGlkZW50aWZpZXIuCisgICAgLy8gVGhlICJDbGllbnQiIGluIFN0cmVhbUNsaWVudENvbm5l
Y3Rpb24gbWVhbnMgdGhlIHBhcnR5IHRoYXQgbW9zdGx5IGRvZXMgc2VuZGluZywgZS5nLiB1bnRy
dXN0ZWQgcGFydHkuCisgICAgLy8gVGhlICJTZXJ2ZXIiIGluIFN0cmVhbVNlcnZlckNvbm5lY3Rp
b24gbWVhbnMgdGhlIHBhcnR5IHRoYXQgbW9zdGx5IGRvZXMgcmVjZWl2aW5nLCBlLmcuIHRoZSB0
cnVzdGVkIHBhcnR5IHdoaWNoIGhvbGRzIHRoZSBkZXN0aW5hdGlvbiBvYmplY3QgdG8gY29tbXVu
aWNhdGUgd2l0aC4KKyAgICBhdXRvIGRlZGljYXRlZENvbm5lY3Rpb25DbGllbnQgPSBtYWtlVW5p
cXVlPERlZGljYXRlZENvbm5lY3Rpb25DbGllbnQ+KHJlY2VpdmVyKTsKKyAgICBhdXRvIGRlZGlj
YXRlZENvbm5lY3Rpb24gPSBDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKGNvbm5l
Y3Rpb25JZGVudGlmaWVycy0+c2VydmVyLCAqZGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudCk7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFN0cmVhbUNsaWVudENvbm5lY3Rpb24+IHN0cmVhbUNvbm5lY3Rp
b24geyBuZXcgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbihXVEZNb3ZlKGRlZGljYXRlZENvbm5lY3Rp
b24pLCBidWZmZXJTaXplLCBXVEZNb3ZlKGRlZGljYXRlZENvbm5lY3Rpb25DbGllbnQpKSB9Owor
ICAgIC8vIEZJWE1FKGh0dHA6Ly93ZWJraXQub3JnL2IyMzg5NDQpOiBNYWtlIElQQzo6QXR0YWNo
bWVudCByZWFsbHkgbW92YWJsZSBvbiBPUyhEQVJXSU4pLgorICAgIHJldHVybiB7IFdURk1vdmUo
c3RyZWFtQ29ubmVjdGlvbiksIFdURk1vdmUoY29ubmVjdGlvbklkZW50aWZpZXJzLT5jbGllbnQp
IH07CisjCit9CisKK1N0cmVhbUNsaWVudENvbm5lY3Rpb246OlN0cmVhbUNsaWVudENvbm5lY3Rp
b24oUmVmPENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgc2l6ZV90IGJ1ZmZlclNpemUsIHN0ZDo6
dW5pcXVlX3B0cjxEZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50PiYmIGRlZGljYXRlZENvbm5lY3Rp
b25DbGllbnQpCisgICAgOiBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKKyAgICAs
IG1fZGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudChXVEZNb3ZlKGRlZGljYXRlZENvbm5lY3Rpb25D
bGllbnQpKQorICAgICwgbV9idWZmZXIoYnVmZmVyU2l6ZSkKIHsKICAgICAvLyBSZWFkIHN0YXJ0
cyBmcm9tIDAgd2l0aCBsaW1pdCBvZiAwIGFuZCByZWFkZXIgc2xlZXBpbmcuCiAgICAgc2hhcmVk
Q2xpZW50T2Zmc2V0KCkuc3RvcmUoQ2xpZW50T2Zmc2V0OjpzZXJ2ZXJJc1NsZWVwaW5nVGFnLCBz
dGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKQEAgLTM4LDYgKzc0LDI4IEBAIFN0cmVhbUNsaWVu
dENvbm5lY3Rpb246OlN0cmVhbUNsaWVudENvbm5lY3Rpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlv
biwgc2l6ZV90IHNpCiAgICAgc2hhcmVkQ2xpZW50TGltaXQoKS5zdG9yZShzdGF0aWNfY2FzdDxD
bGllbnRMaW1pdD4oMCksIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwogfQogCitTdHJlYW1D
bGllbnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIHNpemVfdCBidWZmZXJTaXplKQorICAgIDogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbihS
ZWYgeyBjb25uZWN0aW9uIH0sIGJ1ZmZlclNpemUsIHsgfSkKK3sKK30KKworU3RyZWFtQ2xpZW50
Q29ubmVjdGlvbjo6flN0cmVhbUNsaWVudENvbm5lY3Rpb24oKQoreworICAgIEFTU0VSVCghbV9k
ZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50IHx8ICFtX2Nvbm5lY3Rpb24tPmlzVmFsaWQoKSk7Cit9
CisKK3ZvaWQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6b3BlbigpCit7CisgICAgaWYgKG1fZGVk
aWNhdGVkQ29ubmVjdGlvbkNsaWVudCkKKyAgICAgICAgbV9jb25uZWN0aW9uLT5vcGVuKCk7Cit9
CisKK3ZvaWQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6aW52YWxpZGF0ZSgpCit7CisgICAgaWYg
KG1fZGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudCkKKyAgICAgICAgbV9jb25uZWN0aW9uLT5pbnZh
bGlkYXRlKCk7Cit9CisKIHZvaWQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2V0V2FrZVVwU2Vt
YXBob3JlKElQQzo6U2VtYXBob3JlJiYgc2VtYXBob3JlKQogewogICAgIG1fd2FrZVVwU2VtYXBo
b3JlID0gV1RGTW92ZShzZW1hcGhvcmUpOwpAQCAtODMsNCArMTQxLDkgQEAgU3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlciYgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6YnVmZmVyRm9yVGVzdGluZygpCiAg
ICAgcmV0dXJuIG1fYnVmZmVyOwogfQogCitDb25uZWN0aW9uJiBTdHJlYW1DbGllbnRDb25uZWN0
aW9uOjpjb25uZWN0aW9uRm9yVGVzdGluZygpCit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlvbi5n
ZXQoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IDJiNDdlMjVlY2JjMTE4MjQ5MWQyZGZkZTcyODBkN2Jj
MzA1MTFlNzQuLjRlNDIwZDRmZjYxNWI1NzBlZTBiNTIyNjkyODliMzQ2ODAxZjc3ZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9u
LmgKQEAgLTU3LDggKzU3LDMxIEBAIGNsYXNzIFN0cmVhbUNsaWVudENvbm5lY3Rpb24gZmluYWwg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFN0cmVhbUNsaWVudENvbm5lY3Rpb24pOwogcHVibGljOgorICAgIC8vIENyZWF0ZXMgU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbiB3aGVyZSB0aGUgb3V0IG9mIHN0cmVhbSBtZXNzYWdlcyBhbmQgc2Vy
dmVyIHJlcGxpZXMgYXJlCisgICAgLy8gc2VudCB0aHJvdWdoIHRoZSBwYXNzZWQgSVBDOjpDb25u
ZWN0aW9uLiBUaGUgbWVzc2FnZXMgZnJvbSB0aGUgc2VydmVyIGFyZSBkZWxpdmVyZWQgdG8KKyAg
ICAvLyB0aGUgY2FsbGVyIHRocm91Z2ggdGhlIHBhc3NlZCBJUEM6OkNvbm5lY3Rpb24uCisgICAg
Ly8gTm90ZTogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdXNlZCBvbmx5IGluIGNhc2VzIHdoZXJl
IHRoZQorICAgIC8vIHN0cmVhbSBzZXJ2ZXIgc3RhcnRzIGxpc3RlbmluZyB0byBtZXNzYWdlcyB3
aXRoIG5ldyBpZGVudGlmaWVycyBvbiB0aGUgc2FtZSB0aHJlYWQgYXMKKyAgICAvLyBpbiB3aGlj
aCB0aGUgc2VydmVyIElQQzo6Q29ubmVjdGlvbiBkaXNwYXRjaCBtZXNzYWdlcy4gQXQgdGhlIHRp
bWUgb2Ygd3JpdGluZywKKyAgICAvLyBJUEM6OkNvbm5lY3Rpb24gZGlzcGF0Y2hlcyBtZXNzYWdl
cyBvbmx5IGluIG1haW4gdGhyZWFkLgogICAgIFN0cmVhbUNsaWVudENvbm5lY3Rpb24oQ29ubmVj
dGlvbiYsIHNpemVfdCBidWZmZXJTaXplKTsKIAorICAgIHN0cnVjdCBTdHJlYW1Db25uZWN0aW9u
V2l0aERlZGljYXRlZENvbm5lY3Rpb24geworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RyZWFt
Q2xpZW50Q29ubmVjdGlvbj4gc3RyZWFtQ29ubmVjdGlvbjsKKyAgICAgICAgQXR0YWNobWVudCBj
b25uZWN0aW9uSWRlbnRpZmllcjsKKyAgICAgICAgLy8gRklYTUU6IE9uY2UgSVBDIGNhbiB0cmVh
dCBoYW5kbGVzIGFzIGZpcnN0IGNsYXNzIG9iamVjdHMsIGFkZCBzdHJlYW0gYnVmZmVyIGFzCisg
ICAgICAgIC8vIGEgaGFuZGxlIGhlcmUuCisgICAgfTsKKworICAgIC8vIENyZWF0ZXMgU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbiB3aGVyZSB0aGUgb3V0IG9mIHN0cmVhbSBtZXNzYWdlcyBhbmQgc2Vy
dmVyIHJlcGxpZXMgYXJlCisgICAgLy8gc2VudCB0aHJvdWdoIGEgZGVkaWRjYXRlZCwgbmV3IElQ
Qzo6Q29ubmVjdGlvbi4gVGhlIG1lc3NhZ2VzIGZyb20gdGhlIHNlcnZlciBhcmUgZGVsaXZlcmVk
IHRvCisgICAgLy8gdGhlIGNhbGxlciB0aHJvdWdoIHRoZSBwYXNzZWQgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIuCisgICAgLy8gVGhlIGNhbGxlciBzaG91bGQgc2VuZCBTdHJlYW1Db25uZWN0aW9uV2l0
aERlZGljYXRlZENvbm5lY3Rpb246OmNvbm5lY3Rpb25JZGVudGlmaWVyIGFuZAorICAgIC8vIFN0
cmVhbUNsaWVudENvbm5lY3Rpb246OnN0cmVhbUJ1ZmZlcigpIHRvIHRoZSBzZXJ2ZXIgdmlhIGFu
IGV4aXN0aW5nIElQQzo6Q29ubmVjdGlvbi4KKyAgICBzdGF0aWMgU3RyZWFtQ29ubmVjdGlvbldp
dGhEZWRpY2F0ZWRDb25uZWN0aW9uIGNyZWF0ZVdpdGhEZWRpY2F0ZWRDb25uZWN0aW9uKE1lc3Nh
Z2VSZWNlaXZlciYsIHNpemVfdCBidWZmZXJTaXplKTsKKworICAgIH5TdHJlYW1DbGllbnRDb25u
ZWN0aW9uKCk7CisKICAgICBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiBzdHJlYW1CdWZmZXIoKSB7
IHJldHVybiBtX2J1ZmZlcjsgfQogICAgIHZvaWQgc2V0V2FrZVVwU2VtYXBob3JlKElQQzo6U2Vt
YXBob3JlJiYpOwogICAgIGJvb2wgaGFzV2FrZVVwU2VtYXBob3JlKCkgY29uc3QgeyByZXR1cm4g
bV93YWtlVXBTZW1hcGhvcmUuaGFzX3ZhbHVlKCk7IH0KQEAgLTcwLDYgKzkzLDkgQEAgcHVibGlj
OgogICAgIH0KICAgICB2b2lkIHNlbmREZWZlcnJlZFdha2VVcE1lc3NhZ2VJZk5lZWRlZCgpOwog
CisgICAgdm9pZCBvcGVuKCk7CisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBib29sIHNlbmQoVCYmIG1lc3NhZ2UsIE9iamVjdElk
ZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgVGltZW91dCk7CiAKICAgICB1c2luZyBTZW5kU3lu
Y1Jlc3VsdCA9IENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0OwpAQCAtODAsOSArMTA2LDExIEBA
IHB1YmxpYzoKICAgICBib29sIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5KE9iamVjdElk
ZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgVGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRp
b24+ID0geyB9KTsKIAogICAgIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImIGJ1ZmZlckZvclRlc3Rp
bmcoKTsKKyAgICBDb25uZWN0aW9uJiBjb25uZWN0aW9uRm9yVGVzdGluZygpOwogCiBwcml2YXRl
OgotICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OkpTSVBDU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbjsKKyAgICBjbGFzcyBEZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50OworICAg
IFN0cmVhbUNsaWVudENvbm5lY3Rpb24oUmVmPENvbm5lY3Rpb24+JiYsIHNpemVfdCBidWZmZXJT
aXplLCBzdGQ6OnVuaXF1ZV9wdHI8RGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudD4mJik7CiAKICAg
ICBzdHJ1Y3QgU3BhbiB7CiAgICAgICAgIHVpbnQ4X3QqIGRhdGE7CkBAIC0xMjIsMTQgKzE1MCwx
NiBAQCBwcml2YXRlOgogICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ci5kYXRhKCk7IH0KICAgICBzaXplX3QgZGF0YVNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ci5kYXRhU2l6ZSgpOyB9CiAKLSAgICBDb25uZWN0aW9uJiBtX2Nvbm5lY3Rpb247CisgICAgUmVm
PENvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVkaWNhdGVk
Q29ubmVjdGlvbkNsaWVudD4gbV9kZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50OwogICAgIHVpbnQ2
NF90IG1fY3VycmVudERlc3RpbmF0aW9uSUQgeyAwIH07Ci0KICAgICBzaXplX3QgbV9jbGllbnRP
ZmZzZXQgeyAwIH07CiAgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciBtX2J1ZmZlcjsKICAgICBz
dGQ6Om9wdGlvbmFsPFNlbWFwaG9yZT4gbV93YWtlVXBTZW1hcGhvcmU7CiAgICAgdW5zaWduZWQg
bV9yZW1haW5pbmdNZXNzYWdlQ291bnRCZWZvcmVTZW5kaW5nV2FrZVVwIHsgMCB9OwogICAgIHVu
c2lnbmVkIG1fd2FrZVVwTWVzc2FnZUh5c3RlcmVzaXMgeyAwIH07CisKKyAgICBmcmllbmQgY2xh
c3MgV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU0lQQ1N0cmVhbUNsaWVudENvbm5lY3Rpb247CiB9
OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgpAQCAtMTQ2LDcgKzE3Niw3IEBA
IGJvb2wgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZChUJiYgbWVzc2FnZSwgT2JqZWN0SWRl
bnRpZmllcjxVPiBkZXN0aW5hdGlvbklECiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAgICAgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoV1RGTW92ZSgqc3BhbikpOwotICAg
IGlmICghbV9jb25uZWN0aW9uLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgZGVzdGluYXRpb25JRCwg
SVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVw
bHkpKQorICAgIGlmICghbV9jb25uZWN0aW9uLT5zZW5kKFdURk1vdmUobWVzc2FnZSksIGRlc3Rp
bmF0aW9uSUQsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5n
Rm9yU3luY1JlcGx5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwog
fQpAQCAtMTgxLDEzICsyMTEsMTMgQEAgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U2VuZFN5bmNS
ZXN1bHQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3MKICAgICAgICAg
ICAgIHJldHVybiBXVEZNb3ZlKCptYXliZVNlbmRSZXN1bHQpOwogICAgIH0KICAgICBzZW5kUHJv
Y2Vzc091dE9mU3RyZWFtTWVzc2FnZShXVEZNb3ZlKCpzcGFuKSk7Ci0gICAgcmV0dXJuIG1fY29u
bmVjdGlvbi5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGlu
YXRpb25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0KTsKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLT5z
ZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRC50
b1VJbnQ2NCgpLCB0aW1lb3V0KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VT4KIGJvb2wgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6d2FpdEZvckFuZERpc3BhdGNoSW1tZWRp
YXRlbHkoT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBUaW1lb3V0IHRpbWVvdXQs
IE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9ucykKIHsKLSAgICByZXR1cm4g
bV9jb25uZWN0aW9uLndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PFQ+KGRlc3RpbmF0aW9u
SUQsIHRpbWVvdXQsIHdhaXRGb3JPcHRpb25zKTsKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLT53
YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxUPihkZXN0aW5hdGlvbklELCB0aW1lb3V0LCB3
YWl0Rm9yT3B0aW9ucyk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0xOTUsOCArMjI1
LDggQEAgc3RkOjpvcHRpb25hbDxTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3Vs
dD4gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6dHIKIHsKICAgICAvLyBJbiB0aGlzIGZ1bmN0aW9u
LCBTZW5kU3luY1Jlc3VsdCB7IH0gbWVhbnMgZXJyb3IgaGFwcGVuZWQgYW5kIGNhbGxlciBzaG91
bGQgc3RvcCBwcm9jZXNzaW5nLgogICAgIC8vIHN0ZDo6bnVsbG9wdCBtZWFucyB3ZSBjb3VsZG4n
dCBzZW5kIHRocm91Z2ggdGhlIHN0cmVhbSwgc28gdHJ5IHNlbmRpbmcgb3V0IG9mIHN0cmVhbS4K
LSAgICBhdXRvIHN5bmNSZXF1ZXN0SUQgPSBtX2Nvbm5lY3Rpb24ubWFrZVN5bmNSZXF1ZXN0SUQo
KTsKLSAgICBpZiAoIW1fY29ubmVjdGlvbi5wdXNoUGVuZGluZ1N5bmNSZXF1ZXN0SUQoc3luY1Jl
cXVlc3RJRCkpCisgICAgYXV0byBzeW5jUmVxdWVzdElEID0gbV9jb25uZWN0aW9uLT5tYWtlU3lu
Y1JlcXVlc3RJRCgpOworICAgIGlmICghbV9jb25uZWN0aW9uLT5wdXNoUGVuZGluZ1N5bmNSZXF1
ZXN0SUQoc3luY1JlcXVlc3RJRCkpCiAgICAgICAgIHJldHVybiBTZW5kU3luY1Jlc3VsdCB7IH07
CiAKICAgICBhdXRvIHJlc3VsdCA9IFsmXSgpIC0+IHN0ZDo6b3B0aW9uYWw8U2VuZFN5bmNSZXN1
bHQ+IHsKQEAgLTIyMCw5ICsyNTAsOSBAQCBzdGQ6Om9wdGlvbmFsPFN0cmVhbUNsaWVudENvbm5l
Y3Rpb246OlNlbmRTeW5jUmVzdWx0PiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cgogICAgICAg
ICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fY2xpZW50T2Zmc2V0ID0gMDsK
LSAgICAgICAgcmV0dXJuIG1fY29ubmVjdGlvbi53YWl0Rm9yU3luY1JlcGx5KHN5bmNSZXF1ZXN0
SUQsIFQ6Om5hbWUoKSwgdGltZW91dCwgeyB9KTsKKyAgICAgICAgcmV0dXJuIG1fY29ubmVjdGlv
bi0+d2FpdEZvclN5bmNSZXBseShzeW5jUmVxdWVzdElELCBUOjpuYW1lKCksIHRpbWVvdXQsIHsg
fSk7CiAgICAgfSgpOwotICAgIG1fY29ubmVjdGlvbi5wb3BQZW5kaW5nU3luY1JlcXVlc3RJRChz
eW5jUmVxdWVzdElEKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnBvcFBlbmRpbmdTeW5jUmVxdWVzdElE
KHN5bmNSZXF1ZXN0SUQpOwogICAgIGlmIChyZXN1bHQgJiYgKnJlc3VsdCkgewogICAgICAgICBh
dXRvJiBkZWNvZGVyID0gKipyZXN1bHQ7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dHlwZW5hbWUg
VDo6UmVwbHlBcmd1bWVudHM+IHJlcGx5QXJndW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCAwNTQ2Mzcy
YmZhOTJhMzFhZGZmZTg2OGQxMDI5NDIyY2UxOTkwNTZhLi5iYTVjZjc0ZmYxNGNiMDhmNWZjM2Fi
NjFhNjM3YTA3NjVlOWNjNzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMjgsMTQgKzI4LDgxIEBACiAKICNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZS5oIgotCisjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiBuYW1lc3BhY2UgSVBDIHsKK25hbWVzcGFjZSB7CisvLyBGSVhNRShodHRwOi8vd2Via2l0Lm9y
Zy9iLzIzODk4Nik6IFdvcmthcm91bmQgZm9yIG5vdCBiZWluZyBhYmxlIHRvIGRlbGl2ZXIgbWVz
c2FnZXMgZnJvbSB0aGUgZGVkaWNhdGVkIGNvbm5lY3Rpb24gdG8gdGhlIHdvcmsgcXVldWUgdGhl
IGNsaWVudCB1c2VzLgorY2xhc3MgRGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudCBmaW5hbCA6IHB1
YmxpYyBDb25uZWN0aW9uOjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERlZGljYXRlZENvbm5lY3Rpb25DbGllbnQpOworcHVi
bGljOgorICAgIERlZGljYXRlZENvbm5lY3Rpb25DbGllbnQoKSA9IGRlZmF1bHQ7CisgICAgLy8g
Q29ubmVjdGlvbjo6Q2xpZW50LgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29ubmVjdGlv
biYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlcikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQorICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIERlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxFbmNvZGVyPiYgcmVwbHlFbmNvZGVy
KSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lk
IGRpZENsb3NlKENvbm5lY3Rpb24mKSBmaW5hbCB7IH0gLy8gQ2xpZW50IGlzIGV4cGVjdGVkIHRv
IGxpc3RlbiB0byBDb25uZWN0aW9uOjpkaWRDbG9zZSgpIGZyb20gdGhlIGNvbm5lY3Rpb24gaXQg
c2VudCB0byB0aGUgZGVkaWNhdGVkIGNvbm5lY3Rpb24gdG8uCisgICAgdm9pZCBkaWRSZWNlaXZl
SW52YWxpZE1lc3NhZ2UoQ29ubmVjdGlvbiYsIE1lc3NhZ2VOYW1lKSBmaW5hbCB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9IC8vIFRoZSBzZW5kZXIgaXMgZXhwZWN0ZWQgdG8gYmUgdHJ1c3RlZCwg
c28gYWxsIGludmFsaWQgbWVzc2FnZXMgYXJlIHByb2dyYW1taW5nIGVycm9ycy4KK3ByaXZhdGU6
Cit9OworCit9CisKK1JlZjxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiBTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uOjpjcmVhdGUoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlciYmIHN0cmVhbUJ1ZmZlciwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYgd29ya1F1ZXVl
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmVhbVNlcnZlckNvbm5lY3Rpb24oUmVm
IHsgY29ubmVjdGlvbiB9LCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlciksIHdvcmtRdWV1ZSwgSGFzRGVk
aWNhdGVkQ29ubmVjdGlvbjo6Tm8pKTsKK30KKworUmVmPFN0cmVhbVNlcnZlckNvbm5lY3Rpb24+
IFN0cmVhbVNlcnZlckNvbm5lY3Rpb246OmNyZWF0ZVdpdGhEZWRpY2F0ZWRDb25uZWN0aW9uKEF0
dGFjaG1lbnQmJiBjb25uZWN0aW9uSWRlbnRpZmllciwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYm
IHN0cmVhbUJ1ZmZlciwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYgd29ya1F1ZXVlKQorewor
I2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQorICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
ZmllciBjb25uZWN0aW9uSGFuZGxlIHsgY29ubmVjdGlvbklkZW50aWZpZXIucmVsZWFzZSgpLnJl
bGVhc2UoKSB9OworI2VsaWYgT1MoREFSV0lOKQorICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
ZmllciBjb25uZWN0aW9uSGFuZGxlIHsgY29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpIH07Cisj
ZWxpZiBPUyhXSU5ET1dTKQorICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0
aW9uSGFuZGxlIHsgY29ubmVjdGlvbklkZW50aWZpZXIuaGFuZGxlKCkgfTsKKyNlbHNlCisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVj
dGlvbkhhbmRsZSB7IH07CisjZW5kaWYKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPERl
ZGljYXRlZENvbm5lY3Rpb25DbGllbnQ+IHNfZGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudDsKKyAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgc19vbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShz
X29uY2VGbGFnLCBbXSB7CisgICAgICAgIHNfZGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudC5jb25z
dHJ1Y3QoKTsKKyAgICB9KTsKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBJUEM6OkNvbm5lY3Rpb246
OmNyZWF0ZUNsaWVudENvbm5lY3Rpb24oY29ubmVjdGlvbkhhbmRsZSwgc19kZWRpY2F0ZWRDb25u
ZWN0aW9uQ2xpZW50LmdldCgpKTsKKyAgICBhdXRvIHN0cmVhbUNvbm5lY3Rpb24gPSBhZG9wdFJl
ZigqbmV3IFN0cmVhbVNlcnZlckNvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSwgV1RGTW92
ZShzdHJlYW1CdWZmZXIpLCB3b3JrUXVldWUsIEhhc0RlZGljYXRlZENvbm5lY3Rpb246Olllcykp
OworICAgIHJldHVybiBzdHJlYW1Db25uZWN0aW9uOworfQogCi1TdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0cmVh
bUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0sIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmIHdv
cmtRdWV1ZSkKLSAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQorU3RyZWFtU2VydmVyQ29u
bmVjdGlvbjo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbihSZWY8Q29ubmVjdGlvbj4mJiBjb25uZWN0
aW9uLCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtLCBTdHJlYW1Db25uZWN0aW9uV29y
a1F1ZXVlJiB3b3JrUXVldWUsIEhhc0RlZGljYXRlZENvbm5lY3Rpb24gaGFzRGVkaWNhdGVkQ29u
bmVjdGlvbikKKyAgICA6IG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQogICAgICwg
bV93b3JrUXVldWUod29ya1F1ZXVlKQogICAgICwgbV9idWZmZXIoV1RGTW92ZShzdHJlYW0pKQor
ICAgICwgbV9oYXNEZWRpY2F0ZWRDb25uZWN0aW9uKGhhc0RlZGljYXRlZENvbm5lY3Rpb24gPT0g
SGFzRGVkaWNhdGVkQ29ubmVjdGlvbjo6WWVzKQoreworfQorCitTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uOjp+U3RyZWFtU2VydmVyQ29ubmVjdGlvbigpCiB7CisgICAgQVNTRVJUKCFtX2hhc0RlZGlj
YXRlZENvbm5lY3Rpb24gfHwgIW1fY29ubmVjdGlvbi0+aXNWYWxpZCgpKTsKK30KKwordm9pZCBT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uOjpvcGVuKCkKK3sKKyAgICBpZiAobV9oYXNEZWRpY2F0ZWRD
b25uZWN0aW9uKSB7CisgICAgICAgIC8vIEZJWE1FKGh0dHA6Ly93ZWJraXQub3JnL2IvMjM4OTg2
KTogV29ya2Fyb3VuZCBmb3Igbm90IGJlaW5nIGFibGUgdG8gZGVsaXZlciBtZXNzYWdlcyBmcm9t
IHRoZSBkZWRpY2F0ZWQgY29ubmVjdGlvbiB0byB0aGUgd29yayBxdWV1ZSB0aGUgY2xpZW50IHVz
ZXMuCisgICAgICAgIG1fY29ubmVjdGlvbi0+YWRkTWVzc2FnZVJlY2VpdmVRdWV1ZSgqdGhpcywg
eyB9KTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5vcGVuKCk7CisgICAgfQorfQorCit2b2lkIFN0
cmVhbVNlcnZlckNvbm5lY3Rpb246OmludmFsaWRhdGUoKQoreworICAgIGlmIChtX2hhc0RlZGlj
YXRlZENvbm5lY3Rpb24pIHsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZVF1ZXVlKHsgfSk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOworICAg
IH0KIH0KIAogdm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOjpzdGFydFJlY2VpdmluZ01lc3Nh
Z2VzKFN0cmVhbU1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIsIFJlY2VpdmVyTmFtZSByZWNlaXZl
ck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCkBAIC00NywzMCArMTE0LDE1IEBAIHZvaWQg
U3RyZWFtU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyhTdHJlYW1NZXNz
YWdlUmVjZWl2ZXImIHJlY2VpCiAgICAgICAgIG1fcmVjZWl2ZXJzLmFkZChrZXksIHJlY2VpdmVy
KTsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogQ2FuIHdlIGF2b2lkIHN5bmNocm9ub3VzIGRpc3Bh
dGNoIGhlcmUgYnkgYWRqdXN0aW5nIHRoZSBhc3NlcnRpb24gaW4gYENvbm5lY3Rpb246OmVucXVl
dWVNYXRjaGluZ01lc3NhZ2VzVG9NZXNzYWdlUmVjZWl2ZVF1ZXVlYD8KLSAgICBjYWxsT25NYWlu
UnVuTG9vcEFuZFdhaXQoWyZdIHsKKyAgICBpZiAoIW1faGFzRGVkaWNhdGVkQ29ubmVjdGlvbikK
ICAgICAgICAgbV9jb25uZWN0aW9uLT5hZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKCp0aGlzLCB7IHJl
Y2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCB9KTsKLSAgICB9KTsKICAgICBtX3dvcmtRdWV1ZS5h
ZGRTdHJlYW1Db25uZWN0aW9uKCp0aGlzKTsKIH0KIAotdm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uOjpzdGFydFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUpCi17
Ci0gICAgY2FsbE9uTWFpblJ1bkxvb3BBbmRXYWl0KFsmXSB7Ci0gICAgICAgIG1fY29ubmVjdGlv
bi0+YWRkTWVzc2FnZVJlY2VpdmVRdWV1ZSgqdGhpcywgeyByZWNlaXZlck5hbWUgfSk7Ci0gICAg
fSk7Ci0gICAgbV93b3JrUXVldWUuYWRkU3RyZWFtQ29ubmVjdGlvbigqdGhpcyk7Ci19Ci0KLXZv
aWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjo6c3RvcFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVy
TmFtZSByZWNlaXZlck5hbWUpCi17Ci0gICAgbV9jb25uZWN0aW9uLT5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZVF1ZXVlKHsgcmVjZWl2ZXJOYW1lIH0pOwotICAgIG1fd29ya1F1ZXVlLnJlbW92ZVN0cmVh
bUNvbm5lY3Rpb24oKnRoaXMpOwotfQotCiB2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb246OnN0
b3BSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklEKQogewotICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVR
dWV1ZSh7IHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCB9KTsKKyAgICBpZiAoIW1faGFzRGVk
aWNhdGVkQ29ubmVjdGlvbikKKyAgICAgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZVF1ZXVlKHsgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEIH0pOwogICAgIG1fd29ya1F1
ZXVlLnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24oKnRoaXMpOwogCiAgICAgYXV0byBrZXkgPSBzdGQ6
Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihyZWNlaXZlck5hbWUpLCBkZXN0aW5hdGlv
bklEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZl
ckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNv
bm5lY3Rpb24uaAppbmRleCBhYmVmNGVjZmUzZTkzNzhjMTdmYWJlMzRkM2MyNDgzZDE0MDc0N2Jk
Li43MTM1ZDQ2M2EzZjEyNGM3YjEwYWViMzRkOWM3OGRiODBlYTY0NGZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oCkBAIC01
MywxOSArNTMsMjUgQEAgY2xhc3MgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTsKIGNsYXNzIFN0
cmVhbVNlcnZlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4sIHByaXZhdGUgTWVzc2FnZVJlY2VpdmVRdWV1ZSB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3RyZWFtU2VydmVyQ29ubmVjdGlvbik7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiBjcmVhdGUoQ29ubmVjdGlv
biYgY29ubmVjdGlvbiwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbUJ1ZmZlciwgU3Ry
ZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYgd29ya1F1ZXVlKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3RyZWFtU2VydmVyQ29ubmVjdGlvbihjb25uZWN0aW9uLCBXVEZNb3Zl
KHN0cmVhbUJ1ZmZlciksIHdvcmtRdWV1ZSkpOwotICAgIH0KLSAgICB+U3RyZWFtU2VydmVyQ29u
bmVjdGlvbigpIGZpbmFsID0gZGVmYXVsdDsKKyAgICAvLyBDcmVhdGVzIFN0cmVhbUNsaWVudENv
bm5lY3Rpb24gd2hlcmUgdGhlIG91dCBvZiBzdHJlYW0gbWVzc2FnZXMgYW5kIHNlcnZlciByZXBs
aWVzIGFyZQorICAgIC8vIHJlY2VpdmVkIHRocm91Z2ggdGhlIHBhc3NlZCBJUEM6OkNvbm5lY3Rp
b24uIFRoZSBtZXNzYWdlcyBmcm9tIHRoZSBzZXJ2ZXIgYXJlIHNlbnQgdG8KKyAgICAvLyB0aGUg
cGFzc2VkIElQQzo6Q29ubmVjdGlvbi4KKyAgICAvLyBOb3RlOiBUaGlzIGZ1bmN0aW9uIHNob3Vs
ZCBiZSB1c2VkIG9ubHkgaW4gY2FzZXMgd2hlcmUgdGhlCisgICAgLy8gc3RyZWFtIHNlcnZlciBz
dGFydHMgbGlzdGVuaW5nIHRvIG1lc3NhZ2VzIHdpdGggbmV3IGlkZW50aWZpZXJzIG9uIHRoZSBz
YW1lIHRocmVhZCBhcworICAgIC8vIGluIHdoaWNoIHRoZSBzZXJ2ZXIgSVBDOjpDb25uZWN0aW9u
IGRpc3BhdGNoIG1lc3NhZ2VzLiBBdCB0aGUgdGltZSBvZiB3cml0aW5nLAorICAgIC8vIElQQzo6
Q29ubmVjdGlvbiBkaXNwYXRjaGVzIG1lc3NhZ2VzIG9ubHkgaW4gbWFpbiB0aHJlYWQuCisgICAg
c3RhdGljIFJlZjxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiBjcmVhdGUoQ29ubmVjdGlvbiYsIFN0
cmVhbUNvbm5lY3Rpb25CdWZmZXImJiwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYpOworCisg
ICAgLy8gQ3JlYXRlcyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHdoZXJlIHRoZSBvdXQgb2Ygc3Ry
ZWFtIG1lc3NhZ2VzIGFuZCBzZXJ2ZXIgcmVwbGllcyBhcmUKKyAgICAvLyByZWNlaXZlZCB0aHJv
dWdoIGEgZGVkaWRjYXRlZCwgbmV3IElQQzo6Q29ubmVjdGlvbi4gVGhlIG1lc3NhZ2VzIGZyb20g
dGhlIHNlcnZlciBhcmUgc2VudCB0bworICAgIC8vIHRoZSBkZWRpY2F0ZWQgY29ubmVjaXRvbi4K
KyAgICBzdGF0aWMgUmVmPFN0cmVhbVNlcnZlckNvbm5lY3Rpb24+IGNyZWF0ZVdpdGhEZWRpY2F0
ZWRDb25uZWN0aW9uKEF0dGFjaG1lbnQmJiBjb25uZWN0aW9uSWRlbnRpZmllciwgU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlciYmLCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJik7CisgICAgflN0cmVh
bVNlcnZlckNvbm5lY3Rpb24oKSBmaW5hbDsKIAogICAgIHZvaWQgc3RhcnRSZWNlaXZpbmdNZXNz
YWdlcyhTdHJlYW1NZXNzYWdlUmVjZWl2ZXImLCBSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQpOwogICAgIC8vIFN0b3BzIHRoZSBtZXNzYWdlIHJlY2VpcHQuIE5vdGU6IGFscmVh
ZHkgcmVjZWl2ZWQgbWVzc2FnZXMgbWlnaHQgc3RpbGwgYmUgZGVsaXZlcmVkLgogICAgIHZvaWQg
c3RvcFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25J
RCk7CiAKLSAgICB2b2lkIHN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoUmVjZWl2ZXJOYW1lKTsKLSAg
ICB2b2lkIHN0b3BSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZlck5hbWUpOwotCiAgICAgQ29ubmVj
dGlvbiYgY29ubmVjdGlvbigpIHsgcmV0dXJuIG1fY29ubmVjdGlvbjsgfQogCiAgICAgZW51bSBE
aXNwYXRjaFJlc3VsdCA6IGJvb2wgewpAQCAtNzQsMTEgKzgwLDE1IEBAIHB1YmxpYzoKICAgICB9
OwogICAgIERpc3BhdGNoUmVzdWx0IGRpc3BhdGNoU3RyZWFtTWVzc2FnZXMoc2l6ZV90IG1lc3Nh
Z2VMaW1pdCk7CiAKKyAgICB2b2lkIG9wZW4oKTsKKyAgICB2b2lkIGludmFsaWRhdGUoKTsKKwog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KICAgICB2b2lk
IHNlbmRTeW5jUmVwbHkoQ29ubmVjdGlvbjo6U3luY1JlcXVlc3RJRCwgQXJndW1lbnRzJiYuLi4p
OwogCiBwcml2YXRlOgotICAgIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9u
JiwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmLCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJik7
CisgICAgZW51bSBjbGFzcyBIYXNEZWRpY2F0ZWRDb25uZWN0aW9uIDogYm9vbCB7IE5vLCBZZXMg
fTsKKyAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uKFJlZjxDb25uZWN0aW9uPiYmLCBTdHJlYW1D
b25uZWN0aW9uQnVmZmVyJiYsIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmLCBIYXNEZWRpY2F0
ZWRDb25uZWN0aW9uKTsKIAogICAgIC8vIE1lc3NhZ2VSZWNlaXZlUXVldWUKICAgICB2b2lkIGVu
cXVldWVNZXNzYWdlKENvbm5lY3Rpb24mLCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mJikgZmlu
YWw7CkBAIC0xMTksNiArMTI5LDcgQEAgcHJpdmF0ZToKICAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9w
dHI8RGVjb2Rlcj4+IG1fb3V0T2ZTdHJlYW1NZXNzYWdlcyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1f
b3V0T2ZTdHJlYW1NZXNzYWdlc0xvY2spOwogCiAgICAgYm9vbCBtX2lzRGlzcGF0Y2hpbmdTdHJl
YW1NZXNzYWdlIHsgZmFsc2UgfTsKKyAgICBjb25zdCBib29sIG1faGFzRGVkaWNhdGVkQ29ubmVj
dGlvbjsKICAgICBMb2NrIG1fcmVjZWl2ZXJzTG9jazsKICAgICB1c2luZyBSZWNlaXZlcnNNYXAg
PSBIYXNoTWFwPHN0ZDo6cGFpcjx1aW50OF90LCB1aW50NjRfdD4sIFJlZjxTdHJlYW1NZXNzYWdl
UmVjZWl2ZXI+PjsKICAgICBSZWNlaXZlcnNNYXAgbV9yZWNlaXZlcnMgV1RGX0dVQVJERURfQllf
TE9DSyhtX3JlY2VpdmVyc0xvY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCmluZGV4IDk0NzIzNTBmODVmNDlkNWNiYmIyNDM0
N2Q1OTNiZWI4NjIxNGM4MzcuLjAxOWFlMzM3NjM1MTgyNWIwMGZlYjUyNDY0ZjlmNDQ1ZjA0ZDgw
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rp
b25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0
aW9uQ29jb2EubW0KQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBvcnQgIkNvbm5lY3Rpb24uaCIKIAog
I2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgorI2ltcG9ydCAiSVBDVGVzdGVyLmgiCiAjaW1wb3J0
ICJJbXBvcnRhbmNlQXNzZXJ0aW9uLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJN
YWNoTWVzc2FnZS5oIgpAQCAtNTU4LDExICs1NTksMTQgQEAgdm9pZCBDb25uZWN0aW9uOjpyZWNl
aXZlU291cmNlRXZlbnRIYW5kbGVyKCkKICNpZiBQTEFURk9STShNQUMpCiAgICAgZGVjb2Rlci0+
c2V0SW1wb3J0YW5jZUFzc2VydGlvbihJbXBvcnRhbmNlQXNzZXJ0aW9uIHsgaGVhZGVyIH0pOwog
I2VuZGlmCi0KKyAgICAKICAgICBpZiAoZGVjb2Rlci0+bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
TmFtZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb24pIHsKICAgICAgICAgQVNTRVJUKG1faXNTZXJ2ZXIp
OwotICAgICAgICBBU1NFUlQoIW1faXNDb25uZWN0ZWQpOwogICAgICAgICBBU1NFUlQoIW1fc2Vu
ZFBvcnQpOworICAgICAgICBpZiAobV9pc0Nvbm5lY3RlZCkgeworICAgICAgICAgICAgQVNTRVJU
X0lTX1RFU1RJTkdfSVBDKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAogICAg
ICAgICBNYWNoUG9ydCBwb3J0OwogICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShwb3J0KSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDU3RyZWFtVGVzdGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1N0cmVhbVRlc3Rlci5jcHAKaW5kZXggYWJiNmFjNDlk
NjgxN2NlNjAyMGY5YzdkM2FjN2IyNjVhNjFmZGIzOC4uODIyNjdlMjFhZGU2MmE5YjY2NzQ1ZjNk
Yzg3YTZjYTVjMzBiMmVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDU3Ry
ZWFtVGVzdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENTdHJlYW1UZXN0ZXIu
Y3BwCkBAIC01NSw2ICs1NSw3IEBAIElQQ1N0cmVhbVRlc3Rlcjo6fklQQ1N0cmVhbVRlc3Rlcigp
ID0gZGVmYXVsdDsKIHZvaWQgSVBDU3RyZWFtVGVzdGVyOjppbml0aWFsaXplKCkKIHsKICAgICBt
X3N0cmVhbUNvbm5lY3Rpb24tPnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoKnRoaXMsIE1lc3NhZ2Vz
OjpJUENTdHJlYW1UZXN0ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRv
VUludDY0KCkpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+b3BlbigpOwogICAgIHdvcmtRdWV1
ZSgpLmRpc3BhdGNoKFt0aGlzXSB7CiAgICAgICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+Y29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OklQQ1N0cmVhbVRlc3RlclByb3h5OjpXYXNDcmVhdGVkKHdv
cmtRdWV1ZSgpLndha2VVcFNlbWFwaG9yZSgpKSwgbV9pZGVudGlmaWVyKTsKICAgICB9KTsKQEAg
LTYyLDYgKzYzLDcgQEAgdm9pZCBJUENTdHJlYW1UZXN0ZXI6OmluaXRpYWxpemUoKQogCiB2b2lk
IElQQ1N0cmVhbVRlc3Rlcjo6c3RvcExpc3RlbmluZ0ZvcklQQyhSZWY8SVBDU3RyZWFtVGVzdGVy
PiYmIHJlZkZyb21Db25uZWN0aW9uKQogeworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+aW52YWxp
ZGF0ZSgpOwogICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1l
c3NhZ2VzOjpJUENTdHJlYW1UZXN0ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlm
aWVyLnRvVUludDY0KCkpOwogICAgIHdvcmtRdWV1ZSgpLnN0b3BBbmRXYWl0Rm9yQ29tcGxldGlv
bigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuaAppbmRleCA2OGJiNmNiYjE0ZjU4YjEzNzYx
ZWFkOWNkNWIzOGE5YzlkYjlmYmJmLi43MDA5N2I4MDZiZTMzZmRkMjUxMGM0OWI1ZWUzMzgzY2Q3
YjFlYWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuaApAQCAtNDQsNyArNDQsNyBAQAogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotI2RlZmluZSBBU1NFUlRfSVNfVEVTVElOR19JUEMoKSBBU1NF
UlQoaXNUZXN0aW5nSVBDKCksICJVbnRydXN0ZWQgY29ubmVjdGlvbiBzZW50IGludmFsaWQgZGF0
YS4gU2hvdWxkIG9ubHkgaGFwcGVuIHdoZW4gdGVzdGluZyBJUEMuIikKKyNkZWZpbmUgQVNTRVJU
X0lTX1RFU1RJTkdfSVBDKCkgQVNTRVJUKFdlYktpdDo6aXNUZXN0aW5nSVBDKCksICJVbnRydXN0
ZWQgY29ubmVjdGlvbiBzZW50IGludmFsaWQgZGF0YS4gU2hvdWxkIG9ubHkgaGFwcGVuIHdoZW4g
dGVzdGluZyBJUEMuIikKIAogI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCmluZGV4IDVlOTIyZjc5YThmZWJiNzM2
NjIwZTg0ODE3MTNkN2NjZjhlNzQwNjguLmE1Y2ZjMTcwNDhhZjAwYjM4MzZiZGY5ODQ3ZDUwY2E1
MzY2M2VjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApA
QCAtNTUsNiArNTUsNyBAQCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5KEdQVVByb2Nlc3NDb25uZWN0aW9uJgogICAgIG1fZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24tPmFkZENsaWVudCgqdGhpcyk7CiAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlv
bi0+bWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKICAgICBtX2dwdVByb2Nl
c3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Q3JlYXRlR3JhcGhpY3NDb250ZXh0R0woYXR0cmlidXRlcywgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIHJlbmRlcmluZ0JhY2tlbmQsIG1fc3RyZWFtQ29ubmVjdGlv
bi5zdHJlYW1CdWZmZXIoKSksIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZl
bldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24ub3Blbigp
OwogICAgIC8vIFRPRE86IFdlIG11c3Qgd2FpdCB1bnRpbCBpbml0aWFsaXplZCwgYmVjYXVzZSBh
dCB0aGUgbW9tZW50IHdlIGNhbm5vdCByZWNlaXZlIElQQyBtZXNzYWdlcwogICAgIC8vIGR1cmlu
ZyB3YWl0IHdoaWxlIGluIHN5bmNocm9ub3VzIHN0cmVhbSBzZW5kLiBTaG91bGQgYmUgZml4ZWQg
YXMgcGFydCBvZiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjEx
LgogICAgIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7CkBAIC0zMzcsNiArMzM4LDcgQEAgdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjphYmFuZG9uR3B1UHJvY2VzcygpCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2Nvbm5lY3RHcHVQcm9jZXNzSWZOZWVkZWQo
KQogewogICAgIGlmIChhdXRvIGdwdVByb2Nlc3NDb25uZWN0aW9uID0gc3RkOjpleGNoYW5nZSht
X2dwdVByb2Nlc3NDb25uZWN0aW9uLCBudWxscHRyKSkgeworICAgICAgICBtX3N0cmVhbUNvbm5l
Y3Rpb24uaW52YWxpZGF0ZSgpOwogICAgICAgICBncHVQcm9jZXNzQ29ubmVjdGlvbi0+cmVtb3Zl
Q2xpZW50KCp0aGlzKTsKICAgICAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNl
aXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWxl
YXNlR3JhcGhpY3NDb250ZXh0R0wobV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpLCAwLCBJ
UEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBs
eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKaW5kZXggZjAwYTBm
NjhkN2RmNmNiMzljZDQ1OGRjOGU1NWJlMGM4MTlmMGE1Yy4uNmQxNWEyYzRhYWU4MWIyY2M0YmY2
NDYzZDI4Zjg4ZjZjZmFkODE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LmNwcApAQCAtNzAsMTMgKzcwLDE0IEBAIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
flJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpCiBHUFVQcm9jZXNzQ29ubmVjdGlvbiYgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjplbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpCiB7
CiAgICAgaWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0aW9uKSB7Ci0gICAgICAgIGF1dG8mIGdwdVBy
b2Nlc3NDb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24oKTsKLSAgICAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uYWRkQ2xpZW50KCp0
aGlzKTsKLSAgICAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZVJlY2VpdmVyTWFwKCku
YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKS50b1VJ
bnQ2NCgpLCAqdGhpcyk7CisgICAgICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24gPSAmV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKyAgICAgICAg
bV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+YWRkQ2xpZW50KCp0aGlzKTsKKwogICAgICAgICBzdGF0
aWMgY29uc3RleHByIGF1dG8gY29ubmVjdGlvbkJ1ZmZlclNpemUgPSAxIDw8IDIxOwotICAgICAg
ICBtX3N0cmVhbUNvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPElQQzo6U3RyZWFtQ2xpZW50Q29ubmVj
dGlvbj4oZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLCBjb25uZWN0aW9uQnVmZmVy
U2l6ZSk7Ci0gICAgICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVSZW5kZXJpbmdCYWNrZW5k
KG1fcGFyYW1ldGVycywgbV9zdHJlYW1Db25uZWN0aW9uLT5zdHJlYW1CdWZmZXIoKSksIDAsIElQ
Qzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5
KTsKLSAgICAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbiA9IGdwdVByb2Nlc3NDb25uZWN0aW9u
OworICAgICAgICBhdXRvIFtzdHJlYW1Db25uZWN0aW9uLCBkZWRpY2F0ZWRDb25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmVyXSA9IElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6Y3JlYXRlV2l0aERl
ZGljYXRlZENvbm5lY3Rpb24oKnRoaXMsIGNvbm5lY3Rpb25CdWZmZXJTaXplKTsKKyAgICAgICAg
bV9zdHJlYW1Db25uZWN0aW9uID0gV1RGTW92ZShzdHJlYW1Db25uZWN0aW9uKTsKKyAgICAgICAg
bV9zdHJlYW1Db25uZWN0aW9uLT5vcGVuKCk7CisgICAgICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpDcmVhdGVSZW5kZXJpbmdCYWNrZW5kKG1fcGFyYW1ldGVycywgZGVkaWNhdGVkQ29ubmVjdGlv
bkNsaWVudElkZW50aWZlciwgbV9zdHJlYW1Db25uZWN0aW9uLT5zdHJlYW1CdWZmZXIoKSksIDAs
IElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1Jl
cGx5KTsKICAgICB9CiAgICAgcmV0dXJuICptX2dwdVByb2Nlc3NDb25uZWN0aW9uOwogfQpAQCAt
MTAxLDYgKzEwMiw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaXNjb25u
ZWN0R1BVUHJvY2VzcygpCiAgICAgbV9nZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeSA9IG51bGxw
dHI7CiAgICAgbV9yZW5kZXJpbmdVcGRhdGVJRCA9IHsgfTsKICAgICBtX2RpZFJlbmRlcmluZ1Vw
ZGF0ZUlEID0geyB9OworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOwogICAg
IG1fc3RyZWFtQ29ubmVjdGlvbiA9IG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5oCmluZGV4IGMwNDAyMGQ0NGEzM2Y1MWMyY2QxZDQ2NDAzNjQ0YjBjZWRl
ZjA5MWQuLjZmMjYyOWUxOTQ4OTMyZDU0NGRkZWNjN2FiNTYzNWUzNWFkYWY4MTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaApAQCAtMTcyLDkgKzE3MiwxMCBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkRmx1c2goV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Rmx1c2hJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQg
ZGlkRmluYWxpemVSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlSUQgZGlkUmVuZGVyaW5n
VXBkYXRlSUQpOwogCisgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24qIG1fZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24geyBudWxscHRyIH07CisgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0
aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24+IG1f
c3RyZWFtQ29ubmVjdGlvbjsKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJh
bWV0ZXJzIG1fcGFyYW1ldGVyczsKLSAgICBXZWFrUHRyPEdQVVByb2Nlc3NDb25uZWN0aW9uPiBt
X2dwdVByb2Nlc3NDb25uZWN0aW9uOwogICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSBtX3Jl
bW90ZVJlc291cmNlQ2FjaGVQcm94eSB7ICp0aGlzIH07CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9y
eT4gbV9nZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeTsKICAgICBXZWJDb3JlOjpUaW1lciBtX2Rl
c3Ryb3lHZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeVRpbWVyIHsgKnRoaXMsICZSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OmRlc3Ryb3lHZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlR1BVUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlR1BVUHJveHkuY3BwCmluZGV4IDg0MzA0YTc3NjVkNzlmMjc1MTg4OTE1
YWFkZDMwMThlYjE2MTZkYjIuLmE2ZDg4MTJiYWRkN2Q5MDVkYjdjYjNkNjEwYTQ1YjA2YmYzM2Vj
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZUdQVVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5jcHAKQEAgLTUxLDYgKzUxLDcgQEAgUmVt
b3RlR1BVUHJveHk6OlJlbW90ZUdQVVByb3h5KEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9j
ZXNzQ29ubmVjdGlvbiwgV2ViR1AKICAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5hZGRDbGll
bnQoKnRoaXMpOwogICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1h
cCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR1BVUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CiAgICAgbV9ncHVQ
cm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OkNyZWF0ZVJlbW90ZUdQVShpZGVudGlmaWVyLCByZW5kZXJpbmdCYWNr
ZW5kLCBtX3N0cmVhbUNvbm5lY3Rpb24uc3RyZWFtQnVmZmVyKCkpLCAwLCBJUEM6OlNlbmRPcHRp
b246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CisgICAgbV9z
dHJlYW1Db25uZWN0aW9uLm9wZW4oKTsKICAgICAvLyBUT0RPOiBXZSBtdXN0IHdhaXQgdW50aWwg
aW5pdGlhbGl6ZWQsIGJlY2F1c2UgYXQgdGhlIG1vbWVudCB3ZSBjYW5ub3QgcmVjZWl2ZSBJUEMg
bWVzc2FnZXMKICAgICAvLyBkdXJpbmcgd2FpdCB3aGlsZSBpbiBzeW5jaHJvbm91cyBzdHJlYW0g
c2VuZC4gU2hvdWxkIGJlIGZpeGVkIGFzIHBhcnQgb2YgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxNzIxMS4KICAgICB3YWl0VW50aWxJbml0aWFsaXplZCgpOwpAQCAt
NjgsNiArNjksNyBAQCB2b2lkIFJlbW90ZUdQVVByb3h5OjpncHVQcm9jZXNzQ29ubmVjdGlvbkRp
ZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBjb25uZWN0aQogdm9pZCBSZW1vdGVHUFVQcm94
eTo6YWJhbmRvbkdQVVByb2Nlc3MoKQogewogICAgIGF1dG8gZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24g
PSBzdGQ6OmV4Y2hhbmdlKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIG51bGxwdHIpOworICAgIG1f
c3RyZWFtQ29ubmVjdGlvbi5pbnZhbGlkYXRlKCk7CiAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24t
Pm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVt
b3RlR1BVUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9iYWNraW5nLnRvVUludDY0KCkp
OwogICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24gPSBudWxscHRyOwogICAgIG1fbG9zdCA9IHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0
aW5nQVBJLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdB
UEkuY3BwCmluZGV4IDczZmMwMTM0MmM4YjdmNDE0Y2M4ZGMxNWM4YmM3ZDVkOTliNDc1YzQuLmEw
YjI2MjQ2OGNmMTJmNjgzNWE3OTkzNGU5MzZlNDAyYTcxM2U1Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCkBAIC01NDEsMTAg
KzU0MSwxMSBAQCBKU1ZhbHVlUmVmIEpTSVBDU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZE1l
c3NhZ2UoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZQogCiAgICAgYXV0byBbZGVzdGluYXRp
b25JRCwgbWVzc2FnZU5hbWUsIHRpbWVvdXRdID0gKmluZm87CiAgICAgYXV0byYgc3RyZWFtQ29u
bmVjdGlvbiA9IGpzU3RyZWFtQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpOworICAgIGF1dG8mIGNv
bm5lY3Rpb24gPSBzdHJlYW1Db25uZWN0aW9uLmNvbm5lY3Rpb25Gb3JUZXN0aW5nKCk7CiAKICAg
ICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4obWVzc2FnZU5hbWUs
IGRlc3RpbmF0aW9uSUQpOwogICAgIGlmIChwcmVwYXJlVG9TZW5kT3V0T2ZTdHJlYW1NZXNzYWdl
KGNvbnRleHQsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cywgKmpzU3RyZWFtQ29ubmVjdGlvbi0+
bV9qc0lQQywgc3RyZWFtQ29ubmVjdGlvbiwgZW5jb2Rlci5nZXQoKSwgZGVzdGluYXRpb25JRCwg
dGltZW91dCwgZXhjZXB0aW9uKSkKLSAgICAgICAgc3RyZWFtQ29ubmVjdGlvbi5tX2Nvbm5lY3Rp
b24uc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgeyB9KTsKKyAgICAgICAgY29ubmVjdGlv
bi5zZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCB7IH0pOwogCiAgICAgcmV0dXJuIHJldHVy
blZhbHVlOwogfQpAQCAtNTY2LDEzICs1NjcsMTQgQEAgSlNWYWx1ZVJlZiBKU0lQQ1N0cmVhbUNs
aWVudENvbm5lY3Rpb246OnNlbmRTeW5jTWVzc2FnZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlMK
IAogICAgIGF1dG8gW2Rlc3RpbmF0aW9uSUQsIG1lc3NhZ2VOYW1lLCB0aW1lb3V0XSA9ICppbmZv
OwogICAgIGF1dG8mIHN0cmVhbUNvbm5lY3Rpb24gPSBqc1N0cmVhbUNvbm5lY3Rpb24tPmNvbm5l
Y3Rpb24oKTsKKyAgICBhdXRvJiBjb25uZWN0aW9uID0gc3RyZWFtQ29ubmVjdGlvbi5jb25uZWN0
aW9uRm9yVGVzdGluZygpOwogCiAgICAgSVBDOjpDb25uZWN0aW9uOjpTeW5jUmVxdWVzdElEIHN5
bmNSZXF1ZXN0SUQ7Ci0gICAgYXV0byBlbmNvZGVyID0gc3RyZWFtQ29ubmVjdGlvbi5tX2Nvbm5l
Y3Rpb24uY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKG1lc3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklE
LCBzeW5jUmVxdWVzdElEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBjb25uZWN0aW9uLmNyZWF0ZVN5
bmNNZXNzYWdlRW5jb2RlcihtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCwgc3luY1JlcXVlc3RJ
RCk7CiAgICAgaWYgKCFwcmVwYXJlVG9TZW5kT3V0T2ZTdHJlYW1NZXNzYWdlKGNvbnRleHQsIGFy
Z3VtZW50Q291bnQsIGFyZ3VtZW50cywgKmpzU3RyZWFtQ29ubmVjdGlvbi0+bV9qc0lQQywgc3Ry
ZWFtQ29ubmVjdGlvbiwgZW5jb2Rlci5nZXQoKSwgZGVzdGluYXRpb25JRCwgdGltZW91dCwgZXhj
ZXB0aW9uKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwog
Ci0gICAgaWYgKGF1dG8gcmVwbHlEZWNvZGVyID0gc3RyZWFtQ29ubmVjdGlvbi5tX2Nvbm5lY3Rp
b24uc2VuZFN5bmNNZXNzYWdlKHN5bmNSZXF1ZXN0SUQsIFdURk1vdmUoZW5jb2RlciksIHRpbWVv
dXQsIHsgfSkpIHsKKyAgICBpZiAoYXV0byByZXBseURlY29kZXIgPSBjb25uZWN0aW9uLnNlbmRT
eW5jTWVzc2FnZShzeW5jUmVxdWVzdElELCBXVEZNb3ZlKGVuY29kZXIpLCB0aW1lb3V0LCB7IH0p
KSB7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKGdsb2JhbE9iamVj
dC0+dm0oKSk7CiAgICAgICAgIGF1dG8qIGpzUmVzdWx0ID0ganNSZXN1bHRGcm9tUmVwbHlEZWNv
ZGVyKGdsb2JhbE9iamVjdCwgbWVzc2FnZU5hbWUsICpyZXBseURlY29kZXIpOwogICAgICAgICBp
ZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCA2MjRlNzM3YTU4YjM0NWVhM2Y3MDg1YjI3
NjZjNDE1NGU3M2ZlMTBhLi40ZDkzNDMwNzc3M2ZiN2MwNTJhZDc4ZWI1YTc2ZjgyMjZiZWEzNTEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhLm1tCkBAIC0zNzksNyArMzc5LDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YTo6dXBkYXRlUmVuZGVyaW5nKCkKIAogICAgIE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWUgbWVzc2FnZShsYXllclRyYW5zYWN0aW9uLCBz
Y3JvbGxpbmdUcmFuc2FjdGlvbik7CiAgICAgYXV0byBjb21taXRFbmNvZGVyID0gbWFrZVVuaXF1
ZVJlZjxJUEM6OkVuY29kZXI+KE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5OjpDb21taXRMYXllclRyZWU6Om5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwot
ICAgIGNvbW1pdEVuY29kZXIuZ2V0KCkgPDwgbWVzc2FnZS5hcmd1bWVudHMoKTsKKyAgICBjb21t
aXRFbmNvZGVyLmdldCgpIDw8IFdURk1vdmUobWVzc2FnZSkuYXJndW1lbnRzKCk7CiAKICAgICBh
dXRvIGZsdXNoZXJzID0gYmFja2luZ1N0b3JlQ29sbGVjdGlvbi5kaWRGbHVzaExheWVycyhsYXll
clRyYW5zYWN0aW9uKTsKICAgICBSZWZQdHI8QmFja2luZ1N0b3JlRmx1c2hlcj4gYmFja2luZ1N0
b3JlRmx1c2hlciA9IEJhY2tpbmdTdG9yZUZsdXNoZXI6OmNyZWF0ZShXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLCBXVEZNb3ZlKGNvbW1pdEVuY29kZXIp
LCBXVEZNb3ZlKGZsdXNoZXJzKSk7Cg==
</data>
<flag name="commit-queue"
          id="485892"
          type_id="3"
          status="+"
          setter="kkinnunen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457323</attachid>
            <date>2022-04-12 02:48:05 -0700</date>
            <delta_ts>2022-04-13 00:30:27 -0700</delta_ts>
            <desc>[fast-cq] For landing</desc>
            <filename>bug-238516-20220412124803.patch</filename>
            <type>text/plain</type>
            <size>53267</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZlMDZkMGQ3NzdjNzRhZWVl
MThmZjkxOTVlYTIwZjg0NGYyMzkxYmEuLjMzYWQ0ZDRkYjI3ZWFiNTU5MTU5N2E4NDJiZjA5Y2Ew
NWEyMjM4YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAyIEBACisyMDIyLTA0LTEyICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCBzaG91bGQgaGF2ZSBkZWRpY2F0ZWQgSVBDOjpDb25uZWN0aW9uIGZvciBvdXQtb2Yt
c3RyZWFtIG1lc3NhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzg1MTYKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAg
ICAgICAgVXNlIGRlZGljYXRlZCBJUEM6OkNvbm5lY3Rpb24gZm9yIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQgSVBDIHN0cmVhbSBjb25uZWN0aW9uIGluc3RlYWQKKyAgICAgICAgb2YgdXNpbmcgdGhl
IFdQLUdQVVAgbWFpbiBjb25uZWN0aW9uLiBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyIHN0YXJ0
cyBsaXN0ZW5pbmcgdG8KKyAgICAgICAgaXRzIG1lc3NhZ2VzIGluIHRoZSB3b3JrZXIgdGhyZWFk
LiBBdCB0aGF0IHBvaW50LCBzb21lIG91dC1vZi1zdHJlYW0gbWVzc2FnZSBmb3IgdGhhdAorICAg
ICAgICBpZCBtaWdodCBhbHJlYWR5IGhhdmUgYmVlbiBkaXNwYXRjaGVkIHRvIG1haW4gdGhyZWFk
LCBjYXVzaW5nIG1pc3NpbmcgbWVzc2FnZSBhbmQgYXNzZXJ0LgorCisgICAgICAgIEluc3RlYWQs
IHVzZSBkZWRpY2F0ZWQgY29ubmVjdGlvbiBhbmQgcm91dGUgYWxsIHRoZSBtZXNzYWdlcyB0byB0
aGUgU3RyZWFtU2VydmVyQ29ubmVjdGlvbgorICAgICAgICBpbiBhICJtZXNzYWdlIHF1ZXVlIi4g
VGhpcyB3YXkgd2hlbiBlYWNoIG91dC1vZi1zdHJlYW0gbWVzc2FnZSBtYXJrZXIgaXMgcHJvY2Vz
c2VkLCB0aGUKKyAgICAgICAgbWVzc2FnZSB3aWxsIGJlLCBkaXJlY3RseSBvciBldmVudHVhbGx5
LCBmb3VuZCBmcm9tIHRoZSBtZXNzYWdlIHF1ZXVlLgorCisgICAgICAgIFJlbW92ZSB3b3JrYXJv
dW5kczoKKyAgICAgICAgIC0gQWRkaW5nIGEgbGlzdGVuZXIgdG8gdGhlIG1haW4gV1AtR1BVUCBj
b25uZWN0aW9uIGZvciBhbGwgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlciBtZXNzYWdlcworICAg
ICAgICAgICBhbmQgcm91dGluZyB0aGVtIHRvIHBhcnRpY3VsYXIgU3RyZWFtU2VydmVyQ29ubmVj
dGlvbi4gVGhpcyB3YXMgcHJvYmxlbWF0aWMgc2luY2UKKyAgICAgICAgICAgdGhlcmUgYXJlIG1h
bnkgUlJCIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24gaW5zdGFuY2VzLCBvbmUgcGVyIFBhZ2UsIGJ1
dCBvbmx5IG9uZSBXUC1HUFVQCisgICAgICAgICAgIGNvbm5lY3Rpb24uCisgICAgICAgICAtIFJF
TEVBU0VfTE9HIGluIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAgYWJvdXQgd2FybmluZyBmb3IgdGhl
IGFib3ZlLiBUdXJuIHRoaXMgYmFjayBpbnRvIGFuCisgICAgICAgICAgIEFTU0VSVC4KKworICAg
ICAgICBTaW5jZSBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24gYW5kIElQQzo6U3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbiBhcmUgbGlrZSBJUEM6OkNvbm5lY3Rpb24sCisgICAgICAgIGFkZCBvcGVu
KCkgYW5kIGludmFsaWRhdGUoKSBjYWxscy4gVGhlc2UgaGF2ZSBzYW1lIGNvbnRyYWN0IGFzIHdp
dGggSVBDOjpDb25uZWN0aW9uOgorICAgICAgICBvcGVuKCkgc2hvdWxkIGJlIGNhbGxlZCBpZiBj
b25uZWN0aW9uIGlzIHRvIGJlIHVzZWQsIGludmFsaWRhdGUoKSBtdXN0IGJlIGNhbGxlZCBpZiBv
cGVuKCkgd2FzIGNhbGxlZC4KKyAgICAgICAgVGhlc2UgY2FsbHMgaGF2ZSBhbiBlZmZlY3QgY3Vy
cmVudGx5IG9ubHkgd2l0aCBkZWRpY2F0ZWQgY29ubmVjdGlvbnMsIGJ1dCB0aGVzZSBhcmUgYWRk
ZWQgdG8gYWxsCisgICAgICAgIElQQzo6U3RyZWFtKkNvbm5lY3Rpb24gY2xpZW50cyBmb3IgY29u
c2lzdGVuY3kgYW5kIGZ1dHVyZSB1c2VzLgorCisgICAgICAgIENoYW5nZXMgc2VtYW50aWNzIG9m
IElQQzo6Q29ubmVjdGlvbiBzbGlnaHRseToKKyAgICAgICAgQmVmb3JlLCB0aGVyZSB3YXMgbm8g
dW50cnVzdGVkIGhvbGRlcnMgb2YgInNlcnZlciIgSVBDOjpDb25uZWN0aW9uLCBlLmcuIHRoZSBJ
UEM6OkNvbm5lY3Rpb24gaW5zdGFuY2VzCisgICAgICAgIHdlcmUgbmV2ZXIgaW5zdGFudGlhdGVk
IGJ5IFdQLgorICAgICAgICBBZnRlciwgdW50cnVzdGVkIFdQIGluc3RhbnRpYXRlcyB0aGVzZSBJ
UEMgc3RyZWFtIGRlZGljYXRlZCBjb25uZWN0aW9ucy4KKyAgICAgICAgVGhpcyBpcyBhY2NvdW50
ZWQgaW4gdGhlIGNhc2Ugd2hlcmUgSVBDOjpDb25uZWN0aW9uIGVuc3VyZXMgdGhhdCBJUEM6Ok1l
c3NhZ2VOYW1lczo6SW5pdGlhbGl6ZUNvbm5lY3Rpb24KKyAgICAgICAgbWVzc2FnZSBpcyBub3Qg
YWN0ZWQgb24gdHdpY2UuCisKKyAgICAgICAgVGVzdGVkIGJ5IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvbGlua3MvbGlua3MtY3JlYXRlZC1ieS1hLWFuZC1h
cmVhLWVsZW1lbnRzL3RhcmdldF9ibGFua19pbXBsaWNpdF9ub29wZW5lci5odG1sCisgICAgICAg
ICAgICAgICAgICAtLWNoaWxkLXByb2Nlc3Nlcz0xIC0tZXhwZXJpbWVudGFsLWZlYXR1cmU9VXNl
R1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZ0VuYWJsZWQ9dHJ1ZSAtLWl0ZXJhdGlvbnM9MTAwIC0t
Zm9yY2UgLS1zaW11bGF0b3IKKworICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6c3RvcExpc3RlbmluZ0ZvcklQQyk6CisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN0YXJ0TGlzdGVuaW5nRm9ySVBDKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c3RvcExpc3RlbmluZ0ZvcklQQyk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VTZW5kZXJD
b25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVHUFUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHUFU6OmluaXRpYWxpemUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHUFU6OnN0b3BMaXN0ZW5pbmdGb3JJUEMpOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcDoKKyAgICAgICAgKElQ
Qzo6TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6YWRkSW1wbCk6CisgICAgICAgIChJUEM6Ok1lc3Nh
Z2VSZWNlaXZlUXVldWVNYXA6OnJlbW92ZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVh
bUNsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0
aW9uOjpjcmVhdGVXaXRoRGVkaWNhdGVkQ29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVh
bUNsaWVudENvbm5lY3Rpb246OlN0cmVhbUNsaWVudENvbm5lY3Rpb24pOgorICAgICAgICAoSVBD
OjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp+U3RyZWFtQ2xpZW50Q29ubmVjdGlvbik6CisgICAg
ICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246Om9wZW4pOgorICAgICAgICAoSVBDOjpT
dHJlYW1DbGllbnRDb25uZWN0aW9uOjppbnZhbGlkYXRlKToKKyAgICAgICAgKElQQzo6U3RyZWFt
Q2xpZW50Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvclRlc3RpbmcpOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OlN0cmVhbUNs
aWVudENvbm5lY3Rpb246OnNlbmQpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0
aW9uOjpzZW5kU3luYyk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246Ondh
aXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50
Q29ubmVjdGlvbjo6dHJ5U2VuZFN5bmNTdHJlYW0pOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9T
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29u
bmVjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbjo6
Y3JlYXRlV2l0aERlZGljYXRlZENvbm5lY3Rpb24pOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZTo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UpOgorICAgICAgICAo
SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6flN0cmVhbVNlcnZlckNvbm5lY3Rpb25C
YXNlKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6Om9wZW4pOgor
ICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6aW52YWxpZGF0ZSk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzdGFydFJlY2VpdmluZ01l
c3NhZ2VzSW1wbCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpz
dG9wUmVjZWl2aW5nTWVzc2FnZXNJbXBsKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFt
U2VydmVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFNoYXJlZC9JUENTdHJlYW1UZXN0ZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpJUENTdHJlYW1UZXN0ZXI6OmluaXRpYWxpemUpOgorICAgICAg
ICAoV2ViS2l0OjpJUENTdHJlYW1UZXN0ZXI6OnN0b3BMaXN0ZW5pbmdGb3JJUEMpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZGlzY29ubmVjdEdwdVByb2Nlc3NJZk5lZWRlZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjplbnN1cmVH
UFVQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6ZGlzY29ubmVjdEdQVVByb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdQVVByb3h5OjpSZW1vdGVHUFVQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdQVVByb3h5OjphYmFuZG9uR1BVUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJUENUZXN0
aW5nQVBJOjpKU0lQQ1N0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmRNZXNzYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6SlNJUENTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpz
ZW5kU3luY01lc3NhZ2UpOgorCiAyMDIyLTA0LTExICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbV0syXSBTaW1wbGlmeSBJUEMgZW5jb2RpbmcsIGRlY29k
aW5nIG9mIHR1cGxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDQyYzBiZjAyZjhlNTQ1Y2MzNjAxN2FlYjZk
ZWQwYmQ4YzYyNmJkNDUuLjgwNGE1YzY5ZjBiNGExYTY3ZTZkNmI5MDM2OTIyYzVhYTQyNzE3ODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAKQEAgLTUzOCwxMCArNTM4LDEwIEBAIFJlbW90ZUltYWdlRGVjb2RlckFW
RlByb3h5JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjppbWFnZURlY29kZXJBVkZQcm94eSgp
CiB9CiAjZW5kaWYKIAotdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVSZW5k
ZXJpbmdCYWNrZW5kKFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiBj
cmVhdGlvblBhcmFtZXRlcnMsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbUJ1
ZmZlcikKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVyaW5nQmFj
a2VuZChSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYgY3JlYXRpb25Q
YXJhbWV0ZXJzLCBJUEM6OkF0dGFjaG1lbnQmJiBjb25uZWN0aW9uSWRlbnRpZmllciwgSVBDOjpT
dHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtQnVmZmVyKQogewogICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVuc3VyZShjcmVhdGlvblBhcmFtZXRl
cnMuaWRlbnRpZmllciwgWyZdKCkgewotICAgICAgICByZXR1cm4gSVBDOjpTY29wZWRBY3RpdmVN
ZXNzYWdlUmVjZWl2ZVF1ZXVlIHsgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKCp0aGlz
LCBXVEZNb3ZlKGNyZWF0aW9uUGFyYW1ldGVycyksIFdURk1vdmUoc3RyZWFtQnVmZmVyKSkgfTsK
KyAgICAgICAgcmV0dXJuIElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZSB7IFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShjcmVhdGlvblBhcmFt
ZXRlcnMpLCBXVEZNb3ZlKGNvbm5lY3Rpb25JZGVudGlmaWVyKSwgV1RGTW92ZShzdHJlYW1CdWZm
ZXIpKSB9OwogICAgIH0pOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQu
aXNOZXdFbnRyeSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCAxOTFjMGE5OTgzYzIyNWM3Y2RhNjcwYTlmNmQ0
YmFkZmJlNWUwMjdiLi5mYjU2YjA2ZGE1OWY2YTNlNzJiMjg4NmRlMzhhY2I2YWY2NWY0M2Y3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgKQEAgLTIyNCw3ICsyMjQsNyBAQCBwcml2YXRlOgogICAgIFJlbW90ZU1lZGlhUmVj
b3JkZXJNYW5hZ2VyJiBtZWRpYVJlY29yZGVyTWFuYWdlcigpOwogI2VuZGlmCiAKLSAgICB2b2lk
IGNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFy
YW1ldGVycyYmLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisgICAgdm9pZCBjcmVh
dGVSZW5kZXJpbmdCYWNrZW5kKFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRl
cnMmJiwgSVBDOjpBdHRhY2htZW50JiYsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsK
ICAgICB2b2lkIHJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyKTsKIAogI2lmIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5k
ZXggMWI4MzJhMzE4M2Y4Mjk0ZWMwNTdjY2E5Yzc2ZmFiYTAwMjRlNTRiYi4uZWEzYzE0N2VjNDE5
YzNmNDk1NTYzMWNlMjA1M2RlMjBkNmI2NWJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4KQEAgLTIzLDcgKzIzLDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIG1lc3NhZ2Vz
IC0+IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3NhZ2UgewotICAg
IHZvaWQgQ3JlYXRlUmVuZGVyaW5nQmFja2VuZChzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzIGNyZWF0aW9uUGFyYW1ldGVycywgSVBDOjpTdHJl
YW1Db25uZWN0aW9uQnVmZmVyIHN0cmVhbUJ1ZmZlcikKKyAgICB2b2lkIENyZWF0ZVJlbmRlcmlu
Z0JhY2tlbmQoc3RydWN0IFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFy
YW1ldGVycyBjcmVhdGlvblBhcmFtZXRlcnMsIElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRl
bnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHN0cmVhbUJ1ZmZlcikKICAgICB2
b2lkIFJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCiAjaWYgRU5BQkxFKFdFQkdMKQogICAg
IHZvaWQgQ3JlYXRlR3JhcGhpY3NDb250ZXh0R0woc3RydWN0IFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFdlYktpdDo6UmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlciBzdHJlYW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCA2ZGI2
NDQwY2Y5NmQ5MmFjMmQ3ZjViZTFkNTIyM2FlMDVhMDE3MWI0Li5mMDI0MmFmN2E0NTAwYTUwNDI2
YzNiMjI1NTQxNDIzNjY4MzZjNzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTg2
LDYgKzg2LDcgQEAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6On5SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCgpCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjppbml0aWFsaXplKEdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCiB7CiAgICAgYXNzZXJ0SXNNYWluUnVu
TG9vcCgpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+b3BlbigpOwogICAgIHJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkuZGlzcGF0Y2goW2F0dHJpYnV0ZXMgPSBXVEZN
b3ZlKGF0dHJpYnV0ZXMpLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oKSBtdXRhYmxl
IHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+d29ya1F1ZXVlSW5pdGlhbGl6ZShXVEZNb3ZlKGF0
dHJpYnV0ZXMpKTsKICAgICB9KTsKQEAgLTk1LDYgKzk2LDcgQEAgdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6aW5pdGlhbGl6ZShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRy
aWJ1dGUKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnN0b3BMaXN0ZW5pbmdGb3JJUEMo
UmVmPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiYmIHJlZkZyb21Db25uZWN0aW9uKQogewogICAg
IGFzc2VydElzTWFpblJ1bkxvb3AoKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPmludmFsaWRh
dGUoKTsKICAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSk7CiAgICAgcmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdU
Rk1vdmUocmVmRnJvbUNvbm5lY3Rpb24pXSgpIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+d29y
a1F1ZXVlVW5pbml0aWFsaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggMDVkOTI2
MGY1NGMwODBkYjcwMjZkYzMyOGE5NzllNGM2YWVlYmE4OC4uN2Q2ZmQyNzhhMzNkNzMxNjVlZGMx
NGQxZTNiOGIwZWUyMGVjMjc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtODAsMTYg
KzgwLDE2IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
Ci1SZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3Jl
YXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Ms
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiBjcmVhdGlvblBhcmFt
ZXRlcnMsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbUJ1ZmZlcikKK1JlZjxS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIGNyZWF0aW9uUGFyYW1ldGVycywg
SVBDOjpBdHRhY2htZW50JiYgY29ubmVjdGlvbklkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlciYmIHN0cmVhbUJ1ZmZlcikKIHsKLSAgICBhdXRvIGluc3RhbmNlID0gYWRvcHRS
ZWYoKm5ldyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Ms
IFdURk1vdmUoY3JlYXRpb25QYXJhbWV0ZXJzKSwgV1RGTW92ZShzdHJlYW1CdWZmZXIpKSk7Cisg
ICAgYXV0byBpbnN0YW5jZSA9IGFkb3B0UmVmKCpuZXcgUmVtb3RlUmVuZGVyaW5nQmFja2VuZChn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBXVEZNb3ZlKGNyZWF0aW9uUGFyYW1ldGVycyksIFdU
Rk1vdmUoY29ubmVjdGlvbklkZW50aWZpZXIpLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlcikpKTsKICAg
ICBpbnN0YW5jZS0+c3RhcnRMaXN0ZW5pbmdGb3JJUEMoKTsKICAgICByZXR1cm4gaW5zdGFuY2U7
CiB9CiAKLVJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIGNyZWF0aW9uUGFyYW1ldGVycywg
SVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtQnVmZmVyKQorUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3Jl
YXRpb25QYXJhbWV0ZXJzJiYgY3JlYXRpb25QYXJhbWV0ZXJzLCBJUEM6OkF0dGFjaG1lbnQmJiBj
b25uZWN0aW9uSWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFt
QnVmZmVyKQogICAgIDogbV93b3JrUXVldWUoSVBDOjpTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVl
OjpjcmVhdGUoIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgd29yayBxdWV1ZSIpKQotICAgICwgbV9z
dHJlYW1Db25uZWN0aW9uKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRlKGdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlciks
IG1fd29ya1F1ZXVlLmdldCgpKSkKKyAgICAsIG1fc3RyZWFtQ29ubmVjdGlvbihJUEM6OlN0cmVh
bVNlcnZlckNvbm5lY3Rpb246OmNyZWF0ZVdpdGhEZWRpY2F0ZWRDb25uZWN0aW9uKFdURk1vdmUo
Y29ubmVjdGlvbklkZW50aWZpZXIpLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlciksIG1fd29ya1F1ZXVl
LmdldCgpKSkKICAgICAsIG1fcmVtb3RlUmVzb3VyY2VDYWNoZShncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLndlYlByb2Nlc3NJZGVudGlmaWVyKCkpCiAgICAgLCBtX2dwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykKICAgICAsIG1fcmVzb3VyY2VPd25l
cihncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLndlYlByb2Nlc3NJZGVudGl0eSgpKQpAQCAtMTEw
LDE3ICsxMTAsMTQgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdGFydExpc3Rlbmlu
Z0ZvcklQQygpCiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3JlbW90ZURpc3BsYXlMaXN0c0xv
Y2sgfTsKICAgICAgICAgbV9jYW5SZWdpc3RlclJlbW90ZURpc3BsYXlMaXN0cyA9IHRydWU7CiAg
ICAgfQotCiAgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdGFydFJlY2VpdmluZ01lc3NhZ2VzKCp0
aGlzLCBNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0KCkpOwotICAgIC8vIFJl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXIgbWVzc2FnZXMgZGVwZW5kIG9uIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQsIGJlY2F1c2UgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBjcmVhdGVzIFJlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXIgYW5kCi0gICAgLy8gbWFrZXMgYSByZWNlaXZlIHF1ZXVlIGZvciBp
dC4gSW4gb3JkZXIgdG8gZ3VhcmFudGVlIGNvcnJlY3Qgb3JkZXJpbmcsIGVuc3VyZSB0aGF0IGFs
bCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyIG1lc3NhZ2VzIGFyZSBwcm9jZXNzZWQgaW4KLSAg
ICAvLyB0aGUgc2FtZSBzZXF1ZW5jZSBhcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIG1lc3NhZ2Vz
LgotICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyhNZXNzYWdl
czo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAg
ICBtX3N0cmVhbUNvbm5lY3Rpb24tPm9wZW4oKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpzdG9wTGlzdGVuaW5nRm9ySVBDKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOwogCiAgICAgLy8g
VGhpcyBpdGVtIGlzIGRpc3BhdGNoZWQgdG8gdGhlIFdvcmtRdWV1ZSBiZWZvcmUgY2FsbGluZyBz
dG9wQW5kV2FpdEZvckNvbXBsZXRpb24oKSBzdWNoIHRoYXQgaXQgd2lsbCBwcm9jZXNzIGl0IGxh
c3QsIGFmdGVyIGFueSBleGlzdGluZyB3b3JrLgogICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChb
Jl0gewpAQCAtMTMyLDcgKzEyOSw2IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c3Rv
cExpc3RlbmluZ0ZvcklQQygpCiAgICAgbV93b3JrUXVldWUtPnN0b3BBbmRXYWl0Rm9yQ29tcGxl
dGlvbigpOwogCiAgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdG9wUmVjZWl2aW5nTWVzc2FnZXMo
TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKLSAgICBtX3N0cmVhbUNv
bm5lY3Rpb24tPnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhNZXNzYWdlczo6UmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKIAogICAgIHsKICAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fcmVtb3RlRGlzcGxheUxpc3RzTG9jayB9OwpAQCAtMTQ5LDcgKzE0NSw3
IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlzcGF0Y2goRnVuY3Rpb248dm9pZCgp
PiYmIHRhc2spCiAKIElQQzo6Q29ubmVjdGlvbiogUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bWVz
c2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAogewotICAgIHJldHVybiAmbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCk7CisgICAgcmV0dXJuICZtX3N0cmVhbUNvbm5l
Y3Rpb24tPmNvbm5lY3Rpb24oKTsKIH0KIAogdWludDY0X3QgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgK
aW5kZXggMjM4OGNjZWVkZTljY2ZiZDkwYTNiZmU0OGFmNDI2ZTdmYTA5M2Q2Ny4uNjIyMGNlNWYx
NWU1N2I4MWZmNmY2YWRhMzZjYjRkODExY2YxYTI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBA
IC03OCw3ICs3OCw3IEBAIGVudW0gY2xhc3MgU3dhcEJ1ZmZlcnNEaXNwbGF5UmVxdWlyZW1lbnQg
OiB1aW50OF90OwogCiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIDogcHJpdmF0ZSBJUEM6
Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBjcmVhdGUoR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFt
ZXRlcnMmJiwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYpOworICAgIHN0YXRpYyBSZWY8
UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYsIElQQzo6QXR0YWNo
bWVudCYmLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CiAgICAgdmlydHVhbCB+UmVt
b3RlUmVuZGVyaW5nQmFja2VuZCgpOwogICAgIHZvaWQgc3RvcExpc3RlbmluZ0ZvcklQQygpOwog
CkBAIC0xMDYsNyArMTA2LDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25C
dWZmZXImJik7CisgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmLCBJUEM6
OkF0dGFjaG1lbnQmJiwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYpOwogICAgIHZvaWQg
c3RhcnRMaXN0ZW5pbmdGb3JJUEMoKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkTWVtb3J5
OjpJUENIYW5kbGU+IHVwZGF0ZVNoYXJlZE1lbW9yeUZvckdldFBpeGVsQnVmZmVySGVscGVyKHNp
emVfdCBieXRlQ291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuY3BwCmluZGV4IGRmNTIzODRlMzliMTQ0Njc4YTVkMjY1
MmU3ZDZkZWM1NTk2MGQ2ODAuLjFiMDc3Yjg5NGFiYWQxNmRmNDA1ZGZkYWVlNmZlZmZkZjA2ZTBl
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlR1BVLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZUdQVS5jcHAKQEAgLTYwLDYgKzYwLDcgQEAgUmVtb3RlR1BVOjp+UmVtb3RlR1BV
KCkgPSBkZWZhdWx0Owogdm9pZCBSZW1vdGVHUFU6OmluaXRpYWxpemUoKQogewogICAgIGFzc2Vy
dElzTWFpblJ1bkxvb3AoKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPm9wZW4oKTsKICAgICB3
b3JrUXVldWUoKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKCkgbXV0
YWJsZSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPndvcmtRdWV1ZUluaXRpYWxpemUoKTsKICAg
ICB9KTsKQEAgLTY5LDYgKzcwLDcgQEAgdm9pZCBSZW1vdGVHUFU6OmluaXRpYWxpemUoKQogdm9p
ZCBSZW1vdGVHUFU6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPFJlbW90ZUdQVT4mJiByZWZGcm9t
Q29ubmVjdGlvbikKIHsKICAgICBhc3NlcnRJc01haW5SdW5Mb29wKCk7CisgICAgbV9zdHJlYW1D
b25uZWN0aW9uLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdG9wUmVj
ZWl2aW5nTWVzc2FnZXMoTWVzc2FnZXM6OlJlbW90ZUdQVTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiAgICAgd29ya1F1ZXVlKCkuZGlzcGF0Y2goW3By
b3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHJlZkZyb21Db25uZWN0aW9uKV0oKSB7CiAgICAgICAgIHBy
b3RlY3RlZFRoaXMtPndvcmtRdWV1ZVVuaW5pdGlhbGl6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcAppbmRleCA1ODJk
Mjc4MTk5OTE1N2ZkMjMzNDE5NjcxN2MzODBkYTdmMDMwMzMxLi5jMzMwNDAxYzUxYjhhZGZiOWI3
NWI5NjU2MzEyYTA3N2ZmNzIyZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcApAQCAtMzksMTAgKzM5LDcgQEAgdm9p
ZCBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwOjphZGRJbXBsKFN0b3JlVHlwZSYmIHF1ZXVlLCBjb25z
dCBSZWNlaXZlck1hdGNoZXImIG0KICAgICB1aW50OF90IHJlY2VpdmVyTmFtZSA9IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KCptYXRjaGVyLnJlY2VpdmVyTmFtZSk7CiAgICAgaWYgKCFtYXRjaGVyLmRl
c3RpbmF0aW9uSUQuaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgYXV0byByZXN1bHQgPSBtX2FueUlE
UXVldWVzLmFkZChyZWNlaXZlck5hbWUsIFdURk1vdmUocXVldWUpKTsKLSAgICAgICAgaWYgKCFy
ZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJl
IGFuIGFzc2VydGlvbi4gU2VlIHdlYmtpdC5vcmcvYi8yMzc2NzQgYW5kIHdlYmtpdC5vcmcvYi8y
MzgzOTEuCi0gICAgICAgICAgICBBTFdBWVNfTE9HX1dJVEhfU1RSRUFNKHN0cmVhbSA8PCAiTWVz
c2FnZVJlY2VpdmVRdWV1ZU1hcDo6YWRkSW1wbCAtIGFkZGluZyBkdXBsaWNhdGUgYW55IGlkIHJl
Y2VpdmVyICIgPDwgc3RhdGljX2Nhc3Q8dWludDhfdD4ocmVjZWl2ZXJOYW1lKSk7Ci0gICAgICAg
IH0KKyAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRvIHJlc3VsdCA9IG1fcXVldWVzLmFkZChzdGQ6
Om1ha2VfcGFpcihyZWNlaXZlck5hbWUsICptYXRjaGVyLmRlc3RpbmF0aW9uSUQpLCBXVEZNb3Zl
KHF1ZXVlKSk7CkBAIC01OSwxMCArNTYsNyBAQCB2b2lkIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6
OnJlbW92ZShjb25zdCBSZWNlaXZlck1hdGNoZXImIG1hdGNoZXIpCiAgICAgdWludDhfdCByZWNl
aXZlck5hbWUgPSBzdGF0aWNfY2FzdDx1aW50OF90PigqbWF0Y2hlci5yZWNlaXZlck5hbWUpOwog
ICAgIGlmICghbWF0Y2hlci5kZXN0aW5hdGlvbklELmhhc192YWx1ZSgpKSB7CiAgICAgICAgIGF1
dG8gcmVzdWx0ID0gbV9hbnlJRFF1ZXVlcy5yZW1vdmUocmVjZWl2ZXJOYW1lKTsKLSAgICAgICAg
aWYgKHJlc3VsdCkgewotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGFuIGFz
c2VydGlvbi4gU2VlIHdlYmtpdC5vcmcvYi8yMzc2NzQgYW5kIHdlYmtpdC5vcmcvYi8yMzgzOTEu
Ci0gICAgICAgICAgICBBTFdBWVNfTE9HX1dJVEhfU1RSRUFNKHN0cmVhbSA8PCAiTWVzc2FnZVJl
Y2VpdmVRdWV1ZU1hcDo6YWRkSW1wbCAtIGFkZGluZyBkdXBsaWNhdGUgYW55IGlkIHJlY2VpdmVy
ICIgPDwgc3RhdGljX2Nhc3Q8dWludDhfdD4ocmVjZWl2ZXJOYW1lKSk7Ci0gICAgICAgIH0KKyAg
ICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgYXV0byByZXN1bHQgPSBtX3F1ZXVlcy5yZW1vdmUoc3RkOjptYWtlX3BhaXIocmVj
ZWl2ZXJOYW1lLCAqbWF0Y2hlci5kZXN0aW5hdGlvbklEKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IGIxMDFl
MDJmZGI1ZTVhNGE1Njg2MWRjN2VlYmYxYmEyYTFjZTJiOTkuLjg1MDY0ZTU4NmU3ODU5OGJlNTFk
ZjZjOGZlYTQyZDhjMWFlMTZmY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwCkBAIC0yOCw5ICsyOCw0NSBAQAogCiBu
YW1lc3BhY2UgSVBDIHsKIAotU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3RyZWFtQ2xpZW50Q29u
bmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBzaXplX3Qgc2l6ZSkKLSAgICA6IG1fY29u
bmVjdGlvbihjb25uZWN0aW9uKQotICAgICwgbV9idWZmZXIoc2l6ZSkKKy8vIEZJWE1FKGh0dHA6
Ly93ZWJraXQub3JnL2IvMjM4OTg2KTogV29ya2Fyb3VuZCBmb3Igbm90IGJlaW5nIGFibGUgdG8g
ZGVsaXZlciBtZXNzYWdlcyBmcm9tIHRoZSBkZWRpY2F0ZWQgY29ubmVjdGlvbiB0byB0aGUgd29y
ayBxdWV1ZSB0aGUgY2xpZW50IHVzZXMuCitjbGFzcyBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpE
ZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50IGZpbmFsIDogcHVibGljIENvbm5lY3Rpb246OkNsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoRGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudCk7CitwdWJsaWM6CisgICAgRGVkaWNhdGVkQ29u
bmVjdGlvbkNsaWVudChNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyKQorICAgICAgICA6IG1fcmVj
ZWl2ZXIocmVjZWl2ZXIpCisgICAgeworICAgIH0KKyAgICAvLyBDb25uZWN0aW9uOjpDbGllbnQu
CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNv
ZGVyJiBkZWNvZGVyKSBmaW5hbCB7IG1fcmVjZWl2ZXIuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2Rlcik7IH0KKyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8RW5jb2Rlcj4mIHJl
cGx5RW5jb2RlcikgZmluYWwgeyByZXR1cm4gbV9yZWNlaXZlci5kaWRSZWNlaXZlU3luY01lc3Nh
Z2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsgfQorICAgIHZvaWQgZGlkQ2xv
c2UoQ29ubmVjdGlvbiYpIGZpbmFsIHsgfSAvLyBDbGllbnQgaXMgZXhwZWN0ZWQgdG8gbGlzdGVu
IHRvIENvbm5lY3Rpb246OmRpZENsb3NlKCkgZnJvbSB0aGUgY29ubmVjdGlvbiBpdCBzZW50IHRv
IHRoZSBkZWRpY2F0ZWQgY29ubmVjdGlvbiB0by4KKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZShDb25uZWN0aW9uJiwgTWVzc2FnZU5hbWUpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0gLy8gVGhlIHNlbmRlciBpcyBleHBlY3RlZCB0byBiZSB0cnVzdGVkLCBzbyBhbGwg
aW52YWxpZCBtZXNzYWdlcyBhcmUgcHJvZ3JhbW1pbmcgZXJyb3JzLgorcHJpdmF0ZToKKyAgICBN
ZXNzYWdlUmVjZWl2ZXImIG1fcmVjZWl2ZXI7Cit9OworCitTdHJlYW1DbGllbnRDb25uZWN0aW9u
OjpTdHJlYW1Db25uZWN0aW9uV2l0aERlZGljYXRlZENvbm5lY3Rpb24gU3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6Y3JlYXRlV2l0aERlZGljYXRlZENvbm5lY3Rpb24oTWVzc2FnZVJlY2VpdmVyJiBy
ZWNlaXZlciwgc2l6ZV90IGJ1ZmZlclNpemUpCit7CisgICAgYXV0byBjb25uZWN0aW9uSWRlbnRp
ZmllcnMgPSBDb25uZWN0aW9uOjpjcmVhdGVDb25uZWN0aW9uSWRlbnRpZmllclBhaXIoKTsKKyAg
ICAvLyBDcmVhdGUgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiB3aXRoICJzZXJ2ZXIiIHR5cGUgQ29u
bmVjdGlvbi4gVGhlIGNhbGxlciB3aWxsIHNlbmQgdGhlICJjbGllbnQiIHR5cGUgY29ubmVjdGlv
biBpZGVudGlmaWVyIHZpYQorICAgIC8vIElQQyB0byB0aGUgb3RoZXIgc2lkZSwgd2hlcmUgU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbiB3aWxsIGJlIGNyZWF0ZWQgd2l0aCAiY2xpZW50IiB0eXBlIENv
bm5lY3Rpb24uCisgICAgLy8gRm9yIENvbm5lY3Rpb24sICJzZXJ2ZXIiIG1lYW5zIHRoZSBjb25u
ZWN0aW9uIHdoaWNoIHdhcyBjcmVhdGVkIGZpcnN0LCB0aGUgY29ubmVjdGlvbiB3aGljaCBpcyBu
b3Qgc2VudCB0aHJvdWdoIElQQyB0byBvdGhlciBwYXJ0eS4KKyAgICAvLyBGb3IgQ29ubmVjdGlv
biwgImNsaWVudCIgbWVhbnMgdGhlIGNvbm5lY3Rpb24gd2hpY2ggd2FzIGVzdGFibGlzaGVkIGJ5
IHJlY2VpdmluZyBpdCB0aHJvdWdoIElQQyBhbmQgY3JlYXRpbmcgSVBDOjpDb25uZWN0aW9uIG91
dCBmcm9tIHRoZSBpZGVudGlmaWVyLgorICAgIC8vIFRoZSAiQ2xpZW50IiBpbiBTdHJlYW1DbGll
bnRDb25uZWN0aW9uIG1lYW5zIHRoZSBwYXJ0eSB0aGF0IG1vc3RseSBkb2VzIHNlbmRpbmcsIGUu
Zy4gdW50cnVzdGVkIHBhcnR5LgorICAgIC8vIFRoZSAiU2VydmVyIiBpbiBTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uIG1lYW5zIHRoZSBwYXJ0eSB0aGF0IG1vc3RseSBkb2VzIHJlY2VpdmluZywgZS5n
LiB0aGUgdHJ1c3RlZCBwYXJ0eSB3aGljaCBob2xkcyB0aGUgZGVzdGluYXRpb24gb2JqZWN0IHRv
IGNvbW11bmljYXRlIHdpdGguCisgICAgYXV0byBkZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50ID0g
bWFrZVVuaXF1ZTxEZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50PihyZWNlaXZlcik7CisgICAgYXV0
byBkZWRpY2F0ZWRDb25uZWN0aW9uID0gQ29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQ29ubmVjdGlv
bihjb25uZWN0aW9uSWRlbnRpZmllcnMtPnNlcnZlciwgKmRlZGljYXRlZENvbm5lY3Rpb25DbGll
bnQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTdHJlYW1DbGllbnRDb25uZWN0aW9uPiBzdHJlYW1D
b25uZWN0aW9uIHsgbmV3IFN0cmVhbUNsaWVudENvbm5lY3Rpb24oV1RGTW92ZShkZWRpY2F0ZWRD
b25uZWN0aW9uKSwgYnVmZmVyU2l6ZSwgV1RGTW92ZShkZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50
KSkgfTsKKyAgICAvLyBGSVhNRShodHRwOi8vd2Via2l0Lm9yZy9iMjM4OTQ0KTogTWFrZSBJUEM6
OkF0dGFjaG1lbnQgcmVhbGx5IG1vdmFibGUgb24gT1MoREFSV0lOKS4KKyAgICByZXR1cm4geyBX
VEZNb3ZlKHN0cmVhbUNvbm5lY3Rpb24pLCBXVEZNb3ZlKGNvbm5lY3Rpb25JZGVudGlmaWVycy0+
Y2xpZW50KSB9OworIworfQorCitTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRD
b25uZWN0aW9uKFJlZjxDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIHNpemVfdCBidWZmZXJTaXpl
LCBzdGQ6OnVuaXF1ZV9wdHI8RGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudD4mJiBkZWRpY2F0ZWRD
b25uZWN0aW9uQ2xpZW50KQorICAgIDogbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikp
CisgICAgLCBtX2RlZGljYXRlZENvbm5lY3Rpb25DbGllbnQoV1RGTW92ZShkZWRpY2F0ZWRDb25u
ZWN0aW9uQ2xpZW50KSkKKyAgICAsIG1fYnVmZmVyKGJ1ZmZlclNpemUpCiB7CiAgICAgLy8gUmVh
ZCBzdGFydHMgZnJvbSAwIHdpdGggbGltaXQgb2YgMCBhbmQgcmVhZGVyIHNsZWVwaW5nLgogICAg
IHNoYXJlZENsaWVudE9mZnNldCgpLnN0b3JlKENsaWVudE9mZnNldDo6c2VydmVySXNTbGVlcGlu
Z1RhZywgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CkBAIC0zOCw2ICs3NCwyOCBAQCBTdHJl
YW1DbGllbnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIHNpemVfdCBzaQogICAgIHNoYXJlZENsaWVudExpbWl0KCkuc3RvcmUoc3RhdGlj
X2Nhc3Q8Q2xpZW50TGltaXQ+KDApLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKIH0KIAor
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbihDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBzaXplX3QgYnVmZmVyU2l6ZSkKKyAgICA6IFN0cmVhbUNsaWVudENvbm5l
Y3Rpb24oUmVmIHsgY29ubmVjdGlvbiB9LCBidWZmZXJTaXplLCB7IH0pCit7Cit9CisKK1N0cmVh
bUNsaWVudENvbm5lY3Rpb246On5TdHJlYW1DbGllbnRDb25uZWN0aW9uKCkKK3sKKyAgICBBU1NF
UlQoIW1fZGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudCB8fCAhbV9jb25uZWN0aW9uLT5pc1ZhbGlk
KCkpOworfQorCit2b2lkIFN0cmVhbUNsaWVudENvbm5lY3Rpb246Om9wZW4oKQoreworICAgIGlm
IChtX2RlZGljYXRlZENvbm5lY3Rpb25DbGllbnQpCisgICAgICAgIG1fY29ubmVjdGlvbi0+b3Bl
bigpOworfQorCit2b2lkIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OmludmFsaWRhdGUoKQorewor
ICAgIGlmIChtX2RlZGljYXRlZENvbm5lY3Rpb25DbGllbnQpCisgICAgICAgIG1fY29ubmVjdGlv
bi0+aW52YWxpZGF0ZSgpOworfQorCiB2b2lkIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNldFdh
a2VVcFNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSkKIHsKICAgICBtX3dha2VV
cFNlbWFwaG9yZSA9IFdURk1vdmUoc2VtYXBob3JlKTsKQEAgLTgzLDQgKzE0MSw5IEBAIFN0cmVh
bUNvbm5lY3Rpb25CdWZmZXImIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OmJ1ZmZlckZvclRlc3Rp
bmcoKQogICAgIHJldHVybiBtX2J1ZmZlcjsKIH0KIAorQ29ubmVjdGlvbiYgU3RyZWFtQ2xpZW50
Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvclRlc3RpbmcoKQoreworICAgIHJldHVybiBtX2Nvbm5l
Y3Rpb24uZ2V0KCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaAppbmRleCAyYjQ3ZTI1ZWNiYzExODI0OTFkMmRmZGU3
MjgwZDdiYzMwNTExZTc0Li40ZTQyMGQ0ZmY2MTViNTcwZWUwYjUyMjY5Mjg5YjM0NjgwMWY3N2Zl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29u
bmVjdGlvbi5oCkBAIC01Nyw4ICs1NywzMSBAQCBjbGFzcyBTdHJlYW1DbGllbnRDb25uZWN0aW9u
IGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShTdHJlYW1DbGllbnRDb25uZWN0aW9uKTsKIHB1YmxpYzoKKyAgICAvLyBDcmVhdGVz
IFN0cmVhbUNsaWVudENvbm5lY3Rpb24gd2hlcmUgdGhlIG91dCBvZiBzdHJlYW0gbWVzc2FnZXMg
YW5kIHNlcnZlciByZXBsaWVzIGFyZQorICAgIC8vIHNlbnQgdGhyb3VnaCB0aGUgcGFzc2VkIElQ
Qzo6Q29ubmVjdGlvbi4gVGhlIG1lc3NhZ2VzIGZyb20gdGhlIHNlcnZlciBhcmUgZGVsaXZlcmVk
IHRvCisgICAgLy8gdGhlIGNhbGxlciB0aHJvdWdoIHRoZSBwYXNzZWQgSVBDOjpDb25uZWN0aW9u
LgorICAgIC8vIE5vdGU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgb25seSBpbiBjYXNl
cyB3aGVyZSB0aGUKKyAgICAvLyBzdHJlYW0gc2VydmVyIHN0YXJ0cyBsaXN0ZW5pbmcgdG8gbWVz
c2FnZXMgd2l0aCBuZXcgaWRlbnRpZmllcnMgb24gdGhlIHNhbWUgdGhyZWFkIGFzCisgICAgLy8g
aW4gd2hpY2ggdGhlIHNlcnZlciBJUEM6OkNvbm5lY3Rpb24gZGlzcGF0Y2ggbWVzc2FnZXMuIEF0
IHRoZSB0aW1lIG9mIHdyaXRpbmcsCisgICAgLy8gSVBDOjpDb25uZWN0aW9uIGRpc3BhdGNoZXMg
bWVzc2FnZXMgb25seSBpbiBtYWluIHRocmVhZC4KICAgICBTdHJlYW1DbGllbnRDb25uZWN0aW9u
KENvbm5lY3Rpb24mLCBzaXplX3QgYnVmZmVyU2l6ZSk7CiAKKyAgICBzdHJ1Y3QgU3RyZWFtQ29u
bmVjdGlvbldpdGhEZWRpY2F0ZWRDb25uZWN0aW9uIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFN0cmVhbUNsaWVudENvbm5lY3Rpb24+IHN0cmVhbUNvbm5lY3Rpb247CisgICAgICAgIEF0dGFj
aG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXI7CisgICAgICAgIC8vIEZJWE1FOiBPbmNlIElQQyBj
YW4gdHJlYXQgaGFuZGxlcyBhcyBmaXJzdCBjbGFzcyBvYmplY3RzLCBhZGQgc3RyZWFtIGJ1ZmZl
ciBhcworICAgICAgICAvLyBhIGhhbmRsZSBoZXJlLgorICAgIH07CisKKyAgICAvLyBDcmVhdGVz
IFN0cmVhbUNsaWVudENvbm5lY3Rpb24gd2hlcmUgdGhlIG91dCBvZiBzdHJlYW0gbWVzc2FnZXMg
YW5kIHNlcnZlciByZXBsaWVzIGFyZQorICAgIC8vIHNlbnQgdGhyb3VnaCBhIGRlZGlkY2F0ZWQs
IG5ldyBJUEM6OkNvbm5lY3Rpb24uIFRoZSBtZXNzYWdlcyBmcm9tIHRoZSBzZXJ2ZXIgYXJlIGRl
bGl2ZXJlZCB0bworICAgIC8vIHRoZSBjYWxsZXIgdGhyb3VnaCB0aGUgcGFzc2VkIElQQzo6TWVz
c2FnZVJlY2VpdmVyLgorICAgIC8vIFRoZSBjYWxsZXIgc2hvdWxkIHNlbmQgU3RyZWFtQ29ubmVj
dGlvbldpdGhEZWRpY2F0ZWRDb25uZWN0aW9uOjpjb25uZWN0aW9uSWRlbnRpZmllciBhbmQKKyAg
ICAvLyBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzdHJlYW1CdWZmZXIoKSB0byB0aGUgc2VydmVy
IHZpYSBhbiBleGlzdGluZyBJUEM6OkNvbm5lY3Rpb24uCisgICAgc3RhdGljIFN0cmVhbUNvbm5l
Y3Rpb25XaXRoRGVkaWNhdGVkQ29ubmVjdGlvbiBjcmVhdGVXaXRoRGVkaWNhdGVkQ29ubmVjdGlv
bihNZXNzYWdlUmVjZWl2ZXImLCBzaXplX3QgYnVmZmVyU2l6ZSk7CisKKyAgICB+U3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbigpOworCiAgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYgc3RyZWFtQnVm
ZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KICAgICB2b2lkIHNldFdha2VVcFNlbWFwaG9yZShJ
UEM6OlNlbWFwaG9yZSYmKTsKICAgICBib29sIGhhc1dha2VVcFNlbWFwaG9yZSgpIGNvbnN0IHsg
cmV0dXJuIG1fd2FrZVVwU2VtYXBob3JlLmhhc192YWx1ZSgpOyB9CkBAIC03MCw2ICs5Myw5IEBA
IHB1YmxpYzoKICAgICB9CiAgICAgdm9pZCBzZW5kRGVmZXJyZWRXYWtlVXBNZXNzYWdlSWZOZWVk
ZWQoKTsKIAorICAgIHZvaWQgb3BlbigpOworICAgIHZvaWQgaW52YWxpZGF0ZSgpOworCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlLCBP
YmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFRpbWVvdXQpOwogCiAgICAgdXNpbmcg
U2VuZFN5bmNSZXN1bHQgPSBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdDsKQEAgLTgwLDkgKzEw
NiwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseShP
YmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFRpbWVvdXQsIE9wdGlvblNldDxXYWl0
Rm9yT3B0aW9uPiA9IHsgfSk7CiAKICAgICBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiBidWZmZXJG
b3JUZXN0aW5nKCk7CisgICAgQ29ubmVjdGlvbiYgY29ubmVjdGlvbkZvclRlc3RpbmcoKTsKIAog
cHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU0lQQ1N0
cmVhbUNsaWVudENvbm5lY3Rpb247CisgICAgY2xhc3MgRGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVu
dDsKKyAgICBTdHJlYW1DbGllbnRDb25uZWN0aW9uKFJlZjxDb25uZWN0aW9uPiYmLCBzaXplX3Qg
YnVmZmVyU2l6ZSwgc3RkOjp1bmlxdWVfcHRyPERlZGljYXRlZENvbm5lY3Rpb25DbGllbnQ+JiYp
OwogCiAgICAgc3RydWN0IFNwYW4gewogICAgICAgICB1aW50OF90KiBkYXRhOwpAQCAtMTIyLDE0
ICsxNTAsMTYgQEAgcHJpdmF0ZToKICAgICB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIuZGF0YSgpOyB9CiAgICAgc2l6ZV90IGRhdGFTaXplKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIuZGF0YVNpemUoKTsgfQogCi0gICAgQ29ubmVjdGlvbiYgbV9jb25uZWN0aW9uOwor
ICAgIFJlZjxDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAgc3RkOjp1bmlxdWVfcHRyPERl
ZGljYXRlZENvbm5lY3Rpb25DbGllbnQ+IG1fZGVkaWNhdGVkQ29ubmVjdGlvbkNsaWVudDsKICAg
ICB1aW50NjRfdCBtX2N1cnJlbnREZXN0aW5hdGlvbklEIHsgMCB9OwotCiAgICAgc2l6ZV90IG1f
Y2xpZW50T2Zmc2V0IHsgMCB9OwogICAgIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgbV9idWZmZXI7
CiAgICAgc3RkOjpvcHRpb25hbDxTZW1hcGhvcmU+IG1fd2FrZVVwU2VtYXBob3JlOwogICAgIHVu
c2lnbmVkIG1fcmVtYWluaW5nTWVzc2FnZUNvdW50QmVmb3JlU2VuZGluZ1dha2VVcCB7IDAgfTsK
ICAgICB1bnNpZ25lZCBtX3dha2VVcE1lc3NhZ2VIeXN0ZXJlc2lzIHsgMCB9OworCisgICAgZnJp
ZW5kIGNsYXNzIFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6SlNJUENTdHJlYW1DbGllbnRDb25uZWN0
aW9uOwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KQEAgLTE0Niw3ICsx
NzYsNyBAQCBib29sIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmQoVCYmIG1lc3NhZ2UsIE9i
amVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRAogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogICAgIHNlbmRQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlKFdURk1vdmUoKnNwYW4p
KTsKLSAgICBpZiAoIW1fY29ubmVjdGlvbi5zZW5kKFdURk1vdmUobWVzc2FnZSksIGRlc3RpbmF0
aW9uSUQsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9y
U3luY1JlcGx5KSkKKyAgICBpZiAoIW1fY29ubmVjdGlvbi0+c2VuZChXVEZNb3ZlKG1lc3NhZ2Up
LCBkZXN0aW5hdGlvbklELCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVu
V2FpdGluZ0ZvclN5bmNSZXBseSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KQEAgLTE4MSwxMyArMjExLDEzIEBAIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNl
bmRTeW5jUmVzdWx0IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmRTeW5jKFQmJiBtZXNzCiAg
ICAgICAgICAgICByZXR1cm4gV1RGTW92ZSgqbWF5YmVTZW5kUmVzdWx0KTsKICAgICB9CiAgICAg
c2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoV1RGTW92ZSgqc3BhbikpOwotICAgIHJldHVy
biBtX2Nvbm5lY3Rpb24uc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSks
IGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCk7CisgICAgcmV0dXJuIG1fY29ubmVj
dGlvbi0+c2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0
aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+CiBib29sIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OndhaXRGb3JBbmREaXNwYXRj
aEltbWVkaWF0ZWx5KE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgVGltZW91dCB0
aW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMpCiB7Ci0gICAg
cmV0dXJuIG1fY29ubmVjdGlvbi53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxUPihkZXN0
aW5hdGlvbklELCB0aW1lb3V0LCB3YWl0Rm9yT3B0aW9ucyk7CisgICAgcmV0dXJuIG1fY29ubmVj
dGlvbi0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8VD4oZGVzdGluYXRpb25JRCwgdGlt
ZW91dCwgd2FpdEZvck9wdGlvbnMpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMTk1
LDggKzIyNSw4IEBAIHN0ZDo6b3B0aW9uYWw8U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U2VuZFN5
bmNSZXN1bHQ+IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyCiB7CiAgICAgLy8gSW4gdGhpcyBm
dW5jdGlvbiwgU2VuZFN5bmNSZXN1bHQgeyB9IG1lYW5zIGVycm9yIGhhcHBlbmVkIGFuZCBjYWxs
ZXIgc2hvdWxkIHN0b3AgcHJvY2Vzc2luZy4KICAgICAvLyBzdGQ6Om51bGxvcHQgbWVhbnMgd2Ug
Y291bGRuJ3Qgc2VuZCB0aHJvdWdoIHRoZSBzdHJlYW0sIHNvIHRyeSBzZW5kaW5nIG91dCBvZiBz
dHJlYW0uCi0gICAgYXV0byBzeW5jUmVxdWVzdElEID0gbV9jb25uZWN0aW9uLm1ha2VTeW5jUmVx
dWVzdElEKCk7Ci0gICAgaWYgKCFtX2Nvbm5lY3Rpb24ucHVzaFBlbmRpbmdTeW5jUmVxdWVzdElE
KHN5bmNSZXF1ZXN0SUQpKQorICAgIGF1dG8gc3luY1JlcXVlc3RJRCA9IG1fY29ubmVjdGlvbi0+
bWFrZVN5bmNSZXF1ZXN0SUQoKTsKKyAgICBpZiAoIW1fY29ubmVjdGlvbi0+cHVzaFBlbmRpbmdT
eW5jUmVxdWVzdElEKHN5bmNSZXF1ZXN0SUQpKQogICAgICAgICByZXR1cm4gU2VuZFN5bmNSZXN1
bHQgeyB9OwogCiAgICAgYXV0byByZXN1bHQgPSBbJl0oKSAtPiBzdGQ6Om9wdGlvbmFsPFNlbmRT
eW5jUmVzdWx0PiB7CkBAIC0yMjAsOSArMjUwLDkgQEAgc3RkOjpvcHRpb25hbDxTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdD4gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6dHIK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX2NsaWVudE9mZnNl
dCA9IDA7Ci0gICAgICAgIHJldHVybiBtX2Nvbm5lY3Rpb24ud2FpdEZvclN5bmNSZXBseShzeW5j
UmVxdWVzdElELCBUOjpuYW1lKCksIHRpbWVvdXQsIHsgfSk7CisgICAgICAgIHJldHVybiBtX2Nv
bm5lY3Rpb24tPndhaXRGb3JTeW5jUmVwbHkoc3luY1JlcXVlc3RJRCwgVDo6bmFtZSgpLCB0aW1l
b3V0LCB7IH0pOwogICAgIH0oKTsKLSAgICBtX2Nvbm5lY3Rpb24ucG9wUGVuZGluZ1N5bmNSZXF1
ZXN0SUQoc3luY1JlcXVlc3RJRCk7CisgICAgbV9jb25uZWN0aW9uLT5wb3BQZW5kaW5nU3luY1Jl
cXVlc3RJRChzeW5jUmVxdWVzdElEKTsKICAgICBpZiAocmVzdWx0ICYmICpyZXN1bHQpIHsKICAg
ICAgICAgYXV0byYgZGVjb2RlciA9ICoqcmVzdWx0OwogICAgICAgICBzdGQ6Om9wdGlvbmFsPHR5
cGVuYW1lIFQ6OlJlcGx5QXJndW1lbnRzPiByZXBseUFyZ3VtZW50czsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXgg
MDU0NjM3MmJmYTkyYTMxYWRmZmU4NjhkMTAyOTQyMmNlMTk5MDU2YS4uYmE1Y2Y3NGZmMTRjYjA4
ZjVmYzNhYjYxYTYzN2EwNzY1ZTljYzc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTI4LDE0ICsyOCw4MSBA
QAogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25X
b3JrUXVldWUuaCIKLQorI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogbmFtZXNwYWNlIElQQyB7CituYW1lc3BhY2UgeworLy8gRklYTUUoaHR0cDovL3dl
YmtpdC5vcmcvYi8yMzg5ODYpOiBXb3JrYXJvdW5kIGZvciBub3QgYmVpbmcgYWJsZSB0byBkZWxp
dmVyIG1lc3NhZ2VzIGZyb20gdGhlIGRlZGljYXRlZCBjb25uZWN0aW9uIHRvIHRoZSB3b3JrIHF1
ZXVlIHRoZSBjbGllbnQgdXNlcy4KK2NsYXNzIERlZGljYXRlZENvbm5lY3Rpb25DbGllbnQgZmlu
YWwgOiBwdWJsaWMgQ29ubmVjdGlvbjo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50
KTsKK3B1YmxpYzoKKyAgICBEZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50KCkgPSBkZWZhdWx0Owor
ICAgIC8vIENvbm5lY3Rpb246OkNsaWVudC4KKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIpIGZpbmFsIHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KKyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8RW5jb2Rlcj4mIHJlcGx5
RW5jb2RlcikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdm9pZCBkaWRDbG9zZShDb25uZWN0aW9uJikgZmluYWwgeyB9IC8vIENsaWVudCBpcyBleHBl
Y3RlZCB0byBsaXN0ZW4gdG8gQ29ubmVjdGlvbjo6ZGlkQ2xvc2UoKSBmcm9tIHRoZSBjb25uZWN0
aW9uIGl0IHNlbnQgdG8gdGhlIGRlZGljYXRlZCBjb25uZWN0aW9uIHRvLgorICAgIHZvaWQgZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKENvbm5lY3Rpb24mLCBNZXNzYWdlTmFtZSkgZmluYWwgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfSAvLyBUaGUgc2VuZGVyIGlzIGV4cGVjdGVkIHRvIGJlIHRy
dXN0ZWQsIHNvIGFsbCBpbnZhbGlkIG1lc3NhZ2VzIGFyZSBwcm9ncmFtbWluZyBlcnJvcnMuCitw
cml2YXRlOgorfTsKKworfQorCitSZWY8U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbjo6Y3JlYXRlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0cmVhbUNvbm5l
Y3Rpb25CdWZmZXImJiBzdHJlYW1CdWZmZXIsIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmIHdv
cmtRdWV1ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uKFJlZiB7IGNvbm5lY3Rpb24gfSwgV1RGTW92ZShzdHJlYW1CdWZmZXIpLCB3b3JrUXVldWUs
IEhhc0RlZGljYXRlZENvbm5lY3Rpb246Ok5vKSk7Cit9CisKK1JlZjxTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uPiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGVXaXRoRGVkaWNhdGVkQ29ubmVj
dGlvbihBdHRhY2htZW50JiYgY29ubmVjdGlvbklkZW50aWZpZXIsIFN0cmVhbUNvbm5lY3Rpb25C
dWZmZXImJiBzdHJlYW1CdWZmZXIsIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmIHdvcmtRdWV1
ZSkKK3sKKyNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKKyAgICBJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIgY29ubmVjdGlvbkhhbmRsZSB7IGNvbm5lY3Rpb25JZGVudGlmaWVyLnJlbGVh
c2UoKS5yZWxlYXNlKCkgfTsKKyNlbGlmIE9TKERBUldJTikKKyAgICBJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIgY29ubmVjdGlvbkhhbmRsZSB7IGNvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQo
KSB9OworI2VsaWYgT1MoV0lORE9XUykKKyAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIg
Y29ubmVjdGlvbkhhbmRsZSB7IGNvbm5lY3Rpb25JZGVudGlmaWVyLmhhbmRsZSgpIH07CisjZWxz
ZQorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
IGNvbm5lY3Rpb25IYW5kbGUgeyB9OworI2VuZGlmCisgICAgc3RhdGljIExhenlOZXZlckRlc3Ry
b3llZDxEZWRpY2F0ZWRDb25uZWN0aW9uQ2xpZW50PiBzX2RlZGljYXRlZENvbm5lY3Rpb25DbGll
bnQ7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIHNfb25jZUZsYWc7CisgICAgc3RkOjpjYWxs
X29uY2Uoc19vbmNlRmxhZywgW10geworICAgICAgICBzX2RlZGljYXRlZENvbm5lY3Rpb25DbGll
bnQuY29uc3RydWN0KCk7CisgICAgfSk7CisgICAgYXV0byBjb25uZWN0aW9uID0gSVBDOjpDb25u
ZWN0aW9uOjpjcmVhdGVDbGllbnRDb25uZWN0aW9uKGNvbm5lY3Rpb25IYW5kbGUsIHNfZGVkaWNh
dGVkQ29ubmVjdGlvbkNsaWVudC5nZXQoKSk7CisgICAgYXV0byBzdHJlYW1Db25uZWN0aW9uID0g
YWRvcHRSZWYoKm5ldyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbiks
IFdURk1vdmUoc3RyZWFtQnVmZmVyKSwgd29ya1F1ZXVlLCBIYXNEZWRpY2F0ZWRDb25uZWN0aW9u
OjpZZXMpKTsKKyAgICByZXR1cm4gc3RyZWFtQ29ubmVjdGlvbjsKK30KIAotU3RyZWFtU2VydmVy
Q29ubmVjdGlvbjo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtLCBTdHJlYW1Db25uZWN0aW9uV29ya1F1
ZXVlJiB3b3JrUXVldWUpCi0gICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKK1N0cmVhbVNl
cnZlckNvbm5lY3Rpb246OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24oUmVmPENvbm5lY3Rpb24+JiYg
Y29ubmVjdGlvbiwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbSwgU3RyZWFtQ29ubmVj
dGlvbldvcmtRdWV1ZSYgd29ya1F1ZXVlLCBIYXNEZWRpY2F0ZWRDb25uZWN0aW9uIGhhc0RlZGlj
YXRlZENvbm5lY3Rpb24pCisgICAgOiBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkK
ICAgICAsIG1fd29ya1F1ZXVlKHdvcmtRdWV1ZSkKICAgICAsIG1fYnVmZmVyKFdURk1vdmUoc3Ry
ZWFtKSkKKyAgICAsIG1faGFzRGVkaWNhdGVkQ29ubmVjdGlvbihoYXNEZWRpY2F0ZWRDb25uZWN0
aW9uID09IEhhc0RlZGljYXRlZENvbm5lY3Rpb246OlllcykKK3sKK30KKworU3RyZWFtU2VydmVy
Q29ubmVjdGlvbjo6flN0cmVhbVNlcnZlckNvbm5lY3Rpb24oKQogeworICAgIEFTU0VSVCghbV9o
YXNEZWRpY2F0ZWRDb25uZWN0aW9uIHx8ICFtX2Nvbm5lY3Rpb24tPmlzVmFsaWQoKSk7Cit9CisK
K3ZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjo6b3BlbigpCit7CisgICAgaWYgKG1faGFzRGVk
aWNhdGVkQ29ubmVjdGlvbikgeworICAgICAgICAvLyBGSVhNRShodHRwOi8vd2Via2l0Lm9yZy9i
LzIzODk4Nik6IFdvcmthcm91bmQgZm9yIG5vdCBiZWluZyBhYmxlIHRvIGRlbGl2ZXIgbWVzc2Fn
ZXMgZnJvbSB0aGUgZGVkaWNhdGVkIGNvbm5lY3Rpb24gdG8gdGhlIHdvcmsgcXVldWUgdGhlIGNs
aWVudCB1c2VzLgorICAgICAgICBtX2Nvbm5lY3Rpb24tPmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUo
KnRoaXMsIHsgfSk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+b3BlbigpOworICAgIH0KK30KKwor
dm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOjppbnZhbGlkYXRlKCkKK3sKKyAgICBpZiAobV9o
YXNEZWRpY2F0ZWRDb25uZWN0aW9uKSB7CisgICAgICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlTWVz
c2FnZVJlY2VpdmVRdWV1ZSh7IH0pOworICAgICAgICBtX2Nvbm5lY3Rpb24tPmludmFsaWRhdGUo
KTsKKyAgICB9CiB9CiAKIHZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRSZWNlaXZp
bmdNZXNzYWdlcyhTdHJlYW1NZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyLCBSZWNlaXZlck5hbWUg
cmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQpAQCAtNDcsMzAgKzExNCwxNSBA
QCB2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb246OnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoU3Ry
ZWFtTWVzc2FnZVJlY2VpdmVyJiByZWNlaQogICAgICAgICBtX3JlY2VpdmVycy5hZGQoa2V5LCBy
ZWNlaXZlcik7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IENhbiB3ZSBhdm9pZCBzeW5jaHJvbm91
cyBkaXNwYXRjaCBoZXJlIGJ5IGFkanVzdGluZyB0aGUgYXNzZXJ0aW9uIGluIGBDb25uZWN0aW9u
OjplbnF1ZXVlTWF0Y2hpbmdNZXNzYWdlc1RvTWVzc2FnZVJlY2VpdmVRdWV1ZWA/Ci0gICAgY2Fs
bE9uTWFpblJ1bkxvb3BBbmRXYWl0KFsmXSB7CisgICAgaWYgKCFtX2hhc0RlZGljYXRlZENvbm5l
Y3Rpb24pCiAgICAgICAgIG1fY29ubmVjdGlvbi0+YWRkTWVzc2FnZVJlY2VpdmVRdWV1ZSgqdGhp
cywgeyByZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQgfSk7Ci0gICAgfSk7CiAgICAgbV93b3Jr
UXVldWUuYWRkU3RyZWFtQ29ubmVjdGlvbigqdGhpcyk7CiB9CiAKLXZvaWQgU3RyZWFtU2VydmVy
Q29ubmVjdGlvbjo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZlck5hbWUgcmVjZWl2ZXJO
YW1lKQotewotICAgIGNhbGxPbk1haW5SdW5Mb29wQW5kV2FpdChbJl0gewotICAgICAgICBtX2Nv
bm5lY3Rpb24tPmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUoKnRoaXMsIHsgcmVjZWl2ZXJOYW1lIH0p
OwotICAgIH0pOwotICAgIG1fd29ya1F1ZXVlLmFkZFN0cmVhbUNvbm5lY3Rpb24oKnRoaXMpOwot
fQotCi12b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb246OnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhS
ZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lKQotewotICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlTWVz
c2FnZVJlY2VpdmVRdWV1ZSh7IHJlY2VpdmVyTmFtZSB9KTsKLSAgICBtX3dvcmtRdWV1ZS5yZW1v
dmVTdHJlYW1Db25uZWN0aW9uKCp0aGlzKTsKLX0KLQogdm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uOjpzdG9wUmVjZWl2aW5nTWVzc2FnZXMoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlUXVldWUoeyByZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQgfSk7CisgICAgaWYgKCFt
X2hhc0RlZGljYXRlZENvbm5lY3Rpb24pCisgICAgICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlTWVz
c2FnZVJlY2VpdmVRdWV1ZSh7IHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCB9KTsKICAgICBt
X3dvcmtRdWV1ZS5yZW1vdmVTdHJlYW1Db25uZWN0aW9uKCp0aGlzKTsKIAogICAgIGF1dG8ga2V5
ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4ocmVjZWl2ZXJOYW1lKSwgZGVz
dGluYXRpb25JRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggYWJlZjRlY2ZlM2U5Mzc4YzE3ZmFiZTM0ZDNjMjQ4M2Qx
NDA3NDdiZC4uNzEzNWQ0NjNhM2YxMjRjN2IxMGFlYjM0ZDljNzhkYjgwZWE2NDRmYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24u
aApAQCAtNTMsMTkgKzUzLDI1IEBAIGNsYXNzIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU7CiBj
bGFzcyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFN0cmVhbVNlcnZlckNvbm5lY3Rpb24+LCBwcml2YXRlIE1lc3NhZ2VSZWNlaXZlUXVl
dWUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0cmVhbVNlcnZlckNvbm5lY3Rpb24pOwog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gY3JlYXRlKENv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW1CdWZm
ZXIsIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmIHdvcmtRdWV1ZSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmVhbVNlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbiwg
V1RGTW92ZShzdHJlYW1CdWZmZXIpLCB3b3JrUXVldWUpKTsKLSAgICB9Ci0gICAgflN0cmVhbVNl
cnZlckNvbm5lY3Rpb24oKSBmaW5hbCA9IGRlZmF1bHQ7CisgICAgLy8gQ3JlYXRlcyBTdHJlYW1D
bGllbnRDb25uZWN0aW9uIHdoZXJlIHRoZSBvdXQgb2Ygc3RyZWFtIG1lc3NhZ2VzIGFuZCBzZXJ2
ZXIgcmVwbGllcyBhcmUKKyAgICAvLyByZWNlaXZlZCB0aHJvdWdoIHRoZSBwYXNzZWQgSVBDOjpD
b25uZWN0aW9uLiBUaGUgbWVzc2FnZXMgZnJvbSB0aGUgc2VydmVyIGFyZSBzZW50IHRvCisgICAg
Ly8gdGhlIHBhc3NlZCBJUEM6OkNvbm5lY3Rpb24uCisgICAgLy8gTm90ZTogVGhpcyBmdW5jdGlv
biBzaG91bGQgYmUgdXNlZCBvbmx5IGluIGNhc2VzIHdoZXJlIHRoZQorICAgIC8vIHN0cmVhbSBz
ZXJ2ZXIgc3RhcnRzIGxpc3RlbmluZyB0byBtZXNzYWdlcyB3aXRoIG5ldyBpZGVudGlmaWVycyBv
biB0aGUgc2FtZSB0aHJlYWQgYXMKKyAgICAvLyBpbiB3aGljaCB0aGUgc2VydmVyIElQQzo6Q29u
bmVjdGlvbiBkaXNwYXRjaCBtZXNzYWdlcy4gQXQgdGhlIHRpbWUgb2Ygd3JpdGluZywKKyAgICAv
LyBJUEM6OkNvbm5lY3Rpb24gZGlzcGF0Y2hlcyBtZXNzYWdlcyBvbmx5IGluIG1haW4gdGhyZWFk
LgorICAgIHN0YXRpYyBSZWY8U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gY3JlYXRlKENvbm5lY3Rp
b24mLCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYsIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUm
KTsKKworICAgIC8vIENyZWF0ZXMgU3RyZWFtU2VydmVyQ29ubmVjdGlvbiB3aGVyZSB0aGUgb3V0
IG9mIHN0cmVhbSBtZXNzYWdlcyBhbmQgc2VydmVyIHJlcGxpZXMgYXJlCisgICAgLy8gcmVjZWl2
ZWQgdGhyb3VnaCBhIGRlZGlkY2F0ZWQsIG5ldyBJUEM6OkNvbm5lY3Rpb24uIFRoZSBtZXNzYWdl
cyBmcm9tIHRoZSBzZXJ2ZXIgYXJlIHNlbnQgdG8KKyAgICAvLyB0aGUgZGVkaWNhdGVkIGNvbm5l
Y2l0b24uCisgICAgc3RhdGljIFJlZjxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiBjcmVhdGVXaXRo
RGVkaWNhdGVkQ29ubmVjdGlvbihBdHRhY2htZW50JiYgY29ubmVjdGlvbklkZW50aWZpZXIsIFN0
cmVhbUNvbm5lY3Rpb25CdWZmZXImJiwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYpOworICAg
IH5TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uKCkgZmluYWw7CiAKICAgICB2b2lkIHN0YXJ0UmVjZWl2
aW5nTWVzc2FnZXMoU3RyZWFtTWVzc2FnZVJlY2VpdmVyJiwgUmVjZWl2ZXJOYW1lLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklEKTsKICAgICAvLyBTdG9wcyB0aGUgbWVzc2FnZSByZWNlaXB0LiBOb3Rl
OiBhbHJlYWR5IHJlY2VpdmVkIG1lc3NhZ2VzIG1pZ2h0IHN0aWxsIGJlIGRlbGl2ZXJlZC4KICAg
ICB2b2lkIHN0b3BSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQpOwogCi0gICAgdm9pZCBzdGFydFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyTmFt
ZSk7Ci0gICAgdm9pZCBzdG9wUmVjZWl2aW5nTWVzc2FnZXMoUmVjZWl2ZXJOYW1lKTsKLQogICAg
IENvbm5lY3Rpb24mIGNvbm5lY3Rpb24oKSB7IHJldHVybiBtX2Nvbm5lY3Rpb247IH0KIAogICAg
IGVudW0gRGlzcGF0Y2hSZXN1bHQgOiBib29sIHsKQEAgLTc0LDExICs4MCwxNSBAQCBwdWJsaWM6
CiAgICAgfTsKICAgICBEaXNwYXRjaFJlc3VsdCBkaXNwYXRjaFN0cmVhbU1lc3NhZ2VzKHNpemVf
dCBtZXNzYWdlTGltaXQpOwogCisgICAgdm9pZCBvcGVuKCk7CisgICAgdm9pZCBpbnZhbGlkYXRl
KCk7CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CiAg
ICAgdm9pZCBzZW5kU3luY1JlcGx5KENvbm5lY3Rpb246OlN5bmNSZXF1ZXN0SUQsIEFyZ3VtZW50
cyYmLi4uKTsKIAogcHJpdmF0ZToKLSAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uKElQQzo6Q29u
bmVjdGlvbiYsIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiwgU3RyZWFtQ29ubmVjdGlvbldvcmtR
dWV1ZSYpOworICAgIGVudW0gY2xhc3MgSGFzRGVkaWNhdGVkQ29ubmVjdGlvbiA6IGJvb2wgeyBO
bywgWWVzIH07CisgICAgU3RyZWFtU2VydmVyQ29ubmVjdGlvbihSZWY8Q29ubmVjdGlvbj4mJiwg
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmLCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiwgSGFz
RGVkaWNhdGVkQ29ubmVjdGlvbik7CiAKICAgICAvLyBNZXNzYWdlUmVjZWl2ZVF1ZXVlCiAgICAg
dm9pZCBlbnF1ZXVlTWVzc2FnZShDb25uZWN0aW9uJiwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+
JiYpIGZpbmFsOwpAQCAtMTE5LDYgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgRGVxdWU8c3RkOjp1
bmlxdWVfcHRyPERlY29kZXI+PiBtX291dE9mU3RyZWFtTWVzc2FnZXMgV1RGX0dVQVJERURfQllf
TE9DSyhtX291dE9mU3RyZWFtTWVzc2FnZXNMb2NrKTsKIAogICAgIGJvb2wgbV9pc0Rpc3BhdGNo
aW5nU3RyZWFtTWVzc2FnZSB7IGZhbHNlIH07CisgICAgY29uc3QgYm9vbCBtX2hhc0RlZGljYXRl
ZENvbm5lY3Rpb247CiAgICAgTG9jayBtX3JlY2VpdmVyc0xvY2s7CiAgICAgdXNpbmcgUmVjZWl2
ZXJzTWFwID0gSGFzaE1hcDxzdGQ6OnBhaXI8dWludDhfdCwgdWludDY0X3Q+LCBSZWY8U3RyZWFt
TWVzc2FnZVJlY2VpdmVyPj47CiAgICAgUmVjZWl2ZXJzTWFwIG1fcmVjZWl2ZXJzIFdURl9HVUFS
REVEX0JZX0xPQ0sobV9yZWNlaXZlcnNMb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQppbmRleCA5NDcyMzUwZjg1ZjQ5ZDVj
YmJiMjQzNDdkNTkzYmViODYyMTRjODM3Li4wMTlhZTMzNzYzNTE4MjViMDBmZWI1MjQ2NGY5ZjQ0
NWYwNGQ4MDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9D
b25uZWN0aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2Ev
Q29ubmVjdGlvbkNvY29hLm1tCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJDb25uZWN0aW9u
LmgiCiAKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbXBvcnQgIklQQ1Rlc3Rlci5oIgog
I2ltcG9ydCAiSW1wb3J0YW5jZUFzc2VydGlvbi5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2lt
cG9ydCAiTWFjaE1lc3NhZ2UuaCIKQEAgLTU1OCwxMSArNTU5LDE0IEBAIHZvaWQgQ29ubmVjdGlv
bjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcigpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGRl
Y29kZXItPnNldEltcG9ydGFuY2VBc3NlcnRpb24oSW1wb3J0YW5jZUFzc2VydGlvbiB7IGhlYWRl
ciB9KTsKICNlbmRpZgotCisgICAgCiAgICAgaWYgKGRlY29kZXItPm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9uKSB7CiAgICAgICAgIEFTU0VSVChtX2lz
U2VydmVyKTsKLSAgICAgICAgQVNTRVJUKCFtX2lzQ29ubmVjdGVkKTsKICAgICAgICAgQVNTRVJU
KCFtX3NlbmRQb3J0KTsKKyAgICAgICAgaWYgKG1faXNDb25uZWN0ZWQpIHsKKyAgICAgICAgICAg
IEFTU0VSVF9JU19URVNUSU5HX0lQQygpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CiAKICAgICAgICAgTWFjaFBvcnQgcG9ydDsKICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUo
cG9ydCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1N0cmVhbVRlc3Rl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENTdHJlYW1UZXN0ZXIuY3BwCmluZGV4IGFi
YjZhYzQ5ZDY4MTdjZTYwMjBmOWM3ZDNhYzdiMjY1YTYxZmRiMzguLjgyMjY3ZTIxYWRlNjJhOWI2
Njc0NWYzZGM4N2E2Y2E1YzMwYjJlZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0lQQ1N0cmVhbVRlc3Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDU3RyZWFt
VGVzdGVyLmNwcApAQCAtNTUsNiArNTUsNyBAQCBJUENTdHJlYW1UZXN0ZXI6On5JUENTdHJlYW1U
ZXN0ZXIoKSA9IGRlZmF1bHQ7CiB2b2lkIElQQ1N0cmVhbVRlc3Rlcjo6aW5pdGlhbGl6ZSgpCiB7
CiAgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdGFydFJlY2VpdmluZ01lc3NhZ2VzKCp0aGlzLCBN
ZXNzYWdlczo6SVBDU3RyZWFtVGVzdGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPm9wZW4oKTsKICAgICB3
b3JrUXVldWUoKS5kaXNwYXRjaChbdGhpc10gewogICAgICAgICBtX3N0cmVhbUNvbm5lY3Rpb24t
PmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpJUENTdHJlYW1UZXN0ZXJQcm94eTo6V2FzQ3Jl
YXRlZCh3b3JrUXVldWUoKS53YWtlVXBTZW1hcGhvcmUoKSksIG1faWRlbnRpZmllcik7CiAgICAg
fSk7CkBAIC02Miw2ICs2Myw3IEBAIHZvaWQgSVBDU3RyZWFtVGVzdGVyOjppbml0aWFsaXplKCkK
IAogdm9pZCBJUENTdHJlYW1UZXN0ZXI6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPElQQ1N0cmVh
bVRlc3Rlcj4mJiByZWZGcm9tQ29ubmVjdGlvbikKIHsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24t
PmludmFsaWRhdGUoKTsKICAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0b3BSZWNlaXZpbmdNZXNz
YWdlcyhNZXNzYWdlczo6SVBDU3RyZWFtVGVzdGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
aWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICB3b3JrUXVldWUoKS5zdG9wQW5kV2FpdEZvckNv
bXBsZXRpb24oKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rl
ci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmgKaW5kZXggNjhiYjZjYmIxNGY1
OGIxMzc2MWVhZDljZDViMzhhOWM5ZGI5ZmJiZi4uNzAwOTdiODA2YmUzM2ZkZDI1MTBjNDliNWVl
MzM4M2NkN2IxZWFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmgKQEAgLTQ0LDcgKzQ0LDcg
QEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLSNkZWZpbmUgQVNTRVJUX0lTX1RFU1RJTkdfSVBD
KCkgQVNTRVJUKGlzVGVzdGluZ0lQQygpLCAiVW50cnVzdGVkIGNvbm5lY3Rpb24gc2VudCBpbnZh
bGlkIGRhdGEuIFNob3VsZCBvbmx5IGhhcHBlbiB3aGVuIHRlc3RpbmcgSVBDLiIpCisjZGVmaW5l
IEFTU0VSVF9JU19URVNUSU5HX0lQQygpIEFTU0VSVChXZWJLaXQ6OmlzVGVzdGluZ0lQQygpLCAi
VW50cnVzdGVkIGNvbm5lY3Rpb24gc2VudCBpbnZhbGlkIGRhdGEuIFNob3VsZCBvbmx5IGhhcHBl
biB3aGVuIHRlc3RpbmcgSVBDLiIpCiAKICNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAppbmRleCA1ZTkyMmY3OWE4
ZmViYjczNjYyMGU4NDgxNzEzZDdjY2Y4ZTc0MDY4Li5hNWNmYzE3MDQ4YWYwMGIzODM2YmRmOTg0
N2Q1MGNhNTM2NjNlYzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5jcHAKQEAgLTU1LDYgKzU1LDcgQEAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYKICAgICBtX2dw
dVByb2Nlc3NDb25uZWN0aW9uLT5hZGRDbGllbnQoKnRoaXMpOwogICAgIG1fZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CiAgICAgbV9n
cHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMsIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCByZW5kZXJpbmdCYWNrZW5kLCBtX3N0cmVhbUNv
bm5lY3Rpb24uc3RyZWFtQnVmZmVyKCkpLCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVz
c2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9u
Lm9wZW4oKTsKICAgICAvLyBUT0RPOiBXZSBtdXN0IHdhaXQgdW50aWwgaW5pdGlhbGl6ZWQsIGJl
Y2F1c2UgYXQgdGhlIG1vbWVudCB3ZSBjYW5ub3QgcmVjZWl2ZSBJUEMgbWVzc2FnZXMKICAgICAv
LyBkdXJpbmcgd2FpdCB3aGlsZSBpbiBzeW5jaHJvbm91cyBzdHJlYW0gc2VuZC4gU2hvdWxkIGJl
IGZpeGVkIGFzIHBhcnQgb2YgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxNzIxMS4KICAgICB3YWl0VW50aWxJbml0aWFsaXplZCgpOwpAQCAtMzM3LDYgKzMzOCw3IEBA
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YWJhbmRvbkdwdVByb2Nlc3MoKQog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkaXNjb25uZWN0R3B1UHJvY2Vzc0lm
TmVlZGVkKCkKIHsKICAgICBpZiAoYXV0byBncHVQcm9jZXNzQ29ubmVjdGlvbiA9IHN0ZDo6ZXhj
aGFuZ2UobV9ncHVQcm9jZXNzQ29ubmVjdGlvbiwgbnVsbHB0cikpIHsKKyAgICAgICAgbV9zdHJl
YW1Db25uZWN0aW9uLmludmFsaWRhdGUoKTsKICAgICAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24t
PnJlbW92ZUNsaWVudCgqdGhpcyk7CiAgICAgICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5tZXNz
YWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSk7CiAgICAgICAgIGdwdVByb2Nlc3NDb25uZWN0
aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6UmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JT
eW5jUmVwbHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCmluZGV4
IGYwMGEwZjY4ZDdkZjZjYjM5Y2Q0NThkYzhlNTViZTBjODE5ZjBhNWMuLjZkMTVhMmM0YWFlODFi
MmNjNGJmNjQ2M2QyOGY4OGY2Y2ZhZDgxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5jcHAKQEAgLTcwLDEzICs3MCwxNCBAQCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6On5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKQogR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24mIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24oKQogewogICAgIGlmICghbV9ncHVQcm9jZXNzQ29ubmVjdGlvbikgewotICAgICAgICBhdXRv
JiBncHVQcm9jZXNzQ29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKCk7Ci0gICAgICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLmFkZENs
aWVudCgqdGhpcyk7Ci0gICAgICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VSZWNlaXZl
ck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
KCkudG9VSW50NjQoKSwgKnRoaXMpOworICAgICAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uID0g
JldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7Cisg
ICAgICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmFkZENsaWVudCgqdGhpcyk7CisKICAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNvbm5lY3Rpb25CdWZmZXJTaXplID0gMSA8PCAyMTsK
LSAgICAgICAgbV9zdHJlYW1Db25uZWN0aW9uID0gbWFrZVVuaXF1ZTxJUEM6OlN0cmVhbUNsaWVu
dENvbm5lY3Rpb24+KGdwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKSwgY29ubmVjdGlv
bkJ1ZmZlclNpemUpOwotICAgICAgICBncHVQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlUmVuZGVyaW5n
QmFja2VuZChtX3BhcmFtZXRlcnMsIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RyZWFtQnVmZmVyKCkp
LCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5
bmNSZXBseSk7Ci0gICAgICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24gPSBncHVQcm9jZXNzQ29u
bmVjdGlvbjsKKyAgICAgICAgYXV0byBbc3RyZWFtQ29ubmVjdGlvbiwgZGVkaWNhdGVkQ29ubmVj
dGlvbkNsaWVudElkZW50aWZlcl0gPSBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OmNyZWF0
ZVdpdGhEZWRpY2F0ZWRDb25uZWN0aW9uKCp0aGlzLCBjb25uZWN0aW9uQnVmZmVyU2l6ZSk7Cisg
ICAgICAgIG1fc3RyZWFtQ29ubmVjdGlvbiA9IFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbik7Cisg
ICAgICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+b3BlbigpOworICAgICAgICBtX2dwdVByb2Nlc3ND
b25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Q3JlYXRlUmVuZGVyaW5nQmFja2VuZChtX3BhcmFtZXRlcnMsIGRlZGljYXRlZENv
bm5lY3Rpb25DbGllbnRJZGVudGlmZXIsIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RyZWFtQnVmZmVy
KCkpLCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0Zv
clN5bmNSZXBseSk7CiAgICAgfQogICAgIHJldHVybiAqbV9ncHVQcm9jZXNzQ29ubmVjdGlvbjsK
IH0KQEAgLTEwMSw2ICsxMDIsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
ZGlzY29ubmVjdEdQVVByb2Nlc3MoKQogICAgIG1fZ2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1vcnkg
PSBudWxscHRyOwogICAgIG1fcmVuZGVyaW5nVXBkYXRlSUQgPSB7IH07CiAgICAgbV9kaWRSZW5k
ZXJpbmdVcGRhdGVJRCA9IHsgfTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPmludmFsaWRhdGUo
KTsKICAgICBtX3N0cmVhbUNvbm5lY3Rpb24gPSBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkuaAppbmRleCBjMDQwMjBkNDRhMzNmNTFjMmNkMWQ0NjQwMzY0
NGIwY2VkZWYwOTFkLi42ZjI2MjllMTk0ODkzMmQ1NDRkZGVjYzdhYjU2MzVlMzVhZGFmODE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTE3Miw5ICsxNzIsMTAg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZsdXNoKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEZs
dXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAg
ICB2b2lkIGRpZEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZUlEIGRpZFJl
bmRlcmluZ1VwZGF0ZUlEKTsKIAorICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uKiBtX2dwdVByb2Nl
c3NDb25uZWN0aW9uIHsgbnVsbHB0ciB9OworICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1f
Y29ubmVjdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpTdHJlYW1DbGllbnRDb25uZWN0
aW9uPiBtX3N0cmVhbUNvbm5lY3Rpb247CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0
aW9uUGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7Ci0gICAgV2Vha1B0cjxHUFVQcm9jZXNzQ29ubmVj
dGlvbj4gbV9ncHVQcm9jZXNzQ29ubmVjdGlvbjsKICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHkgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgeyAqdGhpcyB9OwogICAgIFJlZlB0cjxTaGFy
ZWRNZW1vcnk+IG1fZ2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1vcnk7CiAgICAgV2ViQ29yZTo6VGlt
ZXIgbV9kZXN0cm95R2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1vcnlUaW1lciB7ICp0aGlzLCAmUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkZXN0cm95R2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1v
cnkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUdQVVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5LmNwcAppbmRleCA4NDMwNGE3NzY1ZDc5ZjI3
NTE4ODkxNWFhZGQzMDE4ZWIxNjE2ZGIyLi5hNmQ4ODEyYmFkZDdkOTA1ZGI3Y2IzZDYxMGE0NWIw
NmJmMzNlY2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVUHJveHkuY3BwCkBAIC01MSw2ICs1MSw3
IEBAIFJlbW90ZUdQVVByb3h5OjpSZW1vdGVHUFVQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYg
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIFdlYkdQCiAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+
YWRkQ2xpZW50KCp0aGlzKTsKICAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5tZXNzYWdlUmVj
ZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdQVVByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOwogICAg
IG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVSZW1vdGVHUFUoaWRlbnRpZmllciwgcmVuZGVy
aW5nQmFja2VuZCwgbV9zdHJlYW1Db25uZWN0aW9uLnN0cmVhbUJ1ZmZlcigpKSwgMCwgSVBDOjpT
ZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwor
ICAgIG1fc3RyZWFtQ29ubmVjdGlvbi5vcGVuKCk7CiAgICAgLy8gVE9ETzogV2UgbXVzdCB3YWl0
IHVudGlsIGluaXRpYWxpemVkLCBiZWNhdXNlIGF0IHRoZSBtb21lbnQgd2UgY2Fubm90IHJlY2Vp
dmUgSVBDIG1lc3NhZ2VzCiAgICAgLy8gZHVyaW5nIHdhaXQgd2hpbGUgaW4gc3luY2hyb25vdXMg
c3RyZWFtIHNlbmQuIFNob3VsZCBiZSBmaXhlZCBhcyBwYXJ0IG9mIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcyMTEuCiAgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQo
KTsKQEAgLTY4LDYgKzY5LDcgQEAgdm9pZCBSZW1vdGVHUFVQcm94eTo6Z3B1UHJvY2Vzc0Nvbm5l
Y3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgY29ubmVjdGkKIHZvaWQgUmVtb3Rl
R1BVUHJveHk6OmFiYW5kb25HUFVQcm9jZXNzKCkKIHsKICAgICBhdXRvIGdwdVByb2Nlc3NDb25u
ZWN0aW9uID0gc3RkOjpleGNoYW5nZShtX2dwdVByb2Nlc3NDb25uZWN0aW9uLCBudWxscHRyKTsK
KyAgICBtX3N0cmVhbUNvbm5lY3Rpb24uaW52YWxpZGF0ZSgpOwogICAgIGdwdVByb2Nlc3NDb25u
ZWN0aW9uLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OlJlbW90ZUdQVVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fYmFja2luZy50b1VJ
bnQ2NCgpKTsKICAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uID0gbnVsbHB0cjsKICAgICBtX2xv
c3QgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
SVBDVGVzdGluZ0FQSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENU
ZXN0aW5nQVBJLmNwcAppbmRleCA3M2ZjMDEzNDJjOGI3ZjQxNGNjOGRjMTVjOGJjN2Q1ZDk5YjQ3
NWM0Li5hMGIyNjI0NjhjZjEyZjY4MzVhNzk5MzRlOTM2ZTQwMmE3MTNlNWNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcApAQCAt
NTQxLDEwICs1NDEsMTEgQEAgSlNWYWx1ZVJlZiBKU0lQQ1N0cmVhbUNsaWVudENvbm5lY3Rpb246
OnNlbmRNZXNzYWdlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamUKIAogICAgIGF1dG8gW2Rl
c3RpbmF0aW9uSUQsIG1lc3NhZ2VOYW1lLCB0aW1lb3V0XSA9ICppbmZvOwogICAgIGF1dG8mIHN0
cmVhbUNvbm5lY3Rpb24gPSBqc1N0cmVhbUNvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKTsKKyAgICBh
dXRvJiBjb25uZWN0aW9uID0gc3RyZWFtQ29ubmVjdGlvbi5jb25uZWN0aW9uRm9yVGVzdGluZygp
OwogCiAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+KG1lc3Nh
Z2VOYW1lLCBkZXN0aW5hdGlvbklEKTsKICAgICBpZiAocHJlcGFyZVRvU2VuZE91dE9mU3RyZWFt
TWVzc2FnZShjb250ZXh0LCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMsICpqc1N0cmVhbUNvbm5l
Y3Rpb24tPm1fanNJUEMsIHN0cmVhbUNvbm5lY3Rpb24sIGVuY29kZXIuZ2V0KCksIGRlc3RpbmF0
aW9uSUQsIHRpbWVvdXQsIGV4Y2VwdGlvbikpCi0gICAgICAgIHN0cmVhbUNvbm5lY3Rpb24ubV9j
b25uZWN0aW9uLnNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHsgfSk7CisgICAgICAgIGNv
bm5lY3Rpb24uc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgeyB9KTsKIAogICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKIH0KQEAgLTU2NiwxMyArNTY3LDE0IEBAIEpTVmFsdWVSZWYgSlNJUENT
dHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2UoSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTCiAKICAgICBhdXRvIFtkZXN0aW5hdGlvbklELCBtZXNzYWdlTmFtZSwgdGltZW91dF0g
PSAqaW5mbzsKICAgICBhdXRvJiBzdHJlYW1Db25uZWN0aW9uID0ganNTdHJlYW1Db25uZWN0aW9u
LT5jb25uZWN0aW9uKCk7CisgICAgYXV0byYgY29ubmVjdGlvbiA9IHN0cmVhbUNvbm5lY3Rpb24u
Y29ubmVjdGlvbkZvclRlc3RpbmcoKTsKIAogICAgIElQQzo6Q29ubmVjdGlvbjo6U3luY1JlcXVl
c3RJRCBzeW5jUmVxdWVzdElEOwotICAgIGF1dG8gZW5jb2RlciA9IHN0cmVhbUNvbm5lY3Rpb24u
bV9jb25uZWN0aW9uLmNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihtZXNzYWdlTmFtZSwgZGVzdGlu
YXRpb25JRCwgc3luY1JlcXVlc3RJRCk7CisgICAgYXV0byBlbmNvZGVyID0gY29ubmVjdGlvbi5j
cmVhdGVTeW5jTWVzc2FnZUVuY29kZXIobWVzc2FnZU5hbWUsIGRlc3RpbmF0aW9uSUQsIHN5bmNS
ZXF1ZXN0SUQpOwogICAgIGlmICghcHJlcGFyZVRvU2VuZE91dE9mU3RyZWFtTWVzc2FnZShjb250
ZXh0LCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMsICpqc1N0cmVhbUNvbm5lY3Rpb24tPm1fanNJ
UEMsIHN0cmVhbUNvbm5lY3Rpb24sIGVuY29kZXIuZ2V0KCksIGRlc3RpbmF0aW9uSUQsIHRpbWVv
dXQsIGV4Y2VwdGlvbikpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250
ZXh0KTsKIAotICAgIGlmIChhdXRvIHJlcGx5RGVjb2RlciA9IHN0cmVhbUNvbm5lY3Rpb24ubV9j
b25uZWN0aW9uLnNlbmRTeW5jTWVzc2FnZShzeW5jUmVxdWVzdElELCBXVEZNb3ZlKGVuY29kZXIp
LCB0aW1lb3V0LCB7IH0pKSB7CisgICAgaWYgKGF1dG8gcmVwbHlEZWNvZGVyID0gY29ubmVjdGlv
bi5zZW5kU3luY01lc3NhZ2Uoc3luY1JlcXVlc3RJRCwgV1RGTW92ZShlbmNvZGVyKSwgdGltZW91
dCwgeyB9KSkgewogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRShnbG9i
YWxPYmplY3QtPnZtKCkpOwogICAgICAgICBhdXRvKiBqc1Jlc3VsdCA9IGpzUmVzdWx0RnJvbVJl
cGx5RGVjb2RlcihnbG9iYWxPYmplY3QsIG1lc3NhZ2VOYW1lLCAqcmVwbHlEZWNvZGVyKTsKICAg
ICAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KaW5kZXggNjI0ZTczN2E1OGIzNDVlYTNm
NzA4NWIyNzY2YzQxNTRlNzNmZTEwYS4uNGQ5MzQzMDc3NzNmYjdjMDUyYWQ3OGViNWE3NmY4MjI2
YmVhMzUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYS5tbQpAQCAtMzc5LDcgKzM3OSw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWE6OnVwZGF0ZVJlbmRlcmluZygpCiAKICAgICBNZXNzYWdlczo6UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlIG1lc3NhZ2UobGF5ZXJUcmFuc2Fj
dGlvbiwgc2Nyb2xsaW5nVHJhbnNhY3Rpb24pOwogICAgIGF1dG8gY29tbWl0RW5jb2RlciA9IG1h
a2VVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPihNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlOjpuYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2
NCgpKTsKLSAgICBjb21taXRFbmNvZGVyLmdldCgpIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCk7Cisg
ICAgY29tbWl0RW5jb2Rlci5nZXQoKSA8PCBXVEZNb3ZlKG1lc3NhZ2UpLmFyZ3VtZW50cygpOwog
CiAgICAgYXV0byBmbHVzaGVycyA9IGJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uZGlkRmx1c2hMYXll
cnMobGF5ZXJUcmFuc2FjdGlvbik7CiAgICAgUmVmUHRyPEJhY2tpbmdTdG9yZUZsdXNoZXI+IGJh
Y2tpbmdTdG9yZUZsdXNoZXIgPSBCYWNraW5nU3RvcmVGbHVzaGVyOjpjcmVhdGUoV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSwgV1RGTW92ZShjb21taXRF
bmNvZGVyKSwgV1RGTW92ZShmbHVzaGVycykpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>