<?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>179554</bug_id>
          
          <creation_ts>2017-11-10 15:14:24 -0800</creation_ts>
          <short_desc>Massive &quot;Server-process-to-context-process&quot; connection overhaul</short_desc>
          <delta_ts>2017-11-15 09:36:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1370531</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-11-10 15:14:24 -0800</bug_when>
    <thetext>Add standalone WebCore abstraction for &quot;connection to worker context process&quot;

Currently only the StorageProcess in WebKit knows about this. WebCore needs to know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370822</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-11-12 20:22:23 -0800</bug_when>
    <thetext>Rename:

Massive &quot;Server-process-to-context-process&quot; overhaul

There was so much unused and unnecessary code here, and the new model will make so much sense going forward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371015</commentid>
    <comment_count>2</comment_count>
      <attachid>326783</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-11-13 12:54:23 -0800</bug_when>
    <thetext>Created attachment 326783
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371028</commentid>
    <comment_count>3</comment_count>
      <attachid>326787</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-11-13 13:20:45 -0800</bug_when>
    <thetext>Created attachment 326787
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371065</commentid>
    <comment_count>4</comment_count>
      <attachid>326797</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-11-13 14:09:52 -0800</bug_when>
    <thetext>Created attachment 326797
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371073</commentid>
    <comment_count>5</comment_count>
      <attachid>326800</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-11-13 14:23:31 -0800</bug_when>
    <thetext>Created attachment 326800
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371088</commentid>
    <comment_count>6</comment_count>
      <attachid>326807</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-11-13 14:49:30 -0800</bug_when>
    <thetext>Created attachment 326807
PFR</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371098</commentid>
    <comment_count>7</comment_count>
      <attachid>326809</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-11-13 15:00:28 -0800</bug_when>
    <thetext>Created attachment 326809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371136</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-11-13 15:43:53 -0800</bug_when>
    <thetext>I have the encodeEnum thing cleaned up locally, please keep reviewing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371145</commentid>
    <comment_count>9</comment_count>
      <attachid>326809</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-13 16:17:45 -0800</bug_when>
    <thetext>Comment on attachment 326809
Patch

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

r=me with comments.

&gt; Source/WebCore/workers/service/ServiceWorkerContextData.h:54
&gt; +    encoder.encodeEnum(workerType);

Doesn&apos;t &lt;&lt; work for enums?

&gt; Source/WebCore/workers/service/server/SWServer.cpp:313
&gt; +void SWServer::fireInstallEvent(ServiceWorkerIdentifier serviceWorkerIdentifier)

It can be done in a follow up but this is a bit unfortunate because the call site of this method has a SWServerWorker object. The call site should pass in this object instead of merely the identifier.

&gt; Source/WebCore/workers/service/server/SWServer.cpp:330
&gt; +void SWServer::fireActivateEvent(ServiceWorkerIdentifier serviceWorkerIdentifier)

ditto.

&gt; Source/WebCore/workers/service/server/SWServerJobQueue.cpp:138
&gt; +    m_server.fireInstallEvent(registration-&gt;installingWorker()-&gt;identifier());

Here we should pass in *registration-&gt;installingWorker().

&gt; Source/WebCore/workers/service/server/SWServerJobQueue.cpp:226
&gt; +    server.fireActivateEvent(registration.activeWorker()-&gt;identifier());

Here we should pass in *registration.activeWorker().

&gt; Source/WebCore/workers/service/server/SWServerToContextConnection.cpp:57
&gt; +    auto taken = allConnections().take(m_identifier);

Just remove(), not take. renove() returns a boolean that you can check in the assertion. Take() is unnecessarily inefficient here.

&gt; Source/WebKit/StorageProcess/ServiceWorker/WebSWServerToContextConnection.h:51
&gt; +    WebSWServerToContextConnection(Ref&lt;IPC::Connection&gt;&amp;&amp;);

explicit?

&gt; Source/WebKit/StorageProcess/ServiceWorker/WebSWServerToContextConnection.h:57
&gt; +    // Messages to the SW host WebProcess

Missing period at the end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371153</commentid>
    <comment_count>10</comment_count>
      <attachid>326820</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-11-13 16:28:07 -0800</bug_when>
    <thetext>Created attachment 326820
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371154</commentid>
    <comment_count>11</comment_count>
      <attachid>326820</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-13 16:30:42 -0800</bug_when>
    <thetext>Comment on attachment 326820
Patch

Rejecting attachment 326820 from commit-queue.

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

Last 500 characters of output:
 succeeded at 8213 (offset 2 lines).
Hunk #7 succeeded at 9138 (offset 2 lines).
Hunk #8 succeeded at 10805 (offset 2 lines).
patching file Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.cpp
patching file Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.h
patching file Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.messages.in

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

Full output: http://webkit-queues.webkit.org/results/5218446</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371156</commentid>
    <comment_count>12</comment_count>
      <attachid>326821</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-11-13 16:36:56 -0800</bug_when>
    <thetext>Created attachment 326821
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371202</commentid>
    <comment_count>13</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-11-13 18:38:58 -0800</bug_when>
    <thetext>UGH rebase nightmares.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371206</commentid>
    <comment_count>14</comment_count>
      <attachid>326837</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-11-13 18:47:15 -0800</bug_when>
    <thetext>Created attachment 326837
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371228</commentid>
    <comment_count>15</comment_count>
      <attachid>326837</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-13 19:58:06 -0800</bug_when>
    <thetext>Comment on attachment 326837
Patch

Clearing flags on attachment: 326837

Committed r224801: &lt;https://trac.webkit.org/changeset/224801&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371229</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-13 19:58:07 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371908</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-15 09:36:45 -0800</bug_when>
    <thetext>&lt;rdar://problem/35562068&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326783</attachid>
            <date>2017-11-13 12:54:23 -0800</date>
            <delta_ts>2017-11-13 13:20:45 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>pat</filename>
            <type>text/plain</type>
            <size>101729</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaCBiL1NvdXJjZS9X
VEYvd3RmL09iamVjdElkZW50aWZpZXIuaAppbmRleCBlZjM3MTU0YTMxZS4uNjdkZWUwMjZiNWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgog
I2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gZnJpZW5kIE9iamVj
dElkZW50aWZpZXI8VT4gbWFrZU9iamVjdElkZW50aWZpZXIodWludDY0X3QpOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFU+IGZyaWVuZCBPYmplY3RJZGVudGlmaWVyPFU+IGdlbmVyYXRlT2JqZWN0
SWRlbnRpZmllcigpOwogICAgIGZyaWVuZCBzdHJ1Y3QgSGFzaFRyYWl0czxPYmplY3RJZGVudGlm
aWVyPjsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBmcmllbmQgc3RydWN0IE9iamVjdElkZW50
aWZpZXJIYXNoOwogCkBAIC04MywxMiArODMsMTQgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB1
aW50NjRfdCBtX2lkZW50aWZpZXIgeyAwIH07CisgICAgc3RhdGljIHVpbnQ2NF90IHNfY3VycmVu
dElkZW50aWZpZXI7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgT2JqZWN0SWRl
bnRpZmllcjxUPiBtYWtlT2JqZWN0SWRlbnRpZmllcih1aW50NjRfdCBpZGVudGlmaWVyKQordGVt
cGxhdGU8dHlwZW5hbWUgVD4gdWludDY0X3QgT2JqZWN0SWRlbnRpZmllcjxUPjo6c19jdXJyZW50
SWRlbnRpZmllcjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIE9iamVjdElkZW50aWZp
ZXI8VD4gZ2VuZXJhdGVPYmplY3RJZGVudGlmaWVyKCkKIHsKLSAgICBBU1NFUlQoT2JqZWN0SWRl
bnRpZmllcjxUPjo6aXNWYWxpZElkZW50aWZpZXIoaWRlbnRpZmllcikpOwotICAgIHJldHVybiBP
YmplY3RJZGVudGlmaWVyPFQ+IHsgaWRlbnRpZmllciB9OworICAgIHJldHVybiBPYmplY3RJZGVu
dGlmaWVyPFQ+IHsgKytPYmplY3RJZGVudGlmaWVyPFQ+OjpzX2N1cnJlbnRJZGVudGlmaWVyIH07
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBPYmplY3RJZGVudGlmaWVySGFzaCB7
CkBAIC0xMDYsNCArMTA4LDQgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRI
YXNoPE9iamVjdElkZW50aWZpZXI8VD4+IHsKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBX
VEY6Ok9iamVjdElkZW50aWZpZXI7Ci11c2luZyBXVEY6Om1ha2VPYmplY3RJZGVudGlmaWVyOwor
dXNpbmcgV1RGOjpnZW5lcmF0ZU9iamVjdElkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDIz
OWQ2OTllNjA1Li42NzQ5N2Y0MWExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIxOTEsNiArMjE5MSw3
IEBAIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmNwcAogd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJKb2JRdWV1ZS5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3Ry
YXRpb24uY3BwCit3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCiAKIHht
bC9ET01QYXJzZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggYjJjNDI5MmQxZmYuLjJhY2EzYjM0NjIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzU0
LDYgKzEzNTQsNyBAQAogCQk1MTgyQzI1ODFGMzE0M0NEMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29y
a2VyQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTgyQzI1NDFGMzE0MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyQ29udGFpbmVy
LmggKi87IH07CiAJCTUxODJDMjVBMUYzMTQzQ0QwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE4MkMyNEQxRjMxNDI1MDAwNTlCQTdDIC8qIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LmggKi87IH07CiAJCTUxODJDMjVDMUYzMTQzQ0QwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxODJDMjUwMUYzMTQyNTAwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b24uaCAqLzsgfTsKKwkJNTE4NTQzMEIxRkI2Nzg0NTAwNDc4Rjk1IC8qIFNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE4NTQzMDkxRkI2NzgzRTAwNDc4Rjk1IC8qIFNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTUxODVGQzc1MUJCNEM0RTgwMDEyODk4RiAvKiBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDcxOTZEMTgx
MTA2REYwMDE2REM1MSAvKiBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuaCAqLzsgfTsKIAkJNTE4
NUZDN0IxQkI0QzRFODAwMTI4OThGIC8qIElEQkN1cnNvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2NDVCNDExQjlGODg5QjAwRjc4OUNFIC8qIElE
QkN1cnNvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTUxODVGQzdFMUJCNEM0RTgwMDEyODk4RiAvKiBJREJDdXJzb3JXaXRoVmFsdWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjQ1QjQzMUI5Rjg4
OUIwMEY3ODlDRSAvKiBJREJDdXJzb3JXaXRoVmFsdWUuaCAqLzsgfTsKQEAgLTE0MjUsNyArMTQy
Niw3IEBACiAJCTUxRTY4MjEwMTYzODczMDIwMDNCQkYzQyAvKiBMb2FkZXJTdHJhdGVneS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFNjgyMEYxNjM4
NzMwMjAwM0JCRjNDIC8qIExvYWRlclN0cmF0ZWd5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFRTdCMzgxQUE1MEIwNTAwRjkyQjIxIC8qIFJl
c291cmNlTG9hZEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRUU3QjM3MUFBNTBCMDUwMEY5MkIyMSAvKiBSZXNvdXJjZUxvYWRJbmZvLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFRUFBNzQx
QkVGRkFCMTAwMjE4MDA4IC8qIEluZGV4VmFsdWVFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFRUFBNzIxQkVGRkE3OTAwMjE4MDA4IC8qIElu
ZGV4VmFsdWVFbnRyeS5oICovOyB9OwotCQk1MUYxNzRGRTFGMzU4OTkyMDBDNzQ5NTAgLyogV29y
a2VyVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFGMTc0RkMxRjM1ODk4ODAwQzc0OTUwIC8qIFdvcmtlclR5cGUuaCAqLzsgfTsKKwkJNTFGMTc0
RkUxRjM1ODk5MjAwQzc0OTUwIC8qIFdvcmtlclR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjE3NEZDMUYzNTg5ODgwMEM3NDk1MCAvKiBXb3Jr
ZXJUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTFGMTc1MDMxRjM1OEIzQjAwQzc0OTUwIC8qIEpTU2VydmljZVdvcmtlclVwZGF0ZVZpYUNh
Y2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYx
NzUwMTFGMzU4QjM2MDBDNzQ5NTAgLyogSlNTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUuaCAq
LzsgfTsKIAkJNTFGMTc1MDYxRjM1OEJGNzAwQzc0OTUwIC8qIEpTV29ya2VyVHlwZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMTc1MDUxRjM1OEJE
RTAwQzc0OTUwIC8qIEpTV29ya2VyVHlwZS5oICovOyB9OwogCQk1MUYxNzU1RDFGM0VCQzgzMDBD
NzQ5NTAgLyogU2VydmljZVdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFGMTc1NUExRjNFQkMwQzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXIu
aCAqLzsgfTsKQEAgLTc3MDYsNiArNzcwNyw4IEBACiAJCTUxODJDMjUyMUYzMTQyNTAwMDU5QkE3
QyAvKiBKU1NlcnZpY2VXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTZXJ2aWNlV29ya2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODJDMjUzMUYzMTQyNTAwMDU5QkE3QyAv
KiBKU1NlcnZpY2VXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4MkMyNTQxRjMxNDI1MDAwNTlC
QTdDIC8qIEpTU2VydmljZVdvcmtlckNvbnRhaW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NlcnZp
Y2VXb3JrZXJDb250YWluZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4NTQz
MDkxRkI2NzgzRTAwNDc4Rjk1IC8qIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4NTQzMEExRkI2NzgzRjAwNDc4Rjk1
IC8qIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTg1RkNCQzFCQjVDQjc3MDAxMjg5OEYgLyogSURCQ29u
bmVjdGlvblRvU2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IElEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxODVGQ0JEMUJCNUNCNzcwMDEyODk4RiAvKiBJREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJDb25uZWN0aW9uVG9TZXJ2
ZXJEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTg4NjRERTFCQkFG
MzBGMDBFNTQwQzkgLyogVW5pcXVlSURCRGF0YWJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVW5pcXVlSURCRGF0YWJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTcxMzEsNiArMTcxMzQsOCBAQAogCQkJCTgzMTFDMDAyMUZBQTJFODkw
MEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggKi8sCiAJCQkJNTFGNjQ1OTUxRjRBNjg2MTAw
QjU0REVEIC8qIFNXU2VydmVyUmVnaXN0cmF0aW9uLmNwcCAqLywKIAkJCQk1MUY2NDU5NDFGNEE2
ODRGMDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCAqLywKKwkJCQk1MTg1NDMwQTFG
QjY3ODNGMDA0NzhGOTUgLyogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCAqLywKKwkJ
CQk1MTg1NDMwOTFGQjY3ODNFMDA0NzhGOTUgLyogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmggKi8sCiAJCQkJNTE3QTUzNDMxRjUwQzE2MTAwRENEQzBBIC8qIFNXU2VydmVyV29ya2VyLmNw
cCAqLywKIAkJCQk1MTdBNTM0MjFGNTBDMTYxMDBEQ0RDMEEgLyogU1dTZXJ2ZXJXb3JrZXIuaCAq
LywKIAkJCSk7CkBAIC0yNzQxNSw2ICsyNzQyMCw3IEBACiAJCQkJN0M4RTM0QjkxRTRBMzNCMDAw
NTRDRTIzIC8qIEpTRE9NQ29udmVydEpTT04uaCBpbiBIZWFkZXJzICovLAogCQkJCTdDOEUzNEJB
MUU0QTMzQjAwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnROdWxsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QzhFMzRCQjFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252ZXJ0TnVsbGFibGUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTUxODU0MzBCMUZCNjc4NDUwMDQ3OEY5NSAvKiBTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTdDOEUzNEJEMUU0QTMzQjAwMDU0
Q0UyMyAvKiBKU0RPTUNvbnZlcnROdW1iZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzhFMzRC
RTFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252ZXJ0T2JqZWN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMzIzQ0ZGQTFFNUFGNkFGMDBGMEI0QTAgLyogSlNET01Db252ZXJ0UHJvbWlzZS5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwCmluZGV4IDRkMzM1MDFjNmRhLi5mMGVj
NzY2ZTM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgU2VydmljZVdvcmtlckNv
bnRleHREYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogewotICAgIHJldHVybiB7IHJlZ2lzdHJh
dGlvbktleS5pc29sYXRlZENvcHkoKSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHNjcmlwdC5p
c29sYXRlZENvcHkoKSwgc2NyaXB0VVJMLmlzb2xhdGVkQ29weSgpIH07CisgICAgcmV0dXJuIHsg
cmVnaXN0cmF0aW9uS2V5Lmlzb2xhdGVkQ29weSgpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
c2NyaXB0Lmlzb2xhdGVkQ29weSgpLCBzY3JpcHRVUkwuaXNvbGF0ZWRDb3B5KCksIHdvcmtlclR5
cGUgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCmluZGV4
IDA4YzMxYmM5NTQwLi43YTBiNDQzY2IzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaApAQCAtMjgsNiAr
MjgsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIgogI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1
ZGUgIldvcmtlclR5cGUuaCIKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIApAQCAtMzgs
NiArMzksNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcjsKICAgICBTdHJpbmcgc2Ny
aXB0OwogICAgIFVSTCBzY3JpcHRVUkw7CisgICAgV29ya2VyVHlwZSB3b3JrZXJUeXBlOwogICAg
IAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGE+IGRlY29kZShEZWNvZGVyJik7CkBAIC00OSw2ICs1MSw3IEBA
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCByZWdpc3Ry
YXRpb25LZXkgPDwgc2VydmljZVdvcmtlcklkZW50aWZpZXIgPDwgc2NyaXB0IDw8IHNjcmlwdFVS
TDsKKyAgICBlbmNvZGVyLmVuY29kZUVudW0od29ya2VyVHlwZSk7CiB9CiAKIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+CkBAIC02OSw4ICs3MiwxMiBAQCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNvZGUoRGVjb2Rlcgog
ICAgIFVSTCBzY3JpcHRVUkw7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzY3JpcHRVUkwpKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoKnJl
Z2lzdHJhdGlvbktleSksIFdURk1vdmUoKnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSwgV1RGTW92
ZShzY3JpcHQpLCBXVEZNb3ZlKHNjcmlwdFVSTCkgfX07CisgICAgCisgICAgV29ya2VyVHlwZSB3
b3JrZXJUeXBlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHdvcmtlclR5cGUpKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIAorICAgIHJldHVybiB7eyBXVEZNb3ZlKCpy
ZWdpc3RyYXRpb25LZXkpLCBXVEZNb3ZlKCpzZXJ2aWNlV29ya2VySWRlbnRpZmllciksIFdURk1v
dmUoc2NyaXB0KSwgV1RGTW92ZShzY3JpcHRVUkwpLCB3b3JrZXJUeXBlIH19OwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDRiZjE5ZDg1YjIy
Li4zYTIwYjNhOWQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTMzLDkgKzMzLDggQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OlNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
Y29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09u
bGluZSwgU2VydmljZVdvcmtlclRocmVhZCYgdGhyZWFkLCBib29sIHNob3VsZEJ5cGFzc01haW5X
b3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdp
biwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94
eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKK1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6U2VydmljZVdv
cmtlckdsb2JhbFNjb3BlKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1c2Vy
QWdlbnQsIGJvb2wgaXNPbmxpbmUsIFNlcnZpY2VXb3JrZXJUaHJlYWQmIHRocmVhZCwgYm9vbCBz
aG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZjxTZWN1cml0eU9y
aWdpbj4mJiB0b3BPcmlnaW4sIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgSURCQ2xpZW50OjpJ
REJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tl
dFByb3ZpZGVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgOiBXb3JrZXJHbG9iYWxT
Y29wZSh1cmwsIGlkZW50aWZpZXIsIHVzZXJBZ2VudCwgaXNPbmxpbmUsIHRocmVhZCwgc2hvdWxk
QnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBXVEZNb3ZlKHRvcE9yaWdpbiks
IHRpbWVPcmlnaW4sIGNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIHNlc3Npb25JRCkK
LSAgICAsIG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIpCiAgICAgLCBtX2NvbnRleHREYXRhKGNyb3NzVGhyZWFkQ29weShkYXRhKSkKICAgICAs
IG1fY2xpZW50cyhTZXJ2aWNlV29ya2VyQ2xpZW50czo6Y3JlYXRlKCp0aGlzKSkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUuaAppbmRleCBlZTQ5NTg2OTI0MC4uOTAwMTUxN2RkZjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLmgKQEAgLTUxLDggKzUxLDYgQEAgcHVibGljOgogICAgIFNlcnZpY2VXb3JrZXJDbGllbnRz
JiBjbGllbnRzKCkgeyByZXR1cm4gbV9jbGllbnRzLmdldCgpOyB9CiAgICAgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbiogcmVnaXN0cmF0aW9uKCk7CiAgICAgCi0gICAgdWludDY0X3Qgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyOyB9Ci0KICAgICB2b2lkIHNraXBXYWl0aW5nKFJlZjxEZWZlcnJlZFByb21pc2U+
JiYpOwogCiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdCBmaW5hbDsKQEAgLTYwLDkgKzU4LDggQEAgcHVibGljOgogICAgIFNlcnZpY2VXb3JrZXJU
aHJlYWQmIHRocmVhZCgpOwogCiBwcml2YXRlOgotICAgIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgU2VydmljZVdvcmtlclRocmVhZCYs
IGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBSZWY8U2Vj
dXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIElEQkNs
aWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqLCBQQUw6OlNlc3Npb25J
RCk7CisgICAgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YSYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUsIFNlcnZpY2VXb3JrZXJUaHJlYWQmLCBib29s
IHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgUmVmPFNlY3VyaXR5
T3JpZ2luPiYmIHRvcE9yaWdpbiwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBJREJDbGllbnQ6
OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKiwgUEFMOjpTZXNzaW9uSUQpOwog
Ci0gICAgdWludDY0X3QgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEgbV9jb250ZXh0RGF0YTsKICAgICBSZWY8U2VydmljZVdvcmtlckNs
aWVudHM+IG1fY2xpZW50czsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlclR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlclR5cGVzLmgKaW5kZXggYTNjNmMzZTYxNzguLmM3MGFlMDhhYTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
clR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJUeXBlcy5oCkBAIC01MCw2ICs1MCw5IEBAIGVudW0gY2xhc3MgU2hvdWxkTm90aWZ5V2hlblJl
c29sdmVkIHsgTm8sIFllcyB9OwogZW51bSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
ZmllclR5cGUgeyB9OwogdXNpbmcgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIg
PSBPYmplY3RJZGVudGlmaWVyPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyVHlw
ZT47CiAKK2VudW0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllclR5cGUgeyB9
OwordXNpbmcgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciA9IE9iamVjdElk
ZW50aWZpZXI8U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllclR5cGU+OworCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IDM0YTMzMjJkMjFmLi45YmY4MjA1YWQy
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTczLDkgKzczLDggQEAgcHJpdmF0
ZToKIC8vIEZJWE1FOiBVc2UgYSB2YWxpZCBpc09ubGluZSBmbGFnCiAvLyBGSVhNRTogVXNlIHZh
bGlkIHJ1bnRpbWUgZmxhZ3MKIAotU2VydmljZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRo
cmVhZCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdv
cmtlckNvbnRleHREYXRhJiBkYXRhLCBQQUw6OlNlc3Npb25JRCwgV29ya2VyTG9hZGVyUHJveHkm
IGxvYWRlclByb3h5LCBXb3JrZXJEZWJ1Z2dlclByb3h5JiBkZWJ1Z2dlclByb3h5KQorU2Vydmlj
ZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZChjb25zdCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEmIGRhdGEsIFBBTDo6U2Vzc2lvbklELCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVy
UHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkmIGRlYnVnZ2VyUHJveHkpCiAgICAgOiBXb3JrZXJU
aHJlYWQoZGF0YS5zY3JpcHRVUkwsICJzZXJ2aWNld29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50
aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpLCBBU0NJSUxpdGVyYWwoIldvcmtlclVz
ZXJBZ2VudCIpLCAvKiBpc09ubGluZSAqLyBmYWxzZSwgZGF0YS5zY3JpcHQsIGxvYWRlclByb3h5
LCBkZWJ1Z2dlclByb3h5LCBEdW1teVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2hhcmVkKCks
IFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnMgeyB9LCBmYWxzZSwgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShkYXRhLnNjcmlw
dFVSTCkuZ2V0KCksIE1vbm90b25pY1RpbWU6Om5vdygpLCBudWxscHRyLCBudWxscHRyLCBKU0M6
OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpLCBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNz
aW9uSUQoKSkKLSAgICAsIG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIpCiAgICAgLCBtX2RhdGEoZGF0YS5pc29sYXRlZENvcHkoKSkKICAgICAs
IG1fd29ya2VyT2JqZWN0UHJveHkoRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJl
ZCgpKQogewpAQCAtODYsNyArODUsNyBAQCBTZXJ2aWNlV29ya2VyVGhyZWFkOjp+U2VydmljZVdv
cmtlclRocmVhZCgpID0gZGVmYXVsdDsKIAogUmVmPFdvcmtlckdsb2JhbFNjb3BlPiBTZXJ2aWNl
V29ya2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09u
bGluZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBz
aG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZjxTZWN1cml0eU9y
aWdpbj4mJiB0b3BPcmlnaW4sIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKQogewotICAgIHJldHVybiBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmNy
ZWF0ZShtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBtX2RhdGEsIHVybCwgaWRlbnRpZmll
ciwgdXNlckFnZW50LCBpc09ubGluZSwgKnRoaXMsIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRl
bnRTZWN1cml0eVBvbGljeSwgV1RGTW92ZSh0b3BPcmlnaW4pLCB0aW1lT3JpZ2luLCBpZGJDb25u
ZWN0aW9uUHJveHkoKSwgc29ja2V0UHJvdmlkZXIoKSwgc2Vzc2lvbklEKTsKKyAgICByZXR1cm4g
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUobV9kYXRhLCB1cmwsIGlkZW50aWZpZXIs
IHVzZXJBZ2VudCwgaXNPbmxpbmUsICp0aGlzLCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50
U2VjdXJpdHlQb2xpY3ksIFdURk1vdmUodG9wT3JpZ2luKSwgdGltZU9yaWdpbiwgaWRiQ29ubmVj
dGlvblByb3h5KCksIHNvY2tldFByb3ZpZGVyKCksIHNlc3Npb25JRCk7CiB9CiAKIHZvaWQgU2Vy
dmljZVdvcmtlclRocmVhZDo6cnVuRXZlbnRMb29wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaApp
bmRleCBkNDhhNzE5NGJhYi4uOWI0MzNmYTk1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgK
QEAgLTU5LDcgKzU5LDYgQEAgcHVibGljOgogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudCgpOwog
ICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoKTsKIAotICAgIHVpbnQ2NF90IHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllcjsgfQogICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgY29udGV4dERhdGEo
KSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KIAogICAgIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuc2VydmljZVdvcmtlcklkZW50aWZp
ZXI7IH0KQEAgLTY5LDkgKzY4LDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcnVuRXZlbnRMb29w
KCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2VydmljZVdvcmtl
clRocmVhZCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhJiwgUEFMOjpTZXNzaW9uSUQsIFdvcmtlckxvYWRlclByb3h5Jiwg
V29ya2VyRGVidWdnZXJQcm94eSYpOworICAgIFdFQkNPUkVfRVhQT1JUIFNlcnZpY2VXb3JrZXJU
aHJlYWQoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiwgUEFMOjpTZXNzaW9uSUQsIFdv
cmtlckxvYWRlclByb3h5JiwgV29ya2VyRGVidWdnZXJQcm94eSYpOwogCi0gICAgdWludDY0X3Qg
bV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEgbV9kYXRhOwogICAgIFdvcmtlck9iamVjdFByb3h5JiBtX3dvcmtlck9iamVjdFByb3h5Owog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCmluZGV4IDE1NzBjZjBmMGJh
Li5lN2RiZDQwOWU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCkBA
IC0zNiwxMSArMzYsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxTZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHk+IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlKFBhZ2VDb25m
aWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24sIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEsIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImIGNhY2hlU3RvcmFnZVByb3Zp
ZGVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eSB7IFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgZGF0YSwgc2Vzc2lvbklELCBjYWNoZVN0b3JhZ2VQcm92aWRlciB9KTsKLX0KLQogc3RhdGlj
IGlubGluZSBVbmlxdWVSZWY8UGFnZT4gY3JlYXRlUGFnZUZvclNlcnZpY2VXb3JrZXIoUGFnZUNv
bmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBhdXRv
IHBhZ2UgPSBtYWtlVW5pcXVlUmVmPFBhZ2U+KFdURk1vdmUoY29uZmlndXJhdGlvbikpOwpAQCAt
NTIsMTAgKzQ3LDEwIEBAIHN0YXRpYyBpbmxpbmUgVW5pcXVlUmVmPFBhZ2U+IGNyZWF0ZVBhZ2VG
b3JTZXJ2aWNlV29ya2VyKFBhZ2VDb25maWd1cmF0aW9uJiYgY29uCiAgICAgcmV0dXJuIHBhZ2U7
CiB9CiAKLVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5
KFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24sIHVpbnQ2NF90IHNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEs
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImIGNhY2hlU3Rv
cmFnZVByb3ZpZGVyKQorU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpTZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbiwgY29uc3QgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENh
Y2hlU3RvcmFnZVByb3ZpZGVyJiBjYWNoZVN0b3JhZ2VQcm92aWRlcikKICAgICA6IG1fcGFnZShj
cmVhdGVQYWdlRm9yU2VydmljZVdvcmtlcihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSwgZGF0
YS5zY3JpcHRVUkwpKQogICAgICwgbV9kb2N1bWVudCgqbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1
bWVudCgpKQotICAgICwgbV9zZXJ2aWNlV29ya2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJUaHJlYWQ6
OmNyZWF0ZShzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZGF0YSwgc2Vzc2lvbklELCAqdGhp
cywgKnRoaXMpKQorICAgICwgbV9zZXJ2aWNlV29ya2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJUaHJl
YWQ6OmNyZWF0ZShkYXRhLCBzZXNzaW9uSUQsICp0aGlzLCAqdGhpcykpCiAgICAgLCBtX2NhY2hl
U3RvcmFnZVByb3ZpZGVyKGNhY2hlU3RvcmFnZVByb3ZpZGVyKQogICAgICwgbV9zZXNzaW9uSUQo
c2Vzc2lvbklEKQogICAgICwgbV9pbnNwZWN0b3JQcm94eSgqdGhpcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZFByb3h5LmgKaW5kZXggNDEwYjBlYWUxYzEuLmE5YzU5N2U2ZjRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaApAQCAtNDcsMTQgKzQ3LDE3IEBAIHN0cnVjdCBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CiAKIGNsYXNzIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHk+LCBwdWJsaWMgV29ya2VyTG9hZGVyUHJveHksIHB1YmxpYyBXb3JrZXJEZWJ1Z2dlclBy
b3h5IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eT4gY3JlYXRlKFBhZ2VDb25maWd1cmF0aW9uJiYsIHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBQ
QUw6OlNlc3Npb25JRCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImKTsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eT4gY3JlYXRl
KEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAg
IH0KIAogICAgIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX3NlcnZpY2VXb3JrZXJUaHJlYWQtPmlkZW50aWZpZXIoKTsgfQogICAgIFNlcnZpY2VX
b3JrZXJUaHJlYWQmIHRocmVhZCgpIHsgcmV0dXJuIG1fc2VydmljZVdvcmtlclRocmVhZC5nZXQo
KTsgfQogICAgIFNlcnZpY2VXb3JrZXJJbnNwZWN0b3JQcm94eSYgaW5zcGVjdG9yUHJveHkoKSB7
IHJldHVybiBtX2luc3BlY3RvclByb3h5OyB9CiAKIHByaXZhdGU6Ci0gICAgU2VydmljZVdvcmtl
clRocmVhZFByb3h5KFBhZ2VDb25maWd1cmF0aW9uJiYsIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBQQUw6OlNlc3Np
b25JRCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHkoUGFnZUNvbmZpZ3VyYXRpb24mJiwgY29uc3QgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhJiwgUEFMOjpTZXNzaW9uSUQsIENhY2hlU3RvcmFnZVByb3ZpZGVyJik7CiAK
ICAgICAvLyBXb3JrZXJMb2FkZXJQcm94eQogICAgIGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3Jr
ZXJHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYsIGNvbnN0IFN0cmlu
ZyYgbW9kZSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IGNjNDIyZDI5YmQ1Li4wN2JjYmQ5MmM3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAK
QEAgLTMzLDE5ICszMywyMCBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTV1Nl
cnZlckpvYlF1ZXVlLmgiCiAjaW5jbHVkZSAiU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCIKKyNpbmNs
dWRlICJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJTV1NlcnZlcldv
cmtlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VydmljZVdv
cmtlckNvbnRleHREYXRhLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoUmVzdWx0Lmgi
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYkRhdGEuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGF0aWMgU2VydmljZVdvcmtlcklkZW50aWZpZXIgZ2VuZXJhdGVTZXJ2
aWNlV29ya2VySWRlbnRpZmllcigpCiB7Ci0gICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZpZXIg
PSAwOwotICAgIHJldHVybiBtYWtlT2JqZWN0SWRlbnRpZmllcjxTZXJ2aWNlV29ya2VySWRlbnRp
ZmllclR5cGU+KCsraWRlbnRpZmllcik7CisgICAgcmV0dXJuIGdlbmVyYXRlT2JqZWN0SWRlbnRp
ZmllcjxTZXJ2aWNlV29ya2VySWRlbnRpZmllclR5cGU+KCk7CiB9CiAKIFNXU2VydmVyOjpDb25u
ZWN0aW9uOjpDb25uZWN0aW9uKFNXU2VydmVyJiBzZXJ2ZXIsIHVpbnQ2NF90IGlkZW50aWZpZXIp
CkBAIC02MCw2ICs2MSwxMiBAQCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6fkNvbm5lY3Rpb24oKQog
ICAgIG1fc2VydmVyLnVucmVnaXN0ZXJDb25uZWN0aW9uKCp0aGlzKTsKIH0KIAorSGFzaFNldDxT
V1NlcnZlcio+JiBTV1NlcnZlcjo6YWxsU2VydmVycygpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEhhc2hTZXQ8U1dTZXJ2ZXIqPj4gc2VydmVyczsKKyAgICByZXR1cm4gc2VydmVyczsK
K30KKwogU1dTZXJ2ZXI6On5TV1NlcnZlcigpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9jb25u
ZWN0aW9ucy5pc0VtcHR5KCkpOwpAQCAtNzQsNiArODEsOCBAQCBTV1NlcnZlcjo6flNXU2VydmVy
KCkKICAgICAvLyBCdXQgb25jZSBpdCBkb2VzIHN0YXJ0IGhhcHBlbmluZywgdGhpcyBBU1NFUlQg
d2lsbCBjYXRjaCB1cyBkb2luZyBpdCB3cm9uZy4KICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1f
dGFza1RocmVhZExvY2spOwogICAgIEFTU0VSVCghbV90YXNrVGhyZWFkKTsKKyAgICAKKyAgICBh
bGxTZXJ2ZXJzKCkucmVtb3ZlKHRoaXMpOwogfQogCiBTV1NlcnZlclJlZ2lzdHJhdGlvbiogU1dT
ZXJ2ZXI6OmdldFJlZ2lzdHJhdGlvbihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
JiByZWdpc3RyYXRpb25LZXkpCkBAIC0xMTIsMTYgKzEyMSw2IEBAIHZvaWQgU1dTZXJ2ZXI6OkNv
bm5lY3Rpb246OmZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtl
ckZldGNoCiAgICAgbV9zZXJ2ZXIuc2NyaXB0RmV0Y2hGaW5pc2hlZCgqdGhpcywgcmVzdWx0KTsK
IH0KIAotdm9pZCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6ZGlkRmluaXNoSW5zdGFsbChjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCi17Ci0gICAgbV9z
ZXJ2ZXIuZGlkRmluaXNoSW5zdGFsbCgqdGhpcywga2V5LCBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgd2FzU3VjY2Vzc2Z1bCk7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OmRpZEZp
bmlzaEFjdGl2YXRpb24oY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYga2V5LCBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKLXsKLSAgICBt
X3NlcnZlci5kaWRGaW5pc2hBY3RpdmF0aW9uKCp0aGlzLCBrZXksIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKTsKLX0KLQogdm9pZCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6ZGlkUmVzb2x2ZVJlZ2lz
dHJhdGlvblByb21pc2UoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYga2V5KQog
ewogICAgIG1fc2VydmVyLmRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKCp0aGlzLCBrZXkp
OwpAQCAtMTM3LDE4ICsxMzYsOSBAQCB2b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpyZW1vdmVT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoY29uc3QgU2VydmljZQogICAgIG1fc2Vy
dmVyLnJlbW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oKnRoaXMsIGtleSwgaWRl
bnRpZmllcik7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OnNjcmlwdENvbnRleHRG
YWlsZWRUb1N0YXJ0KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJh
dGlvbktleSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQotewotICAgIG1fc2VydmVyLnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KCp0
aGlzLCByZWdpc3RyYXRpb25LZXksIGlkZW50aWZpZXIsIG1lc3NhZ2UpOwotfQotCi12b2lkIFNX
U2VydmVyOjpDb25uZWN0aW9uOjpzY3JpcHRDb250ZXh0U3RhcnRlZChjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIpCi17Ci0gICAgbV9zZXJ2ZXIuc2NyaXB0Q29udGV4dFN0YXJ0ZWQoKnRo
aXMsIHJlZ2lzdHJhdGlvbktleSwgaWRlbnRpZmllcik7Ci19Ci0KIFNXU2VydmVyOjpTV1NlcnZl
cigpCiB7CisgICAgYWxsU2VydmVycygpLmFkZCh0aGlzKTsKICAgICBtX3Rhc2tUaHJlYWQgPSBU
aHJlYWQ6OmNyZWF0ZShBU0NJSUxpdGVyYWwoIlNlcnZpY2VXb3JrZXIgVGFzayBUaHJlYWQiKSwg
W3RoaXNdIHsKICAgICAgICAgdGFza1RocmVhZEVudHJ5UG9pbnQoKTsKICAgICB9KTsKQEAgLTIy
Myw0NCArMjEzLDM2IEBAIHZvaWQgU1dTZXJ2ZXI6OnNjcmlwdEZldGNoRmluaXNoZWQoQ29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlckZlCiAgICAgam9iUXVldWUtPnNj
cmlwdEZldGNoRmluaXNoZWQoY29ubmVjdGlvbiwgcmVzdWx0KTsKIH0KIAotdm9pZCBTV1NlcnZl
cjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29u
c3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lk
IFNXU2VydmVyOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChTV1NlcnZlcldvcmtlciYgd29y
a2VyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgQVNTRVJUKG1fY29ubmVjdGlvbnMu
Y29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKLSAgICAKLSAgICBpZiAoYXV0byog
am9iUXVldWUgPSBtX2pvYlF1ZXVlcy5nZXQocmVnaXN0cmF0aW9uS2V5KSkKLSAgICAgICAgam9i
UXVldWUtPnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbm5lY3Rpb24sIGlkZW50aWZpZXIs
IG1lc3NhZ2UpOworICAgIGlmIChhdXRvKiBqb2JRdWV1ZSA9IG1fam9iUXVldWVzLmdldCh3b3Jr
ZXIucmVnaXN0cmF0aW9uS2V5KCkpKQorICAgICAgICBqb2JRdWV1ZS0+c2NyaXB0Q29udGV4dEZh
aWxlZFRvU3RhcnQod29ya2VyLmlkZW50aWZpZXIoKSwgbWVzc2FnZSk7CiB9CiAKLXZvaWQgU1dT
ZXJ2ZXI6OnNjcmlwdENvbnRleHRTdGFydGVkKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgU2VydmljZVdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgU1dTZXJ2ZXI6OnNjcmlwdENvbnRleHRT
dGFydGVkKFNXU2VydmVyV29ya2VyJiB3b3JrZXIpCiB7Ci0gICAgQVNTRVJUKG1fY29ubmVjdGlv
bnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKLQotICAgIGlmIChhdXRvKiBq
b2JRdWV1ZSA9IG1fam9iUXVldWVzLmdldChyZWdpc3RyYXRpb25LZXkpKQotICAgICAgICBqb2JR
dWV1ZS0+c2NyaXB0Q29udGV4dFN0YXJ0ZWQoY29ubmVjdGlvbiwgaWRlbnRpZmllcik7CisgICAg
aWYgKGF1dG8qIGpvYlF1ZXVlID0gbV9qb2JRdWV1ZXMuZ2V0KHdvcmtlci5yZWdpc3RyYXRpb25L
ZXkoKSkpCisgICAgICAgIGpvYlF1ZXVlLT5zY3JpcHRDb250ZXh0U3RhcnRlZCh3b3JrZXIuaWRl
bnRpZmllcigpKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6ZGlkRmluaXNoSW5zdGFsbChDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdp
c3RyYXRpb25LZXksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCit2b2lkIFNXU2VydmVyOjpkaWRGaW5pc2hJbnN0YWxs
KFNXU2VydmVyV29ya2VyJiB3b3JrZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkKIHsKLSAgICBBU1NF
UlQobV9jb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOwotCi0g
ICAgaWYgKGF1dG8qIGpvYlF1ZXVlID0gbV9qb2JRdWV1ZXMuZ2V0KHJlZ2lzdHJhdGlvbktleSkp
Ci0gICAgICAgIGpvYlF1ZXVlLT5kaWRGaW5pc2hJbnN0YWxsKGNvbm5lY3Rpb24sIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCB3YXNTdWNjZXNzZnVsKTsKKyAgICBpZiAoYXV0byogam9iUXVldWUg
PSBtX2pvYlF1ZXVlcy5nZXQod29ya2VyLnJlZ2lzdHJhdGlvbktleSgpKSkKKyAgICAgICAgam9i
UXVldWUtPmRpZEZpbmlzaEluc3RhbGwod29ya2VyLmlkZW50aWZpZXIoKSwgd2FzU3VjY2Vzc2Z1
bCk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OmRpZEZpbmlzaEFjdGl2YXRpb24oQ29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0
aW9uS2V5LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikK
K3ZvaWQgU1dTZXJ2ZXI6OmRpZEZpbmlzaEFjdGl2YXRpb24oU1dTZXJ2ZXJXb3JrZXImIHdvcmtl
cikKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGNvbm5lY3Rpb24sIG1fY29ubmVjdGlvbnMuY29udGFp
bnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKLQotICAgIGlmIChhdXRvKiByZWdpc3RyYXRp
b24gPSBnZXRSZWdpc3RyYXRpb24ocmVnaXN0cmF0aW9uS2V5KSkKLSAgICAgICAgU1dTZXJ2ZXJK
b2JRdWV1ZTo6ZGlkRmluaXNoQWN0aXZhdGlvbigqcmVnaXN0cmF0aW9uLCBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcik7CisgICAgaWYgKGF1dG8qIHJlZ2lzdHJhdGlvbiA9IGdldFJlZ2lzdHJhdGlv
bih3b3JrZXIucmVnaXN0cmF0aW9uS2V5KCkpKQorICAgICAgICBTV1NlcnZlckpvYlF1ZXVlOjpk
aWRGaW5pc2hBY3RpdmF0aW9uKCpyZWdpc3RyYXRpb24sIHdvcmtlci5pZGVudGlmaWVyKCkpOwog
fQogCiB2b2lkIFNXU2VydmVyOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdp
c3RyYXRpb25LZXkpCiB7Ci0gICAgQVNTRVJUKG1fY29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVj
dGlvbi5pZGVudGlmaWVyKCkpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGNvbm5lY3Rpb24sIG1fY29u
bmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKIAogICAgIGlmIChh
dXRvKiBqb2JRdWV1ZSA9IG1fam9iUXVldWVzLmdldChyZWdpc3RyYXRpb25LZXkpKQotICAgICAg
ICBqb2JRdWV1ZS0+ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoY29ubmVjdGlvbik7Cisg
ICAgICAgIGpvYlF1ZXVlLT5kaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZSgpOwogfQogCiB2
b2lkIFNXU2VydmVyOjphZGRDbGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKENvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIGtleSwg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikKQEAgLTI5MSwy
NiArMjczLDc1IEBAIHZvaWQgU1dTZXJ2ZXI6OnJlbW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uCiAgICAgcmVnaXN0cmF0aW9uLT5y
ZW1vdmVDbGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKGNvbm5lY3Rpb24uaWRlbnRpZmll
cigpKTsKIH0KIAotUmVmPFNXU2VydmVyV29ya2VyPiBTV1NlcnZlcjo6dXBkYXRlV29ya2VyKENv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkm
IHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBX
b3JrZXJUeXBlIHR5cGUpCit2b2lkIFNXU2VydmVyOjp1cGRhdGVXb3JrZXIoQ29ubmVjdGlvbiYs
IGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXb3JrZXJUeXBlIHR5cGUpCiB7CiAg
ICAgYXV0byBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IGdlbmVyYXRlU2VydmljZVdvcmtlcklk
ZW50aWZpZXIoKTsKIAotICAgIGF1dG8gcmVzdWx0ID0gbV93b3JrZXJzQnlJRC5hZGQoc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIFNXU2VydmVyV29ya2VyOjpjcmVhdGUocmVnaXN0cmF0aW9uS2V5
LCB1cmwsIHNjcmlwdCwgdHlwZSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIpKTsKLSAgICBBU1NF
UlQocmVzdWx0LmlzTmV3RW50cnkpOworICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBkYXRh
ID0geyByZWdpc3RyYXRpb25LZXksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzY3JpcHQsIHVy
bCwgdHlwZSB9OwogCi0gICAgY29ubmVjdGlvbi5pbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQo
eyByZWdpc3RyYXRpb25LZXksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzY3JpcHQsIHVybCB9
KTsKKyAgICAvLyBSaWdodCBub3cgd2Ugb25seSBldmVyIGtlZXAgdXAgdG8gb25lIGNvbm5lY3Rp
b24gdG8gb25lIFNXIGNvbnRleHQgcHJvY2Vzcy4KKyAgICAvLyBBbmQgaXQgc2hvdWxkIGFsd2F5
cyBleGlzdCBpZiB3ZSdyZSBjYWxsaW5nIHVwZGF0ZVdvcmtlcgorICAgIGF1dG8qIGNvbm5lY3Rp
b24gPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24oKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24pIHsKKyAgICAgICAgbV9wZW5kaW5nQ29u
dGV4dERhdGFzLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
ICAgICAKLSAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKyAgICBpbnN0
YWxsQ29udGV4dERhdGEoZGF0YSk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OmZpcmVJbnN0YWxsRXZl
bnQoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIpCit2b2lkIFNXU2VydmVyOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uQ3JlYXRlZCgpCiB7Ci0gICAgY29ubmVjdGlvbi5maXJlSW5zdGFsbEV2ZW50KHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKTsKKyAgICBBU1NFUlQoU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjpnbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkpOworICAgIGZvciAoYXV0byYgZGF0
YSA6IG1fcGVuZGluZ0NvbnRleHREYXRhcykKKyAgICAgICAgaW5zdGFsbENvbnRleHREYXRhKGRh
dGEpOworICAgIAorICAgIG1fcGVuZGluZ0NvbnRleHREYXRhcy5jbGVhcigpOwogfQogCi12b2lk
IFNXU2VydmVyOjpmaXJlQWN0aXZhdGVFdmVudChDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKK3ZvaWQgU1dTZXJ2
ZXI6Omluc3RhbGxDb250ZXh0RGF0YShjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRh
dGEpCiB7Ci0gICAgY29ubmVjdGlvbi5maXJlQWN0aXZhdGVFdmVudChzZXJ2aWNlV29ya2VySWRl
bnRpZmllcik7CisgICAgYXV0byogY29ubmVjdGlvbiA9IFNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6Z2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOworICAgIEFTU0VSVChjb25u
ZWN0aW9uKTsKKworICAgIGF1dG8gcmVzdWx0ID0gbV93b3JrZXJzQnlJRC5hZGQoZGF0YS5zZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgU1dTZXJ2ZXJXb3JrZXI6OmNyZWF0ZSgqdGhpcywgZGF0YS5y
ZWdpc3RyYXRpb25LZXksIGNvbm5lY3Rpb24tPmlkZW50aWZpZXIoKSwgZGF0YS5zY3JpcHRVUkws
IGRhdGEuc2NyaXB0LCBkYXRhLndvcmtlclR5cGUsIGRhdGEuc2VydmljZVdvcmtlcklkZW50aWZp
ZXIpKTsKKyAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgY29ubmVjdGlvbi0+
aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KGRhdGEpOworfQorCit2b2lkIFNXU2VydmVyOjpm
aXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKQoreworICAgIGF1dG8qIHdvcmtlciA9IG1fd29ya2Vyc0J5SUQuZ2V0KHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKTsKKyAgICBpZiAoIXdvcmtlcikgeworICAgICAgICBMT0dfRVJST1Io
IlJlcXVlc3QgdG8gZmlyZSBpbnN0YWxsIGV2ZW50IG9uIGEgd29ya2VyIHRoYXQgY2Fubm90IGJl
IGZvdW5kIGluIHRoZSBzZXJ2ZXIiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1
dG8qIGNvbm5lY3Rpb24gPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25G
b3JJZGVudGlmaWVyKHdvcmtlci0+Y29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKCkpOworICAg
IGlmICghY29ubmVjdGlvbikgeworICAgICAgICBMT0dfRVJST1IoIlJlcXVlc3QgdG8gZmlyZSBp
bnN0YWxsIGV2ZW50IG9uIGEgd29ya2VyIHdob3NlIGNvbnRleHQgY29ubmVjdGlvbiBkb2VzIG5v
dCBleGlzdCIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29ubmVjdGlvbi0+Zmly
ZUluc3RhbGxFdmVudChzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Cit9CisKK3ZvaWQgU1dTZXJ2
ZXI6OmZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKQoreworICAgIGF1dG8qIHdvcmtlciA9IG1fd29ya2Vyc0J5SUQuZ2V0KHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBpZiAoIXdvcmtlcikgeworICAgICAgICBMT0df
RVJST1IoIlJlcXVlc3QgdG8gZmlyZSBpbnN0YWxsIGV2ZW50IG9uIGEgd29ya2VyIHRoYXQgY2Fu
bm90IGJlIGZvdW5kIGluIHRoZSBzZXJ2ZXIiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5l
Y3Rpb25Gb3JJZGVudGlmaWVyKHdvcmtlci0+Y29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKCkp
OworICAgIGlmICghY29ubmVjdGlvbikgeworICAgICAgICBMT0dfRVJST1IoIlJlcXVlc3QgdG8g
ZmlyZSBpbnN0YWxsIGV2ZW50IG9uIGEgd29ya2VyIHdob3NlIGNvbnRleHQgY29ubmVjdGlvbiBk
b2VzIG5vdCBleGlzdCIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29ubmVjdGlv
bi0+ZmlyZUFjdGl2YXRlRXZlbnQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogfQogCiB2b2lk
IFNXU2VydmVyOjp0YXNrVGhyZWFkRW50cnlQb2ludCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggMGFlMDMxMmQxN2EuLmIzYzEw
OGUxOWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYi5o
IgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmgiCiAjaW5jbHVkZSAi
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJU
eXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFF1ZXVlLmg+CiAjaW5jbHVkZSA8d3Rm
L0Nyb3NzVGhyZWFkVGFzay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC00NSw2ICs0
Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1dTZXJ2ZXJKb2JRdWV1ZTsKIGNs
YXNzIFNXU2VydmVyUmVnaXN0cmF0aW9uOworY2xhc3MgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOwogZW51bSBjbGFzcyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGU7CiBlbnVtIGNs
YXNzIFNlcnZpY2VXb3JrZXJTdGF0ZTsKIHN0cnVjdCBFeGNlcHRpb25EYXRhOwpAQCAtNTksMTAg
KzYxLDYgQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB+Q29ubmVjdGlvbigpOwogCi0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NyaXB0
Q29udGV4dEZhaWxlZFRvU3RhcnQoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYs
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcmlwdENvbnRleHRTdGFydGVkKGNvbnN0IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmluaXNoSW5zdGFsbChjb25zdCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vz
c2Z1bCk7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbihj
b25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgU2VydmljZVdvcmtlcklkZW50aWZp
ZXIpOwogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlc29sdmVSZWdpc3RyYXRpb25Q
cm9taXNlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKTsKICAgICAgICAgY29u
c3QgU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIGRvUmVnaXN0cmF0aW9uTWF0Y2hpbmcoY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMKSBjb25zdCB7
IHJldHVybiBtX3NlcnZlci5kb1JlZ2lzdHJhdGlvbk1hdGNoaW5nKHRvcE9yaWdpbiwgY2xpZW50
VVJMKTsgfQogCkBAIC04NywxMSArODUsNiBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCByZXNvbHZlVW5yZWdpc3RyYXRpb25Kb2JJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVudGlmaWVy
LCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgYm9vbCByZWdpc3RyYXRpb25S
ZXN1bHQpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hJbkNsaWVu
dCh1aW50NjRfdCBqb2JJZGVudGlmaWVyKSA9IDA7CiAKLSAgICAgICAgLy8gTWVzc2FnZXMgdG8g
dGhlIFNXIGhvc3QgV2ViUHJvY2VzcwotICAgICAgICB2aXJ0dWFsIHZvaWQgaW5zdGFsbFNlcnZp
Y2VXb3JrZXJDb250ZXh0KGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpID0gMDsKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKSA9IDA7Ci0KICAgICAgICAgU1dTZXJ2ZXImIG1fc2VydmVyOwogICAg
IH07CiAKQEAgLTExMywxMyArMTA2LDIyIEBAIHB1YmxpYzoKICAgICB2b2lkIHBvc3RUYXNrKENy
b3NzVGhyZWFkVGFzayYmKTsKICAgICB2b2lkIHBvc3RUYXNrUmVwbHkoQ3Jvc3NUaHJlYWRUYXNr
JiYpOwogCi0gICAgUmVmPFNXU2VydmVyV29ya2VyPiB1cGRhdGVXb3JrZXIoQ29ubmVjdGlvbiYs
IGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmIHNjcmlwdCwgV29ya2VyVHlwZSk7Ci0gICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KENv
bm5lY3Rpb24mLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgdm9pZCBmaXJlQWN0aXZh
dGVFdmVudChDb25uZWN0aW9uJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIHZvaWQg
dXBkYXRlV29ya2VyKENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIFdvcmtlclR5cGUpOworICAg
IHZvaWQgZmlyZUluc3RhbGxFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisgICAgdm9p
ZCBmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgU1dTZXJ2
ZXJXb3JrZXIqIHdvcmtlckJ5SUQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikg
Y29uc3QgeyByZXR1cm4gbV93b3JrZXJzQnlJRC5nZXQoaWRlbnRpZmllcik7IH0KICAgICAKICAg
ICBDb25uZWN0aW9uKiBnZXRDb25uZWN0aW9uKHVpbnQ2NF90IGlkZW50aWZpZXIpIHsgcmV0dXJu
IG1fY29ubmVjdGlvbnMuZ2V0KGlkZW50aWZpZXIpOyB9CiAKKyAgICB2b2lkIHNjcmlwdENvbnRl
eHRGYWlsZWRUb1N0YXJ0KFNXU2VydmVyV29ya2VyJiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsK
KyAgICB2b2lkIHNjcmlwdENvbnRleHRTdGFydGVkKFNXU2VydmVyV29ya2VyJik7CisgICAgdm9p
ZCBkaWRGaW5pc2hJbnN0YWxsKFNXU2VydmVyV29ya2VyJiwgYm9vbCB3YXNTdWNjZXNzZnVsKTsK
KyAgICB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oU1dTZXJ2ZXJXb3JrZXImKTsKKworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoKTsKKyAg
ICAKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSGFzaFNldDxTV1NlcnZlcio+JiBhbGxTZXJ2
ZXJzKCk7CisKIHByaXZhdGU6CiAgICAgdm9pZCByZWdpc3RlckNvbm5lY3Rpb24oQ29ubmVjdGlv
biYpOwogICAgIHZvaWQgdW5yZWdpc3RlckNvbm5lY3Rpb24oQ29ubmVjdGlvbiYpOwpAQCAtMTI4
LDEwICsxMzAsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlVGFza1JlcGxpZXNPbk1haW5U
aHJlYWQoKTsKIAogICAgIHZvaWQgc2NyaXB0RmV0Y2hGaW5pc2hlZChDb25uZWN0aW9uJiwgY29u
c3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0Jik7Ci0gICAgdm9pZCBzY3JpcHRDb250ZXh0RmFp
bGVkVG9TdGFydChDb25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eSYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAg
IHZvaWQgc2NyaXB0Q29udGV4dFN0YXJ0ZWQoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgdm9pZCBk
aWRGaW5pc2hJbnN0YWxsKENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCk7Ci0g
ICAgdm9pZCBkaWRGaW5pc2hBY3RpdmF0aW9uKENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIHZvaWQg
ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkmKTsKIAogICAgIHZvaWQgYWRkQ2xpZW50U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbihDb25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSYsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKQEAgLTEzOSw2ICsx
MzcsOCBAQCBwcml2YXRlOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgU1dTZXJ2ZXJSZWdp
c3RyYXRpb24qIGRvUmVnaXN0cmF0aW9uTWF0Y2hpbmcoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMKSBjb25zdDsKIAorICAgIHZvaWQgaW5z
dGFsbENvbnRleHREYXRhKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpOworCiAgICAg
SGFzaE1hcDx1aW50NjRfdCwgQ29ubmVjdGlvbio+IG1fY29ubmVjdGlvbnM7CiAgICAgSGFzaE1h
cDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LCBzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJS
ZWdpc3RyYXRpb24+PiBtX3JlZ2lzdHJhdGlvbnM7CiAgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5LCBzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJKb2JRdWV1ZT4+IG1fam9i
UXVldWVzOwpAQCAtMTUzLDYgKzE1Myw4IEBAIHByaXZhdGU6CiAKICAgICBMb2NrIG1fbWFpblRo
cmVhZFJlcGx5TG9jazsKICAgICBib29sIG1fbWFpblRocmVhZFJlcGx5U2NoZWR1bGVkIHsgZmFs
c2UgfTsKKworICAgIERlcXVlPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gbV9wZW5kaW5nQ29u
dGV4dERhdGFzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5j
cHAKaW5kZXggYzk3YTM5ODFmMjIuLjM2Y2U2YWNkOTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAK
QEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlz
aGVkKFNXU2VydmVyOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb24KICAgICBtX3NlcnZlci51
cGRhdGVXb3JrZXIoY29ubmVjdGlvbiwgbV9yZWdpc3RyYXRpb25LZXksIGpvYi5zY3JpcHRVUkws
IHJlc3VsdC5zY3JpcHQsIFdvcmtlclR5cGU6OkNsYXNzaWMpOwogfQogCi12b2lkIFNXU2VydmVy
Sm9iUXVldWU6OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KFNXU2VydmVyOjpDb25uZWN0aW9u
JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
CiB7CiAgICAgYXV0byogcmVnaXN0cmF0aW9uID0gbV9zZXJ2ZXIuZ2V0UmVnaXN0cmF0aW9uKG1f
cmVnaXN0cmF0aW9uS2V5KTsKICAgICBBU1NFUlQocmVnaXN0cmF0aW9uKTsKQEAgLTEwMCwxNiAr
MTAwLDE2IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3Rh
cnQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBTZXJ2aWNlCiAgICAgVU5VU0VEX1BBUkFNKG1lc3Nh
Z2UpOwogfQogCi12b2lkIFNXU2VydmVySm9iUXVldWU6OnNjcmlwdENvbnRleHRTdGFydGVkKFNX
U2VydmVyOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBp
ZGVudGlmaWVyKQordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRDb250ZXh0U3RhcnRlZChT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIGF1dG8qIHJlZ2lzdHJh
dGlvbiA9IG1fc2VydmVyLmdldFJlZ2lzdHJhdGlvbihtX3JlZ2lzdHJhdGlvbktleSk7CiAgICAg
QVNTRVJUKHJlZ2lzdHJhdGlvbik7CiAKLSAgICBpbnN0YWxsKCpyZWdpc3RyYXRpb24sIGNvbm5l
Y3Rpb24sIGlkZW50aWZpZXIpOworICAgIGluc3RhbGwoKnJlZ2lzdHJhdGlvbiwgaWRlbnRpZmll
cik7CiB9CiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNpbnN0YWxs
Ci12b2lkIFNXU2VydmVySm9iUXVldWU6Omluc3RhbGwoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJl
Z2lzdHJhdGlvbiwgU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBpbnN0YWxsaW5nV29ya2VyKQordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjppbnN0YWxsKFNXU2Vy
dmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlu
c3RhbGxpbmdXb3JrZXIpCiB7CiAgICAgLy8gVGhlIEluc3RhbGwgYWxnb3JpdGhtIHNob3VsZCBu
ZXZlciBiZSBpbnZva2VkIHdpdGggYSBudWxsIHdvcmtlci4KICAgICBhdXRvKiB3b3JrZXIgPSBt
X3NlcnZlci53b3JrZXJCeUlEKGluc3RhbGxpbmdXb3JrZXIpOwpAQCAtMTIzLDcgKzEyMyw3IEBA
IHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6aW5zdGFsbChTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVn
aXN0cmF0aW9uLCBTV1NlcnZlcjo6Q29uCiB9CiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9T
ZXJ2aWNlV29ya2VyLyNpbnN0YWxsIChhZnRlciByZXNvbHZpbmcgcHJvbWlzZSkuCi12b2lkIFNX
U2VydmVySm9iUXVldWU6OmRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKFNXU2VydmVyOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uKQordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpkaWRSZXNvbHZl
UmVnaXN0cmF0aW9uUHJvbWlzZSgpCiB7CiAgICAgYXV0byogcmVnaXN0cmF0aW9uID0gbV9zZXJ2
ZXIuZ2V0UmVnaXN0cmF0aW9uKG1fcmVnaXN0cmF0aW9uS2V5KTsKICAgICBBU1NFUlQocmVnaXN0
cmF0aW9uKTsKQEAgLTEzNCwxMSArMTM0LDExIEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6ZGlk
UmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mIGNvbm5lCiAg
ICAgcmVnaXN0cmF0aW9uLT5maXJlVXBkYXRlRm91bmRFdmVudCgpOwogCiAgICAgLy8gUXVldWUg
YSB0YXNrIHRvIGZpcmUgdGhlIEluc3RhbGxFdmVudC4KLSAgICBtX3NlcnZlci5maXJlSW5zdGFs
bEV2ZW50KGNvbm5lY3Rpb24sIHJlZ2lzdHJhdGlvbi0+aW5zdGFsbGluZ1dvcmtlcigpLT5pZGVu
dGlmaWVyKCkpOworICAgIG1fc2VydmVyLmZpcmVJbnN0YWxsRXZlbnQocmVnaXN0cmF0aW9uLT5p
bnN0YWxsaW5nV29ya2VyKCktPmlkZW50aWZpZXIoKSk7CiB9CiAKIC8vIGh0dHBzOi8vdzNjLmdp
dGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNpbnN0YWxsCi12b2lkIFNXU2VydmVySm9iUXVldWU6OmRp
ZEZpbmlzaEluc3RhbGwoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkKK3ZvaWQgU1dT
ZXJ2ZXJKb2JRdWV1ZTo6ZGlkRmluaXNoSW5zdGFsbChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCiB7CiAgICAgYXV0byogcmVnaXN0cmF0aW9u
ID0gbV9zZXJ2ZXIuZ2V0UmVnaXN0cmF0aW9uKG1fcmVnaXN0cmF0aW9uS2V5KTsKICAgICBBU1NF
UlQocmVnaXN0cmF0aW9uKTsKQEAgLTE3NSwxMSArMTc1LDExIEBAIHZvaWQgU1dTZXJ2ZXJKb2JR
dWV1ZTo6ZGlkRmluaXNoSW5zdGFsbChTV1NlcnZlcjo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
U2VydmljCiAgICAgZmluaXNoQ3VycmVudEpvYigpOwogCiAgICAgLy8gRklYTUU6IFdhaXQgZm9y
IGFsbCB0aGUgdGFza3MgcXVldWVkIGJ5IFVwZGF0ZSBXb3JrZXIgU3RhdGUgaW52b2tlZCBpbiB0
aGlzIGFsZ29yaXRobSBoYXZlIGV4ZWN1dGVkLgotICAgIHRyeUFjdGl2YXRlKG1fc2VydmVyLCBj
b25uZWN0aW9uLCAqcmVnaXN0cmF0aW9uKTsKKyAgICB0cnlBY3RpdmF0ZShtX3NlcnZlciwgKnJl
Z2lzdHJhdGlvbik7CiB9CiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2Vy
LyN0cnktYWN0aXZhdGUtYWxnb3JpdGhtCi12b2lkIFNXU2VydmVySm9iUXVldWU6OnRyeUFjdGl2
YXRlKFNXU2VydmVyJiBzZXJ2ZXIsIFNXU2VydmVyOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBT
V1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uKQordm9pZCBTV1NlcnZlckpvYlF1ZXVl
Ojp0cnlBY3RpdmF0ZShTV1NlcnZlciYgc2VydmVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVn
aXN0cmF0aW9uKQogewogICAgIC8vIElmIHJlZ2lzdHJhdGlvbidzIHdhaXRpbmcgd29ya2VyIGlz
IG51bGwsIHJldHVybi4KICAgICBpZiAoIXJlZ2lzdHJhdGlvbi53YWl0aW5nV29ya2VyKCkpCkBA
IC0xOTMsMTEgKzE5MywxMSBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnRyeUFjdGl2YXRlKFNX
U2VydmVyJiBzZXJ2ZXIsIFNXU2VydmVyOjpDb25uZWN0aW9uJiBjb25uZQogICAgIC8vIC0gVGhl
IHJlc3VsdCBvZiBydW5uaW5nIFNlcnZpY2UgV29ya2VyIEhhcyBObyBQZW5kaW5nIEV2ZW50cyB3
aXRoIHJlZ2lzdHJhdGlvbidzIGFjdGl2ZSB3b3JrZXIgaXMgdHJ1ZSwKICAgICAvLyAgIGFuZCBu
byBzZXJ2aWNlIHdvcmtlciBjbGllbnQgaXMgdXNpbmcgcmVnaXN0cmF0aW9uIG9yIHJlZ2lzdHJh
dGlvbidzIHdhaXRpbmcgd29ya2VyJ3Mgc2tpcCB3YWl0aW5nCiAgICAgLy8gICBmbGFnIGlzIHNl
dC4KLSAgICBhY3RpdmF0ZShzZXJ2ZXIsIGNvbm5lY3Rpb24sIHJlZ2lzdHJhdGlvbik7CisgICAg
YWN0aXZhdGUoc2VydmVyLCByZWdpc3RyYXRpb24pOwogfQogCiAvLyBodHRwczovL3czYy5naXRo
dWIuaW8vU2VydmljZVdvcmtlci8jYWN0aXZhdGUKLXZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6YWN0
aXZhdGUoU1dTZXJ2ZXImIHNlcnZlciwgU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24pCit2b2lkIFNXU2VydmVySm9iUXVl
dWU6OmFjdGl2YXRlKFNXU2VydmVyJiBzZXJ2ZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdp
c3RyYXRpb24pCiB7CiAgICAgLy8gSWYgcmVnaXN0cmF0aW9uJ3Mgd2FpdGluZyB3b3JrZXIgaXMg
bnVsbCwgYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAgaWYgKCFyZWdpc3RyYXRpb24ud2FpdGluZ1dv
cmtlcigpKQpAQCAtMjIxLDcgKzIyMSw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6YWN0aXZh
dGUoU1dTZXJ2ZXImIHNlcnZlciwgU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mIGNvbm5lY3RpCiAgICAg
Ly8gRklYTUU6IEludm9rZSBSdW4gU2VydmljZSBXb3JrZXIgYWxnb3JpdGhtIHdpdGggYWN0aXZl
V29ya2VyIGFzIHRoZSBhcmd1bWVudC4KIAogICAgIC8vIFF1ZXVlIGEgdGFzayB0byBmaXJlIHRo
ZSBhY3RpdmF0ZSBldmVudC4KLSAgICBzZXJ2ZXIuZmlyZUFjdGl2YXRlRXZlbnQoY29ubmVjdGlv
biwgcmVnaXN0cmF0aW9uLmFjdGl2ZVdvcmtlcigpLT5pZGVudGlmaWVyKCkpOworICAgIHNlcnZl
ci5maXJlQWN0aXZhdGVFdmVudChyZWdpc3RyYXRpb24uYWN0aXZlV29ya2VyKCktPmlkZW50aWZp
ZXIoKSk7CiB9CiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNhY3Rp
dmF0ZSAocG9zdCBhY3RpdmF0ZSBldmVudCBzdGVwcykuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5oCmluZGV4IDJm
NzdiMDk3ZjIxLi4zMTBkMThiM2IwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmgKQEAgLTQ4LDExICs0OCwx
MSBAQCBwdWJsaWM6CiAgICAgdm9pZCBydW5OZXh0Sm9iKCk7CiAKICAgICB2b2lkIHNjcmlwdEZl
dGNoRmluaXNoZWQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyRmV0
Y2hSZXN1bHQmKTsKLSAgICB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KFNXU2VydmVy
OjpDb25uZWN0aW9uJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSk7Ci0gICAgdm9pZCBzY3JpcHRDb250ZXh0U3RhcnRlZChTV1NlcnZlcjo6Q29ubmVjdGlv
biYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwo
U1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3YXNT
dWNjZXNzZnVsKTsKKyAgICB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgc2NyaXB0
Q29udGV4dFN0YXJ0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIHZvaWQgZGlkRmlu
aXNoSW5zdGFsbChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKTsK
ICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hBY3RpdmF0aW9uKFNXU2VydmVyUmVnaXN0cmF0aW9u
JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAgIHZvaWQgZGlkUmVzb2x2ZVJlZ2lzdHJh
dGlvblByb21pc2UoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mKTsKKyAgICB2b2lkIGRpZFJlc29sdmVS
ZWdpc3RyYXRpb25Qcm9taXNlKCk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBqb2JUaW1lckZpcmVk
KCk7CkBAIC02Niw5ICs2Niw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHRyeUNsZWFyUmVnaXN0
cmF0aW9uKFNXU2VydmVyUmVnaXN0cmF0aW9uJik7CiAgICAgdm9pZCBjbGVhclJlZ2lzdHJhdGlv
bihTV1NlcnZlclJlZ2lzdHJhdGlvbiYpOwotICAgIHZvaWQgaW5zdGFsbChTV1NlcnZlclJlZ2lz
dHJhdGlvbiYsIFNXU2VydmVyOjpDb25uZWN0aW9uJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIp
OwotICAgIHN0YXRpYyB2b2lkIHRyeUFjdGl2YXRlKFNXU2VydmVyJiwgU1dTZXJ2ZXI6OkNvbm5l
Y3Rpb24mLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYpOwotICAgIHN0YXRpYyB2b2lkIGFjdGl2YXRl
KFNXU2VydmVyJiwgU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYp
OworICAgIHZvaWQgaW5zdGFsbChTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgdm9pZCB0cnlBY3RpdmF0ZShTV1NlcnZlciYsIFNXU2Vy
dmVyUmVnaXN0cmF0aW9uJik7CisgICAgc3RhdGljIHZvaWQgYWN0aXZhdGUoU1dTZXJ2ZXImLCBT
V1NlcnZlclJlZ2lzdHJhdGlvbiYpOwogCiAgICAgRGVxdWU8U2VydmljZVdvcmtlckpvYkRhdGE+
IG1fam9iUXVldWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggZjczYmVmZWNi
NDMuLjczMjc3OTdiODA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcApAQCAtMzcsOCAr
MzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllciBnZW5lcmF0ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyKCkKIHsKLSAgICBzdGF0aWMgdWludDY0X3QgaWRlbnRpZmllciA9IDA7Ci0gICAgcmV0dXJu
IG1ha2VPYmplY3RJZGVudGlmaWVyPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
VHlwZT4oKytpZGVudGlmaWVyKTsKKyAgICByZXR1cm4gZ2VuZXJhdGVPYmplY3RJZGVudGlmaWVy
PFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyVHlwZT4oKTsKIH0KIAogU1dTZXJ2
ZXJSZWdpc3RyYXRpb246OlNXU2VydmVyUmVnaXN0cmF0aW9uKFNXU2VydmVyJiBzZXJ2ZXIsIGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIGtleSwgU2VydmljZVdvcmtlclVwZGF0
ZVZpYUNhY2hlIHVwZGF0ZVZpYUNhY2hlLCBjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwm
IHNjcmlwdFVSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjI5MmJkNjRlYTkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmgiCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJTV1NlcnZlci5o
IgorI2luY2x1ZGUgIlNXU2VydmVyV29ya2VyLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIFNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbklkZW50aWZpZXIgZ2VuZXJhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRl
bnRpZmllcigpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlT2JqZWN0SWRlbnRpZmllcjxTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyVHlwZT4oKTsKK30KKworc3RhdGljIEhhc2hN
YXA8U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciwgU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uKj4mIGFsbENvbm5lY3Rpb25zKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8SGFzaE1hcDxTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyLCBTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24qPj4gY29ubmVjdGlvbnM7CisgICAgcmV0dXJuIGNvbm5l
Y3Rpb25zOworfQorCitTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbigpCisgICAgOiBtX2lkZW50aWZpZXIoZ2VuZXJhdGVTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uSWRlbnRpZmllcigpKQoreworICAgIGF1dG8gcmVzdWx0ID0gYWxsQ29ubmVj
dGlvbnMoKS5hZGQobV9pZGVudGlmaWVyLCB0aGlzKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3Vs
dCwgcmVzdWx0LmlzTmV3RW50cnkpOworfQorCitTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
On5TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQoreworICAgIGF1dG8gdGFrZW4gPSBhbGxD
b25uZWN0aW9ucygpLnRha2UobV9pZGVudGlmaWVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHRha2Vu
LCB0YWtlbiA9IHRoaXMpOworfQorCitTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIFNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvcklkZW50aWZpZXIoU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBh
bGxDb25uZWN0aW9ucygpLmdldChpZGVudGlmaWVyKTsKK30KKworU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24oKQoreworICAgIGlmIChhbGxDb25uZWN0aW9ucygpLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgQVNTRVJUKGFsbENvbm5lY3Rpb25z
KCkuc2l6ZSgpID09IDEpOworICAgIHJldHVybiBhbGxDb25uZWN0aW9ucygpLmJlZ2luKCktPnZh
bHVlOworfQorCit2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2NyaXB0Q29udGV4
dEZhaWxlZFRvU3RhcnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAoYXV0byogd29ya2VyID0g
U1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcikpCisgICAgICAgIHdvcmtlci0+c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQo
bWVzc2FnZSk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzY3JpcHRD
b250ZXh0U3RhcnRlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllcikKK3sKKyAgICBpZiAoYXV0byogd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5n
V29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpCisgICAgICAgIHdv
cmtlci0+c2NyaXB0Q29udGV4dFN0YXJ0ZWQoKTsKK30KKyAgICAKK3ZvaWQgU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpkaWRGaW5pc2hJbnN0YWxsKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCit7CisgICAgaWYg
KGF1dG8qIHdvcmtlciA9IFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZp
ZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKQorICAgICAgICB3b3JrZXItPmRpZEZpbmlzaElu
c3RhbGwod2FzU3VjY2Vzc2Z1bCk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjpkaWRGaW5pc2hBY3RpdmF0aW9uKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvKiB3b3JrZXIgPSBTV1NlcnZlcldvcmtl
cjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkK
KyAgICAgICAgd29ya2VyLT5kaWRGaW5pc2hBY3RpdmF0aW9uKCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwLi5mNmEwMmRlYTk5NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAg
LTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSAiU2VydmljZVdvcmtlcklkZW50aWZpZXIuaCIKKyNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTV1NlcnZlcjsKK3N0
cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CisKK2NsYXNzIFNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24+IHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKKworICAgIFNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsg
fQorCisgICAgLy8gTWVzc2FnZXMgdG8gdGhlIFNXIGhvc3QgcHJvY2VzcworICAgIHZpcnR1YWwg
dm9pZCBpbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgU2VydmljZVdvcmtlckNvbnRl
eHREYXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7CisKKyAgICAvLyBNZXNzYWdlcyBiYWNrIGZy
b20gdGhlIFNXIGhvc3QgcHJvY2VzcworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NyaXB0Q29u
dGV4dEZhaWxlZFRvU3RhcnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JpcHRDb250ZXh0U3RhcnRlZChT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRGaW5p
c2hJbnN0YWxsKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbihTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcik7CisKKyAgICBzdGF0aWMgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBj
b25uZWN0aW9uRm9ySWRlbnRpZmllcihTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlm
aWVyKTsKKworICAgIC8vIEZJWE1FOiBXaGlsZSB3ZSBvbmx5IGV2ZXIgaGF2ZSBvbmUgU1cgY29u
dGV4dCBwcm9jZXNzIHRoaXMgbWV0aG9kIG1ha2VzIHNlbnNlLgorICAgIC8vIE9uY2Ugd2UgaGF2
ZSBtdWx0aXBsZSBvbmVzIHRoaXMgbWV0aG9kIHNob3VsZCBnbyBhd2F5LgorICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIGdsb2JhbFNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24oKTsKKworcHJvdGVjdGVkOgorICAgIFdFQkNPUkVfRVhQT1JUIFNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOworCitwcml2YXRlOgorICAgIFNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgbV9pZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmNwcAppbmRleCAxMjVhMjY0ZjU3Yy4uNWJiMjMwY2ZmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3Bw
CkBAIC0yOCwyNCArMjgsNjUgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNX
U2VydmVyV29ya2VyOjpTV1NlcnZlcldvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHNj
cmlwdCwgV29ya2VyVHlwZSB0eXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVy
KQotICAgIDogbV9yZWdpc3RyYXRpb25LZXkocmVnaXN0cmF0aW9uS2V5KQorc3RhdGljIEhhc2hN
YXA8U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNXU2VydmVyV29ya2VyKj4mIGFsbFdvcmtlcnMo
KQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBTV1NlcnZlcldvcmtlcio+PiB3b3JrZXJzOworICAgIHJldHVybiB3b3JrZXJzOwor
fQorCitTV1NlcnZlcldvcmtlciogU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRl
bnRpZmllcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIHJldHVy
biBhbGxXb3JrZXJzKCkuZ2V0KGlkZW50aWZpZXIpOworfQorCitTV1NlcnZlcldvcmtlcjo6U1dT
ZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImIHNlcnZlciwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVu
dGlmaWVyIGNvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgc2NyaXB0LCBXb3JrZXJUeXBlIHR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIpCisgICAgOiBtX3NlcnZlcihzZXJ2ZXIpCisgICAgLCBtX3JlZ2lzdHJhdGlv
bktleShyZWdpc3RyYXRpb25LZXkpCisgICAgLCBtX2NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmll
cihjb250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIpCiAgICAgLCBtX3NjcmlwdFVSTCh1cmwpCiAg
ICAgLCBtX3NjcmlwdChzY3JpcHQpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAg
ICAsIG1fdHlwZSh0eXBlKQogeworICAgIGF1dG8gcmVzdWx0ID0gYWxsV29ya2VycygpLmFkZChp
ZGVudGlmaWVyLCB0aGlzKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3
RW50cnkpOwogfQogCi1TV1NlcnZlcldvcmtlcjo6flNXU2VydmVyV29ya2VyKCkgPSBkZWZhdWx0
OworU1dTZXJ2ZXJXb3JrZXI6On5TV1NlcnZlcldvcmtlcigpCit7CisgICAgYXV0byB0YWtlbiA9
IGFsbFdvcmtlcnMoKS50YWtlKG1faWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRCh0YWtl
biwgdGFrZW4gPT0gdGhpcyk7Cit9CiAKIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnRlcm1pbmF0ZSgp
CiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudAogfQogCit2b2lkIFNXU2VydmVyV29ya2VyOjpz
Y3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAg
bV9zZXJ2ZXIuc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoKnRoaXMsIG1lc3NhZ2UpOworfQor
Cit2b2lkIFNXU2VydmVyV29ya2VyOjpzY3JpcHRDb250ZXh0U3RhcnRlZCgpCit7CisgICAgbV9z
ZXJ2ZXIuc2NyaXB0Q29udGV4dFN0YXJ0ZWQoKnRoaXMpOworfQorCit2b2lkIFNXU2VydmVyV29y
a2VyOjpkaWRGaW5pc2hJbnN0YWxsKGJvb2wgd2FzU3VjY2Vzc2Z1bCkKK3sKKyAgICBtX3NlcnZl
ci5kaWRGaW5pc2hJbnN0YWxsKCp0aGlzLCB3YXNTdWNjZXNzZnVsKTsKK30KKwordm9pZCBTV1Nl
cnZlcldvcmtlcjo6ZGlkRmluaXNoQWN0aXZhdGlvbigpCit7CisgICAgbV9zZXJ2ZXIuZGlkRmlu
aXNoQWN0aXZhdGlvbigqdGhpcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAppbmRleCBhYmNkNTljZTkx
MC4uNTcwMWUxNDQ3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKQEAgLTM1LDEzICszNSwxNCBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNXU2VydmVyOwogZW51bSBjbGFzcyBXb3JrZXJUeXBl
OwogCiBjbGFzcyBTV1NlcnZlcldvcmtlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxT
V1NlcnZlcldvcmtlcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U1dTZXJ2ZXJXb3JrZXI+
IGNyZWF0ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25L
ZXksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgV29ya2VyVHlwZSB0eXBl
LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIHRlbXBsYXRlIDx0eXBl
bmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmPFNXU2VydmVyV29ya2VyPiBjcmVhdGUoQXJncyYmLi4u
IGFyZ3MpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTV1NlcnZlcldvcmtl
cihyZWdpc3RyYXRpb25LZXksIHVybCwgc2NyaXB0LCB0eXBlLCBpZGVudGlmaWVyKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNXU2VydmVyV29ya2VyKHN0ZDo6Zm9yd2FyZDxBcmdz
PihhcmdzKS4uLikpOwogICAgIH0KICAgICAKICAgICBTV1NlcnZlcldvcmtlcihjb25zdCBTV1Nl
cnZlcldvcmtlciYpID0gZGVsZXRlOwpAQCAtNDksMTkgKzUwLDMwIEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgdGVybWluYXRlKCk7CiAKKyAgICBTV1NlcnZlciYgc2VydmVyKCk7CisgICAgY29uc3Qg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWdpc3RyYXRpb25LZXk7IH0KICAgICBjb25zdCBVUkwmIHNjcmlwdFVSTCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2NyaXB0VVJMOyB9CiAgICAgY29uc3QgU3RyaW5nJiBzY3JpcHQoKSBj
b25zdCB7IHJldHVybiBtX3NjcmlwdDsgfQogICAgIFdvcmtlclR5cGUgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZTsgfQogCiAgICAgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIFNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbklkZW50aWZpZXIgY29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9jb250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXI7IH0KIAogICAgIFNlcnZpY2VX
b3JrZXJTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KICAgICB2b2lkIHNl
dFN0YXRlKFNlcnZpY2VXb3JrZXJTdGF0ZSBzdGF0ZSkgeyBtX3N0YXRlID0gc3RhdGU7IH0KIAor
ICAgIHZvaWQgc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29uc3QgU3RyaW5nJiBtZXNzYWdl
KTsKKyAgICB2b2lkIHNjcmlwdENvbnRleHRTdGFydGVkKCk7CisgICAgdm9pZCBkaWRGaW5pc2hJ
bnN0YWxsKGJvb2wgd2FzU3VjY2Vzc2Z1bCk7CisgICAgdm9pZCBkaWRGaW5pc2hBY3RpdmF0aW9u
KCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU1dTZXJ2ZXJXb3JrZXIqIGV4aXN0aW5n
V29ya2VyRm9ySWRlbnRpZmllcihTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiBwcml2YXRlOgot
ICAgIFNXU2VydmVyV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgV29ya2VyVHlwZSwgU2VydmljZVdvcmtl
cklkZW50aWZpZXIpOworICAgIFNXU2VydmVyV29ya2VyKFNXU2VydmVyJiwgY29uc3QgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50
aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXb3JrZXJUeXBlLCBTZXJ2
aWNlV29ya2VySWRlbnRpZmllcik7CiAKKyAgICBTV1NlcnZlciYgbV9zZXJ2ZXI7CiAgICAgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBtX3JlZ2lzdHJhdGlvbktleTsKKyAgICBTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyIG1fY29udGV4dENvbm5lY3Rpb25JZGVudGlm
aWVyOwogICAgIFVSTCBtX3NjcmlwdFVSTDsKICAgICBTdHJpbmcgbV9zY3JpcHQ7CiAgICAgU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5t
YWtlCmluZGV4IDQzOWIxZWU4Zjg5Li5kNzIxYzBiMThjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMubWFrZQpAQCAtMTY0LDYgKzE2NCw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFdl
YlNXQ2xpZW50Q29ubmVjdGlvbiBcCiAgICAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24g
XAogICAgIFdlYlNXU2VydmVyQ29ubmVjdGlvbiBcCisgICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uIFwKICAgICBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyIFwKICAgICBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkgXAogICAgIFdlYlByb2Nlc3MgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA5OGQ5N2FkZmM4NC4uZTk5Y2I2ZGQ4
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBA
IC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1dvcmtlclR5cGUuaD4KIAogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNb25vdG9uaWNUaW1lOwpA
QCAtNzk3LDYgKzc5OCwxNCBAQCB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3Jl
OjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeT4gewogICAgID47CiB9OwogCit0ZW1wbGF0ZSA8PiBz
dHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpXb3JrZXJUeXBlPiB7CisgICAgdXNpbmcgdmFsdWVz
ID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6V29ya2VyVHlwZSwKKyAgICAgICAgV2Vi
Q29yZTo6V29ya2VyVHlwZTo6Q2xhc3NpYywKKyAgICAgICAgV2ViQ29yZTo6V29ya2VyVHlwZTo6
TW9kdWxlCisgICAgPjsKK307CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiB0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2Fj
aGU+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCA2YmM1ODlhOTU3Mi4uNmZhZmY0ODE0YjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC00MCw2ICs0MCw3IEBACiAj
aW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1
ZGUgIldlYlNXT3JpZ2luU3RvcmUuaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb25N
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgIldlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9FeGNlcHRpb25EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5o
PgpAQCAtMTExLDI0ICsxMTIsNiBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6dXBkYXRl
V29ya2VyU3RhdGVJbkNsaWVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciB3bwogICAgIHNlbmQo
TWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6VXBkYXRlV29ya2VyU3RhdGUod29ya2Vy
LCBzdGF0ZSkpOwogfQogCi12b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZp
Y2VXb3JrZXJDb250ZXh0KGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKLXsK
LSAgICBpZiAoc2VuZFRvQ29udGV4dFByb2Nlc3MoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpJbnN0YWxsU2VydmljZVdvcmtlcihpZGVudGlmaWVyKCksIGRhdGEpKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wZW5kaW5nQ29udGV4dERhdGFzLmFwcGVuZChkYXRh
KTsKLX0KLQotdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmZpcmVJbnN0YWxsRXZlbnQoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCi17Ci0gICAgc2Vu
ZFRvQ29udGV4dFByb2Nlc3MoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpGaXJlSW5zdGFsbEV2ZW50KGlkZW50aWZpZXIoKSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIp
KTsKLX0KLQotdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmZpcmVBY3RpdmF0ZUV2ZW50KFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQotewotICAgIHNl
bmRUb0NvbnRleHRQcm9jZXNzKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6RmlyZUFjdGl2YXRlRXZlbnQoaWRlbnRpZmllcigpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmll
cikpOwotfQotCiB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaCh1aW50NjRf
dCBmZXRjaElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlcklkZW50aWZpZXI+
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBzZW5kVG9Db250ZXh0UHJvY2Vz
cyhNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlN0YXJ0RmV0Y2goaWRl
bnRpZmllcigpLCBmZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCByZXF1
ZXN0LCBvcHRpb25zKSk7CkBAIC0xNzksMjUgKzE2MiwxMiBAQCB2b2lkIFdlYlNXU2VydmVyQ29u
bmVjdGlvbjo6bWF0Y2hSZWdpc3RyYXRpb24odWludDY0X3QgcmVnaXN0cmF0aW9uTWF0Y2hSZXF1
ZXN0SQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6RGlkTWF0Y2hS
ZWdpc3RyYXRpb24geyByZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om51
bGxvcHQgfSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjpzZW5kVG9Db250ZXh0UHJvY2VzcyhVJiYgbWVzc2FnZSkKK3RlbXBsYXRlPHR5cGVu
YW1lIFU+IHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzZW5kVG9Db250ZXh0UHJvY2VzcyhV
JiYgbWVzc2FnZSkKIHsKLSAgICBpZiAoIW1fY29udGV4dENvbm5lY3Rpb24pCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIHJldHVybiBtX2NvbnRleHRDb25uZWN0aW9uLT5zZW5kPFU+KFdU
Rk1vdmUobWVzc2FnZSksIDApOworICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gU3RvcmFnZVBy
b2Nlc3M6OnNpbmdsZXRvbigpLmdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKSkKKyAg
ICAgICAgY29ubmVjdGlvbi0+c2VuZChXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIAotdm9pZCBXZWJT
V1NlcnZlckNvbm5lY3Rpb246OnNldENvbnRleHRDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiog
Y29ubmVjdGlvbikKLXsKLSAgICBtX2NvbnRleHRDb25uZWN0aW9uID0gY29ubmVjdGlvbjsKLQot
ICAgIC8vIFdlIGNhbiBub3cgc3RhcnQgYW55IHBlbmRpbmcgc2VydmljZSB3b3JrZXIgdXBkYXRl
cy4KLSAgICBmb3IgKGF1dG8mIHBlbmRpbmdDb250ZXh0RGF0YSA6IG1fcGVuZGluZ0NvbnRleHRE
YXRhcykKLSAgICAgICAgaW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KHBlbmRpbmdDb250ZXh0
RGF0YSk7Ci0gICAgCi0gICAgbV9wZW5kaW5nQ29udGV4dERhdGFzLmNsZWFyKCk7Ci19Ci0gICAg
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAppbmRleCA3ZjFjZDUxZWNmMS4u
YjgwYjNiZmQ0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTQ2
LDcgKzQ2LDYgQEAgcHVibGljOgogICAgIH5XZWJTV1NlcnZlckNvbm5lY3Rpb24oKSBmaW5hbDsK
IAogICAgIHZvaWQgZGlzY29ubmVjdGVkRnJvbVdlYlByb2Nlc3MoKTsKLSAgICB2b2lkIHNldENv
bnRleHRDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiopOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKICAgICBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQpAQCAt
NzUsMjIgKzc0LDE1IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIG1hdGNoUmVnaXN0cmF0aW9uKHVp
bnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgY2xpZW50VVJMKTsKIAot
ICAgIC8vIE1lc3NhZ2VzIHRvIHRoZSBTVyBjb250ZXh0IFdlYlByb2Nlc3MKLSAgICB2b2lkIGlu
c3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEmKSBmaW5hbDsKLSAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwotICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQo
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwotCiAgICAgSVBDOjpDb25u
ZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGZpbmFsIHsgcmV0dXJuIG1fY29udGVu
dENvbm5lY3Rpb24ucHRyKCk7IH0KICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRp
b25JRCgpIGZpbmFsIHsgcmV0dXJuIGlkZW50aWZpZXIoKTsgfQotCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVT4gYm9vbCBzZW5kVG9Db250ZXh0UHJvY2VzcyhVJiYgbWVzc2FnZSk7CiAgICAgCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBzZW5kVG9Db250ZXh0UHJvY2VzcyhVJiYgbWVz
c2FnZSk7CisKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKIAogICAgIFJlZjxJUEM6
OkNvbm5lY3Rpb24+IG1fY29udGVudENvbm5lY3Rpb247CiAgICAgUmVmUHRyPElQQzo6Q29ubmVj
dGlvbj4gbV9jb250ZXh0Q29ubmVjdGlvbjsKLSAgICAKLSAgICBEZXF1ZTxXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGE+IG1fcGVuZGluZ0NvbnRleHREYXRhczsKIH07IC8vIGNsYXNz
IFdlYlNXU2VydmVyQ29ubmVjdGlvbgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmE4YzU5ZWU5OTkyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaCIKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgIldlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Nl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVj
dGlvbikKKyAgICA6IG1faXBjQ29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQoreworfQor
CitJUEM6OkNvbm5lY3Rpb24qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2Fn
ZVNlbmRlckNvbm5lY3Rpb24oKQoreworICAgIHJldHVybiBtX2lwY0Nvbm5lY3Rpb24ucHRyKCk7
Cit9CisKK3VpbnQ2NF90IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVNl
bmRlckRlc3RpbmF0aW9uSUQoKQoreworICAgIHJldHVybiAwOworfQorCit2b2lkIFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkNsb3NlZCgpCit7CisgICAgLy8gRklY
TUU6IERvIHdoYXQgaGVyZS4uLj8KK30KKwordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246Omluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEmIGRhdGEpCit7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246Okluc3RhbGxTZXJ2aWNlV29ya2VyKGRhdGEpKTsKK30KKwordm9pZCBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZpcmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtl
cklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCit7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkZpcmVJbnN0YWxsRXZlbnQoc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIpKTsKK30KKwordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OmZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpGaXJlQWN0aXZhdGVFdmVudChzZXJ2aWNlV29ya2VySWRlbnRpZmllcikp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzBiZDgzODRiMmEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw2OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQor
CisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24g
OiBwdWJsaWMgV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLCBwdWJsaWMgSVBD
OjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmPFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKHN0ZDo6
Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgIH0KKworICAgIHZvaWQgY29ubmVjdGlvbkNs
b3NlZCgpOworCisgICAgSVBDOjpDb25uZWN0aW9uKiBpcGNDb25uZWN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9pcGNDb25uZWN0aW9uLnB0cigpOyB9CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgZmluYWw7CisKK3ByaXZhdGU6CisgICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYpOworCisgICAgLy8gSVBDOjpNZXNzYWdlU2Vu
ZGVyCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGZpbmFs
OworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgZmluYWw7CisKKyAg
ICAvLyBNZXNzYWdlcyB0byB0aGUgU1cgaG9zdCBXZWJQcm9jZXNzCisgICAgdm9pZCBpbnN0YWxs
U2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHRE
YXRhJikgZmluYWw7CisgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKKyAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKKyAgICAKKyAgICBSZWY8SVBDOjpD
b25uZWN0aW9uPiBtX2lwY0Nvbm5lY3Rpb247CisgICAgCit9OyAvLyBjbGFzcyBXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3Rv
cmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41OTQ4ZTM3M2U2YgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzNCBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQorCittZXNzYWdlcyAtPiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24geworICAgICMg
V2hlbiBwb3NzaWJsZSwgdGhlc2UgbWVzc2FnZXMgY2FuIGJlIGltcGxlbWVudGVkIGRpcmVjdGx5
IGJ5IFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbgorCisgICAgU2NyaXB0Q29u
dGV4dEZhaWxlZFRvU3RhcnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgU3RyaW5nIG1lc3NhZ2UpOworICAgIFNjcmlwdENvbnRleHRTdGFydGVkKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpOworICAgIERpZEZpbmlzaEluc3Rh
bGwoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCB3YXNT
dWNjZXNzZnVsKTsKKyAgICBEaWRGaW5pc2hBY3RpdmF0aW9uKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdl
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNz
LmNwcAppbmRleCAxMThkZGQ3ZmQ2NS4uMWU0YTFhZWIwZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwCkBAIC0zMywxMCArMzMsMTMgQEAK
ICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJTV09yaWdp
blN0b3JlLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSURCS2V5
RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1NXU2VydmVyV29ya2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdp
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgpAQCAtNzksOCArODIsOSBAQCBib29s
IFN0b3JhZ2VQcm9jZXNzOjpzaG91bGRUZXJtaW5hdGUoKQogdm9pZCBTdG9yYWdlUHJvY2Vzczo6
ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKLSAgICBpZiAobV93b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPT0g
JmNvbm5lY3Rpb24pIHsKLSAgICAgICAgbV93b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24g
PSBudWxscHRyOworICAgIGlmIChtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gJiYgbV9zZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5pcGNDb25uZWN0aW9uKCkgPT0gJmNvbm5lY3Rpb24pIHsK
KyAgICAgICAgbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2VkKCk7
CisgICAgICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAjZWxzZQpAQCAtOTgsNiArMTAyLDE0IEBAIHZvaWQgU3RvcmFnZVBy
b2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBD
OjpEZWNvZGVyCiAgICAgICAgIGRpZFJlY2VpdmVTdG9yYWdlUHJvY2Vzc01lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGlmIChhdXRvKiBz
d0Nvbm5lY3Rpb24gPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24oKSkgeworICAgICAgICAgICAgYXV0byogd2ViU1dDb25uZWN0aW9u
ID0gc3RhdGljX2Nhc3Q8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4oc3dDb25uZWN0
aW9uKTsKKyAgICAgICAgICAgIHdlYlNXQ29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgICAgICByZXR1cm47ICAgICAgICAKKyAgICAgICAg
fQorICAgIH0KIH0KIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpAQCAtMzUxLDE3ICsz
NjMsMTcgQEAgU1dTZXJ2ZXImIFN0b3JhZ2VQcm9jZXNzOjpzd1NlcnZlckZvclNlc3Npb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIHJldHVybiAqcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZTsKIH0KIAotSVBDOjpDb25uZWN0aW9uKiBTdG9yYWdlUHJvY2Vzczo6d29ya2VyQ29udGV4dFBy
b2Nlc3NDb25uZWN0aW9uKCkKK1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogU3RvcmFn
ZVByb2Nlc3M6Omdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQogewotICAgIHJldHVy
biBtX3dvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbi5nZXQoKTsKKyAgICByZXR1cm4gbV9z
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmdldCgpOwogfQogCi12b2lkIFN0b3JhZ2VQcm9jZXNz
OjpjcmVhdGVXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oKQordm9pZCBTdG9yYWdlUHJv
Y2Vzczo6Y3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpCiB7Ci0gICAgaWYgKG1fd2Fp
dGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbikKKyAgICBpZiAobV93YWl0aW5n
Rm9yU2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBtX3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPSB0cnVl
OworICAgIG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uID0gdHJ1
ZTsKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdl
UHJvY2Vzc1Byb3h5OjpHZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oKSwgMCk7CiB9
CiAKQEAgLTM4Miw4ICszOTQsOCBAQCBXZWJTV09yaWdpblN0b3JlKiBTdG9yYWdlUHJvY2Vzczo6
c3dPcmlnaW5TdG9yZUZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbgogCiB2b2lkIFN0
b3JhZ2VQcm9jZXNzOjpkaWRHZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpB
dHRhY2htZW50JiYgZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyKQogewotICAgIEFTU0VSVCht
X3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pOwotICAgIG1fd2FpdGlu
Z0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9IGZhbHNlOworICAgIEFTU0VSVCht
X3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbik7CisgICAgbV93YWl0
aW5nRm9yU2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPSBmYWxzZTsKIAogI2lmIFVT
RShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBj
b25uZWN0aW9uSWRlbnRpZmllciA9IGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5yZWxlYXNl
RmlsZURlc2NyaXB0b3IoKTsKQEAgLTM5OCwyNSArNDEwLDE0IEBAIHZvaWQgU3RvcmFnZVByb2Nl
c3M6OmRpZEdldFdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQm
JiBlbmNvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3dvcmtlckNvbnRleHRQcm9j
ZXNzQ29ubmVjdGlvbiA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlQ2xpZW50Q29ubmVjdGlvbihj
b25uZWN0aW9uSWRlbnRpZmllciwgKnRoaXMpOwotICAgIG1fd29ya2VyQ29udGV4dFByb2Nlc3ND
b25uZWN0aW9uLT5vcGVuKCk7CisgICAgYXV0byBpcGNDb25uZWN0aW9uID0gSVBDOjpDb25uZWN0
aW9uOjpjcmVhdGVDbGllbnRDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCAqdGhpcyk7
CisgICAgaXBjQ29ubmVjdGlvbi0+b3BlbigpOworICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbiA9IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y3JlYXRlKFdURk1vdmUoaXBj
Q29ubmVjdGlvbikpOwogICAgIAogICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fc3RvcmFn
ZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25zKQogICAgICAgICBjb25uZWN0aW9uLT53b3JrZXJDb250
ZXh0UHJvY2Vzc0Nvbm5lY3Rpb25DcmVhdGVkKCk7CiB9CiAKLXZvaWQgU3RvcmFnZVByb2Nlc3M6
OnNlcnZpY2VXb3JrZXJDb250ZXh0RmFpbGVkVG9TdGFydCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0
cmF0aW9uS2V5LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0g
bV9zd1NlcnZlckNvbm5lY3Rpb25zLmdldChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpCi0g
ICAgICAgIGNvbm5lY3Rpb24tPnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KHJlZ2lzdHJhdGlv
bktleSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIG1lc3NhZ2UpOwotfQotCi12b2lkIFN0b3Jh
Z2VQcm9jZXNzOjpzZXJ2aWNlV29ya2VyQ29udGV4dFN0YXJ0ZWQodWludDY0X3Qgc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJl
Z2lzdHJhdGlvbktleSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50
aWZpZXIpCi17Ci0gICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBtX3N3U2VydmVyQ29ubmVjdGlv
bnMuZ2V0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKLSAgICAgICAgY29ubmVjdGlvbi0+
c2NyaXB0Q29udGV4dFN0YXJ0ZWQocmVnaXN0cmF0aW9uS2V5LCBzZXJ2aWNlV29ya2VySWRlbnRp
Zmllcik7Ci19Ci0KIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZEZhaWxGZXRjaCh1aW50NjRfdCBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKQogewog
ICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbV9zd1NlcnZlckNvbm5lY3Rpb25zLmdldChzZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpCkBAIC00NTMsMTggKzQ1NCw2IEBAIHZvaWQgU3RvcmFn
ZVByb2Nlc3M6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlcnZpY2VX
b3JrZXJDbGllbnRJCiAgICAgICAgIGNvbm5lY3Rpb24tPnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyQ2xpZW50KGRlc3RpbmF0aW9uSWRlbnRpZmllci5zY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllciwgbWVzc2FnZSwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2luKTsKIH0KIAot
dm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlkRmluaXNoU2VydmljZVdvcmtlckluc3RhbGwodWludDY0
X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkKLXsKLSAgICBpZiAoYXV0byog
Y29ubmVjdGlvbiA9IG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5nZXQoc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIpKQotICAgICAgICBjb25uZWN0aW9uLT5kaWRGaW5pc2hJbnN0YWxsKHJlZ2lzdHJh
dGlvbktleSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHdhc1N1Y2Nlc3NmdWwpOwotfQotCi12
b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaWRGaW5pc2hTZXJ2aWNlV29ya2VyQWN0aXZhdGlvbih1aW50
NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2
aWNlV29ya2VySWRlbnRpZmllcikKLXsKLSAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1fc3dT
ZXJ2ZXJDb25uZWN0aW9ucy5nZXQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKQotICAgICAg
ICBjb25uZWN0aW9uLT5kaWRGaW5pc2hBY3RpdmF0aW9uKHJlZ2lzdHJhdGlvbktleSwgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIpOwotfQotCiB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpyZWdpc3RlclNX
U2VydmVyQ29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAg
ICAgQVNTRVJUKCFtX3N3U2VydmVyQ29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVu
dGlmaWVyKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3Rv
cmFnZVByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nl
c3MuaAppbmRleCA0ODI4ZWRkNDliMC4uOTg5ZjExMDA1YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOwogY2xh
c3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOworY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YVR5cGU7CiBzdHJ1Y3QgU3RvcmFnZVByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM7CiAKQEAgLTgwLDggKzgxLDEwIEBAIHB1YmxpYzoKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIElQQzo6Q29ubmVjdGlvbiogd29y
a2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKCk7Ci0gICAgdm9pZCBjcmVhdGVXb3JrZXJDb250
ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKyAgICAvLyBGb3Igbm93IHdlIGp1c3QgaGF2ZSBvbmUg
Z2xvYmFsIGNvbm5lY3Rpb24gdG8gc2VydmljZSB3b3JrZXIgY29udGV4dCBwcm9jZXNzZXMuCisg
ICAgLy8gVGhpcyB3aWxsIGNoYW5nZSBpbiB0aGUgZnV0dXJlLgorICAgIFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbiogZ2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOworICAg
IHZvaWQgY3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOwogCiAgICAgV2ViU1dPcmln
aW5TdG9yZSYgZW5zdXJlU1dPcmlnaW5TdG9yZUZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwog
ICAgIFdlYlNXT3JpZ2luU3RvcmUqIHN3T3JpZ2luU3RvcmVGb3JTZXNzaW9uKFBBTDo6U2Vzc2lv
bklEKSBjb25zdDsKQEAgLTExOSw4ICsxMjIsNiBAQCBwcml2YXRlOgogI2VuZGlmCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZGlkR2V0V29ya2VyQ29udGV4dFByb2Nlc3ND
b25uZWN0aW9uKElQQzo6QXR0YWNobWVudCYmIGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllcik7
Ci0gICAgdm9pZCBzZXJ2aWNlV29ya2VyQ29udGV4dEZhaWxlZFRvU3RhcnQodWludDY0X3Qgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKTsKLSAgICB2b2lkIHNlcnZpY2VXb3JrZXJDb250ZXh0U3RhcnRlZCh1aW50
NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleSYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsK
IAogICAgIHZvaWQgZGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UodWludDY0X3Qgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUZldGNoRGF0YSh1aW50NjRf
dCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKQEAg
LTEyOCw4ICsxMjksNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRmFpbEZldGNoKHVpbnQ2NF90
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpOwog
ICAgIHZvaWQgZGlkTm90SGFuZGxlRmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcik7CiAKLSAgICB2b2lkIGRpZEZpbmlzaFNl
cnZpY2VXb3JrZXJJbnN0YWxsKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCk7Ci0gICAgdm9pZCBkaWRG
aW5pc2hTZXJ2aWNlV29ya2VyQWN0aXZhdGlvbih1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICB2b2lkIHBvc3RNZXNzYWdlVG9T
ZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyJiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
bWVzc2FnZSwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOwogI2VuZGlmCiAjaWYgRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCkBAIC0xNTcsOCArMTU2LDggQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiAgICAgdm9pZCBkaWRDcmVhdGVXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5l
Y3Rpb24oY29uc3QgSVBDOjpBdHRhY2htZW50Jik7CiAKLSAgICBSZWZQdHI8SVBDOjpDb25uZWN0
aW9uPiBtX3dvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbjsKLSAgICBib29sIG1fd2FpdGlu
Z0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNlIH07CisgICAgUmVmUHRy
PFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOworICAgIGJvb2wgbV93YWl0aW5nRm9yU2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rp
b24geyBmYWxzZSB9OwogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpTV1NlcnZlcj4+IG1fc3dTZXJ2ZXJzOwogICAgIEhhc2hNYXA8dWludDY0X3Qs
IFdlYlNXU2VydmVyQ29ubmVjdGlvbio+IG1fc3dTZXJ2ZXJDb25uZWN0aW9uczsKICAgICBIYXNo
TWFwPFBBTDo6U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8V2ViU1dPcmlnaW5TdG9yZT4+IG1f
c3dPcmlnaW5TdG9yZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNz
L1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBlOGYxOTg0MzViOS4uMDU3NDkwMjMz
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nl
c3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdl
UHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzgsMTEgKzM4LDYgQEAgbWVzc2FnZXMgLT4gU3RvcmFn
ZVByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICBEaWRHZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGNv
bm5lY3Rpb25IYW5kbGUpCiAKLSAgICBTZXJ2aWNlV29ya2VyQ29udGV4dEZhaWxlZFRvU3RhcnQo
dWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkgcmVnaXN0cmF0aW9uS2V5LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU3RyaW5nIG1lc3NhZ2UpCi0gICAg
U2VydmljZVdvcmtlckNvbnRleHRTdGFydGVkKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlv
bktleSwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50
aWZpZXIpCi0gICAgRGlkRmluaXNoU2VydmljZVdvcmtlckluc3RhbGwodWludDY0X3Qgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkgcmVnaXN0cmF0aW9uS2V5LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKTsKLSAgICBEaWRGaW5pc2hT
ZXJ2aWNlV29ya2VyQWN0aXZhdGlvbih1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSByZWdpc3RyYXRpb25LZXks
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KTsKLQogICAgIERpZE5vdEhhbmRsZUZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpCiAgICAgRGlkRmFpbEZldGNoKHVpbnQ2
NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIp
CiAgICAgRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3Mv
U3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdl
UHJvY2Vzcy9TdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggNDU0NWJjNGEy
NTIuLmZlNDNmMTc0NjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNz
L1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2VQcm9jZXNzL1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMzMsNiAr
MzMsOCBAQAogI2luY2x1ZGUgIldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudE1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdl
cy5oIgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBQQUw7CkBA
IC04NSw2ICs4NywxMSBAQCB2b2lkIFN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjpkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3RpbwogICAgICAgICAgICAgaXRl
cmF0b3ItPnZhbHVlLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLmds
b2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAjZW5kaWYKIAogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTQ4LDEwICsxNTUsOCBAQCB2b2lkIFN0b3JhZ2VUb1dl
YlByb2Nlc3NDb25uZWN0aW9uOjplc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oU2Vzc2lvbklE
IHNlc3NpbwogCiAgICAgU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLnJlZ2lzdGVyU1dTZXJ2
ZXJDb25uZWN0aW9uKCooY29ubmVjdGlvblJlc3VsdC5pdGVyYXRvci0+dmFsdWUpKTsKIAotICAg
IGlmIChhdXRvKiBjb25uZWN0aW9uID0gU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLndvcmtl
ckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbigpKQotICAgICAgICBjb25uZWN0aW9uUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS0+c2V0Q29udGV4dENvbm5lY3Rpb24oY29ubmVjdGlvbik7Ci0gICAgZWxz
ZQotICAgICAgICBTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkuY3JlYXRlV29ya2VyQ29udGV4
dFByb2Nlc3NDb25uZWN0aW9uKCk7CisgICAgaWYgKCFTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9u
KCkuZ2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpKQorICAgICAgICBTdG9yYWdlUHJv
Y2Vzczo6c2luZ2xldG9uKCkuY3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOwogfQog
CiB2b2lkIFN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjpyZW1vdmVTV1NlcnZlckNvbm5l
Y3Rpb24odWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpCkBAIC0xNjUsMTEgKzE3
MCw4IEBAIHZvaWQgU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OnJlbW92ZVNXU2VydmVy
Q29ubmVjdGlvbih1aW50NjRfdCBzZXJ2ZXJDb25uCiAKIHZvaWQgU3RvcmFnZVRvV2ViUHJvY2Vz
c0Nvbm5lY3Rpb246OndvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbkNyZWF0ZWQoKQogewot
ICAgIGF1dG8qIGlwY0Nvbm5lY3Rpb24gPSBTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkud29y
a2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKCk7Ci0gICAgQVNTRVJUKGlwY0Nvbm5lY3Rpb24p
OwotCi0gICAgZm9yIChhdXRvJiBzd0Nvbm5lY3Rpb24gOiBtX3N3Q29ubmVjdGlvbnMudmFsdWVz
KCkpCi0gICAgICAgIHN3Q29ubmVjdGlvbi0+c2V0Q29udGV4dENvbm5lY3Rpb24oaXBjQ29ubmVj
dGlvbik7CisgICAgZm9yIChhdXRvKiBzZXJ2ZXIgOiBTV1NlcnZlcjo6YWxsU2VydmVycygpKQor
ICAgICAgICBzZXJ2ZXItPnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKCk7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMTNjZmI3ZmEzZmEuLjBlNzc4YTBhMGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMTksNiArMTAxOSw4IEBACiAJ
CTUxNEJERUQzMTZDOThFREQwMEU0RTI1RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0QkRFRDIxNkM5OEVERDAw
RTRFMjVFIC8qIFN0YXRpc3RpY3NSZXF1ZXN0LmggKi87IH07CiAJCTUxNEQ5RjU3MTkxMTlEMzUw
MDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEQ5RjU1MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNl
c0NvbnRyb2xsZXIuaCAqLzsgfTsKIAkJNTE0RDlGNTgxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZp
Y2VzQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNEQ5RjU2MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIubW0g
Ki87IH07CisJCTUxNTI2MkJDMUZCOTUxNUQwMDcwRTU3OSAvKiBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE1MjYyQkIxRkI5NTEzMTAwNzBFNTc5IC8qIFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmggKi87IH07CisJCTUxNTI2MkJEMUZCOTUxNjEwMDcwRTU3
OSAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1MjYyQkExRkI5
NTEzMTAwNzBFNTc5IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VSZWNl
aXZlci5jcHAgKi87IH07CiAJCTUxNTc4QjgzMTIwOUVDRUYwMEEzN0M0QSAvKiBBUElEYXRhLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTU3OEI4MjEy
MDlFQ0VGMDBBMzdDNEEgLyogQVBJRGF0YS5oICovOyB9OwogCQk1MTVCRTE3NzFENTNGRTg3MDBE
RDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJFMTczMUQ1M0ZEREMwMEREN0M2OCAvKiBXZWJHYW1l
cGFkUHJvdmlkZXIuY3BwICovOyB9OwogCQk1MTVCRTE3OTFENTNGRThGMDBERDdDNjggLyogV2Vi
R2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTVCRTE3NDFENTNGRERDMDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmgg
Ki87IH07CkBAIC0xMDU4LDYgKzEwNjAsNyBAQAogCQk1MTdERDVCRTE4MERBN0QzMDA4MTY2MEIg
LyogU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTdERDVCQzE4MERBN0QzMDA4MTY2MEIgLyogU3RvcmFnZVByb2Nl
c3NQcm94eS5jcHAgKi87IH07CiAJCTUxN0RENUJGMTgwREE3RDMwMDgxNjYwQiAvKiBTdG9yYWdl
UHJvY2Vzc1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTdERDVCRDE4MERBN0QzMDA4MTY2MEIgLyogU3RvcmFnZVByb2Nlc3NQcm94eS5oICov
OyB9OwogCQk1MTgzRERFQzE2MzBCREZDMDA4QkU1QzcgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
MDVCMEQ0MTYyRjdBN0EwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwICov
OyB9OworCQk1MTg1NDMwRTFGQjY4MTYxMDA0NzhGOTUgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxODU0MzBEMUZCNjgwRkEwMDQ3OEY5NSAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uY3BwICovOyB9OwogCQk1MTg3MUI1QjEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4
dE1lbnUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE4NzFCNTkxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmNwcCAqLzsgfTsKIAkJ
NTE4NzFCNUMxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg3MUI1QTEyN0NCODlEMDBGNzYy
MzIgLyogV2ViQ29udGV4dE1lbnUuaCAqLzsgfTsKIAkJNTE4QUNBRUExMkFFRTZCQjAwQjA0Qjgz
IC8qIFdLUHJvdGVjdGlvblNwYWNlVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxOEFDQUU5MTJBRUU2QkIwMEIwNEI4MyAvKiBXS1Byb3RlY3Rp
b25TcGFjZVR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTMzNTksNiArMzM2Miw5IEBACiAJCTUxNEJERUQyMTZDOThFREQwMEU0RTI1RSAv
KiBTdGF0aXN0aWNzUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dGF0aXN0aWNzUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTREOUY1
NTE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VzQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTREOUY1NjE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9s
bGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2VydmljZXND
b250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTUyNjJCOTFGQjk1
MDM1MDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE1MjYyQkExRkI5NTEz
MTAwNzBFNTc5IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MTUyNjJCQjFGQjk1MTMxMDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTE1NzhCODIxMjA5RUNFRjAwQTM3QzRBIC8qIEFQSURhdGEuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTVCRTE3MzFENTNGRERDMDBERDdDNjggLyogV2ViR2FtZXBhZFByb3Zp
ZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdhbWVwYWRQ
cm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUJFMTc0MUQ1M0ZE
REMwMEREN0M2OCAvKiBXZWJHYW1lcGFkUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViR2FtZXBhZFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0zMzk2LDYgKzM0MDIsOCBAQAogCQk1MTdERDVCQzE4MERBN0QzMDA4MTY2MEIgLyog
U3RvcmFnZVByb2Nlc3NQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE3REQ1QkQxODBEQTdEMzAwODE2NjBCIC8qIFN0b3JhZ2VQcm9jZXNzUHJveHkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZVByb2Nlc3NQcm94eS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTgzQjM5MzEzNzlGODVDMDBFODc1NEUgLyogU2hp
bS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBTaGltLnhjY29uZmln
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTg1NDMwQzFGQjY4MEY5MDA0NzhGOTUg
LyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MTg1NDMwRDFGQjY4MEZBMDA0NzhGOTUgLyogV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxODcxQjU5MTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVu
dS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb250ZXh0TWVu
dS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODcxQjVBMTI3Q0I4OUQwMEY3
NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJDb250ZXh0TWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MThBQ0FF
OTEyQUVFNkJCMDBCMDRCODMgLyogV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MzgxLDYgKzYzODksOSBAQAogCQkJCTUxN0E1MzA5MUY0
NzlFMzEwMERDREMwQSAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwICovLAogCQkJCTUxN0E1
MzA3MUY0NzlFMzEwMERDREMwQSAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb24uaCAqLywKIAkJCQk1
MTdBNTMwODFGNDc5RTMxMDBEQ0RDMEEgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluICovLAorCQkJCTUxODU0MzBEMUZCNjgwRkEwMDQ3OEY5NSAvKiBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uY3BwICovLAorCQkJCTUxODU0MzBDMUZCNjgwRjkwMDQ3OEY5NSAvKiBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCAqLywKKwkJCQk1MTUyNjJCOTFGQjk1MDM1
MDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluICov
LAogCQkJKTsKIAkJCXBhdGggPSBTZXJ2aWNlV29ya2VyOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTgyMDAsNiArODIxMSw4IEBACiAJCQkJNDYwRjQ4OEUxRjk5NkY2QzAwQ0Y0Qjg3
IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCAqLywKIAkJCQk1MTdB
NTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLywKIAkJCQk1MTdBNTJENjFGNDNBOUI2MDBEQ0RDMEEgLyogV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uTWVzc2FnZXMuaCAqLywKKwkJCQk1MTUyNjJCQTFGQjk1MTMxMDA3MEU1NzkgLyog
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJ
CQk1MTUyNjJCQjFGQjk1MTMxMDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uTWVzc2FnZXMuaCAqLywKIAkJCQkxQUFGMDhCNTE5MjY5RTZEMDBCNjM5MEMgLyogV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQUFGMDhCNjE5
MjY5RTZEMDBCNjM5MEMgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyTWVzc2FnZXMuaCAqLywK
IAkJCQk3QzM2MUQ3NjE5MjgwM0JEMDAzNkE1OUQgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtOTA1OSw2ICs5MDcyLDcgQEAKIAkJCQlC
QzdCNjI1MjEyQTQzQzk2MDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwRGF0YS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkM3QjYyMTUxMkE0MjE5QTAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cFByb3h5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyRDlFQTMwRjFBOTZDQkZGMDAyRDI4MDcgLyogV2ViUGFnZUlu
amVjdGVkQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTUyNjJCQzFGQjk1MTVE
MDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUMwQ0U3MkExMTI0N0U3MUQwMEJDMEVDNCAvKiBXZWJQYWdlTWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENUM5RDA2MTlDODFEOEYwMEIzQzVDMSAvKiBXZWJQ
YWdlT3ZlcmxheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMzJERDExMEY0Mzg5RjAwNThDMTVB
IC8qIFdlYlBhZ2VQcm94eS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDg1OCw2ICsxMDg3Miw3IEBA
CiAJCQkJOUZCNUYzOTQxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMubW0g
aW4gU291cmNlcyAqLywKIAkJCQkzMzA5MzQ1QTEzMTVCOTk4MDA5N0E3QkMgLyogV0tDb29raWVN
YW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExRkI2ODI1MUY2RTUxODIwMEM0M0Y5RiAv
KiBXS0NyYXNoUmVwb3J0ZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTUyNjJCRDFGQjk1MTYx
MDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMkY1OEY5MTJBODhBNTQwMDYyOTUzMCAvKiBXS0Ny
ZWRlbnRpYWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0MDc1RjcxMjRGRjAyNzAwNjhGMjBB
IC8qIFdLRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUZGNDkwMDE4MzNERTc4MDA5QUIx
NUEgLyogV0tEZXByZWNhdGVkRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTA5MjYs
NiArMTA5NDEsNyBAQAogCQkJCTM3QzRDMDkzMTgxNEIzQUYwMDM2ODhCOSAvKiBXS05TQXJyYXku
bW0gaW4gU291cmNlcyAqLywKIAkJCQkzNzNDRUFENTE4NTQxN0FFMDA4QzM2M0QgLyogV0tOU0Rh
dGEubW0gaW4gU291cmNlcyAqLywKIAkJCQkzNzFBMTk0MTE4MjREMjkzMDBGMzJBNUUgLyogV0tO
U0RpY3Rpb25hcnkubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTg1NDMwRTFGQjY4MTYxMDA0NzhG
OTUgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTM3MkNBRjBDMTgzM0ZEOTEwMDQwQUMyNyAvKiBXS05TRXJyb3IubW0gaW4gU291cmNlcyAq
LywKIAkJCQkzNzVFMEUxMzFENjY0MzI3MDBFRkVDMkMgLyogV0tOU051bWJlci5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTM3OEUxQTQ5MTgyMDhDRDYwMDMxMDA3QSAvKiBXS05TU3RyaW5nLm1tIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggYmFh
MGE0YzNhNjEuLjViMWQ4MmViMDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
Y3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNLZXlzLmgiCiAj
aW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIK
KyNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCIKICNpbmNsdWRlICJXZWJT
b2NrZXRQcm92aWRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yQ2xpZW50Lmg+CkBAIC05
NSw4ICs5NiwxMCBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp1cGRhdGVQ
cmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJgogICAgIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0RmV0Y2hBUElFbmFibGVkKHN0b3JlLmdldEJv
b2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6ZmV0Y2hBUElFbmFibGVkS2V5KCkpKTsK
IH0KIAotdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VX
b3JrZXIodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246Omluc3RhbGxTZXJ2aWNlV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYg
ZGF0YSkKIHsKKyAgICBMT0coU2VydmljZVdvcmtlciwgIldlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlciBmb3Igd29ya2VyICVzIiwgZGF0YS5zZXJ2aWNl
V29ya2VySWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKICAgICAv
LyBGSVhNRTogUHJvdmlkZSBhIHNlbnNpY2FsIHNlc3Npb24gSUQuCiAgICAgYXV0byBzZXNzaW9u
SUQgPSBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwogCkBAIC0xMTMsNyArMTE2
LDcgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VX
b3JrZXIodWludDY0X3Qgc2VydmVyQ29ubmVjdGkKICAgICBhdXRvIGZyYW1lTG9hZGVyQ2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ+KHNlc3Np
b25JRCwgbV9wYWdlSUQsICsrbV9wcmV2aW91c1NlcnZpY2VXb3JrZXJJRCk7CiAgICAgcGFnZUNv
bmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lID0gZnJhbWVMb2FkZXJDbGllbnQu
cmVsZWFzZSgpOwogCi0gICAgYXV0byBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgPSBTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZShXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSwgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGRhdGEsIHNlc3Npb25JRCwgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuY2FjaGVTdG9yYWdlUHJvdmlkZXIoKSk7CisgICAgYXV0byBzZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkgPSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZShXVEZNb3ZlKHBh
Z2VDb25maWd1cmF0aW9uKSwgZGF0YSwgc2Vzc2lvbklELCBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5jYWNoZVN0b3JhZ2VQcm92aWRlcigpKTsKICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0
b24oKS5yZWdpc3RlclNlcnZpY2VXb3JrZXJUaHJlYWRGb3JJbnN0YWxsKFdURk1vdmUoc2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5KSk7CiAKICAgICBMT0coU2VydmljZVdvcmtlciwgIkNvbnRleHQg
cHJvY2VzcyBQSUQ6ICVpIGNyZWF0ZWQgd29ya2VyIHRocmVhZFxuIiwgZ2V0cGlkKCkpOwpAQCAt
MTIxLDE1ICsxMjQsMTAgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5z
dGFsbFNlcnZpY2VXb3JrZXIodWludDY0X3Qgc2VydmVyQ29ubmVjdGkKIAogdm9pZCBXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c2VydmljZVdvcmtlclN0YXJ0ZWRXaXRoTWVzc2FnZShT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBleGNlcHRpb25NZXNzYWdlKQogewotICAgIGF1dG8qIHRocmVhZFByb3h5ID0gU1dDb250
ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlclRocmVhZFByb3h5KHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKTsKLSAgICBBU1NFUlQodGhyZWFkUHJveHkpOwotICAgIAotICAgIGF1
dG8mIGRhdGEgPSB0aHJlYWRQcm94eS0+dGhyZWFkKCkuY29udGV4dERhdGEoKTsKLSAgICAKICAg
ICBpZiAoZXhjZXB0aW9uTWVzc2FnZS5pc0VtcHR5KCkpCi0gICAgICAgIG1fY29ubmVjdGlvblRv
U3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpTZXJ2aWNlV29y
a2VyQ29udGV4dFN0YXJ0ZWQodGhyZWFkUHJveHktPnRocmVhZCgpLnNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyKCksIGRhdGEucmVnaXN0cmF0aW9uS2V5LCBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciksIDApOworICAgICAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlNjcmlwdENvbnRleHRTdGFydGVk
KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSwgMCk7CiAgICAgZWxzZQotICAgICAgICBtX2Nvbm5l
Y3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6U2Vy
dmljZVdvcmtlckNvbnRleHRGYWlsZWRUb1N0YXJ0KHRocmVhZFByb3h5LT50aHJlYWQoKS5zZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpLCBkYXRhLnJlZ2lzdHJhdGlvbktleSwgc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGV4Y2VwdGlvbk1lc3NhZ2UpLCAwKTsKKyAgICAgICAgbV9jb25uZWN0
aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpTY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgZXhjZXB0aW9uTWVzc2FnZSksIDApOwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtl
cklkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zKQpAQCAtMTQ5LDE1ICsxNDcsMTMgQEAgdm9p
ZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZShTZXJ2aWMKICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5w
b3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKGRlc3RpbmF0aW9uSWRlbnRpZmll
ciwgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChtZXNzYWdlLnZlY3RvcigpKSwgc291cmNl
SWRlbnRpZmllciwgc291cmNlT3JpZ2luKTsKIH0KIAotdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6ZmlyZUluc3RhbGxFdmVudCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpcmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBVTlVTRURfUEFSQU0oc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIpOwogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZpcmVJbnN0
YWxsRXZlbnQoaWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OmZpcmVBY3RpdmF0ZUV2ZW50KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50
aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBVTlVTRURfUEFSQU0oc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIpOwogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZpcmVBY3RpdmF0
ZUV2ZW50KGlkZW50aWZpZXIpOwogfQogCkBAIC0xNjgsMjAgKzE2NCwxMiBAQCB2b2lkIFdlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVu
dChjb25zdCBTZXJ2aQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpkaWRG
aW5pc2hJbnN0YWxsKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCiB7Ci0gICAgYXV0byogdGhyZWFkUHJveHkgPSBTV0Nv
bnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIpOwotICAgIEFTU0VSVCh0aHJlYWRQcm94eSk7Ci0KLSAgICBhdXRv
JiBkYXRhID0gdGhyZWFkUHJveHktPnRocmVhZCgpLmNvbnRleHREYXRhKCk7Ci0gICAgbV9jb25u
ZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkRp
ZEZpbmlzaFNlcnZpY2VXb3JrZXJJbnN0YWxsKHRocmVhZFByb3h5LT50aHJlYWQoKS5zZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllcigpLCBkYXRhLnJlZ2lzdHJhdGlvbktleSwgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIHdhc1N1Y2Nlc3NmdWwpLCAwKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1N0b3Jh
Z2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OkRpZEZpbmlzaEluc3RhbGwoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHdhc1N1Y2Nlc3NmdWwp
LCAwKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlkRmluaXNo
QWN0aXZhdGlvbihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmll
cikKIHsKLSAgICBhdXRvKiB0aHJlYWRQcm94eSA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRv
bigpLnNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0g
ICAgQVNTRVJUKHRocmVhZFByb3h5KTsKLQotICAgIGF1dG8mIGRhdGEgPSB0aHJlYWRQcm94eS0+
dGhyZWFkKCkuY29udGV4dERhdGEoKTsKLSAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6RGlkRmluaXNoU2VydmljZVdvcmtlckFj
dGl2YXRpb24odGhyZWFkUHJveHktPnRocmVhZCgpLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
KCksIGRhdGEucmVnaXN0cmF0aW9uS2V5LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciksIDApOwor
ICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6RGlkRmluaXNoQWN0aXZhdGlvbihzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciksIDApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCA2MDdlMDBlZjhhNC4uNmYzMzBkYmM4ZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAtNTcsMTEgKzU3LDExIEBAIHByaXZhdGU6
CiAKICAgICAvLyBJUEMgbWVzc2FnZXMuCiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyU3RhcnRlZFdp
dGhNZXNzYWdlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGV4Y2VwdGlvbk1lc3NhZ2UpIGZpbmFsOwotICAgIHZvaWQgaW5zdGFsbFNlcnZpY2VXb3JrZXIo
dWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YSYpOworICAgIHZvaWQgaW5zdGFsbFNlcnZpY2VXb3JrZXIoY29u
c3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJik7CiAgICAgdm9pZCBzdGFydEZl
dGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElk
ZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXI+
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYpOwog
ICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVu
dElkZW50aWZpZXImIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2lu
KTsKLSAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIGZp
cmVBY3RpdmF0ZUV2ZW50KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICB2b2lkIGZpcmVBY3RpdmF0
ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIAogICAgIFJlZjxJUEM6
OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3M7CiAgICAgdWludDY0X3Qg
bV9wYWdlSUQgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCmluZGV4IDVkMjU1NWFkY2M5Li4xNDk4ZDI3MjE5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTIzLDExICsyMywxMSBA
QAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogbWVzc2FnZXMgLT4gV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24gewotICAgIEluc3RhbGxTZXJ2aWNlV29ya2VyKHVpbnQ2NF90IHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNv
bnRleHREYXRhIGNvbnRleHREYXRhKQorICAgIEluc3RhbGxTZXJ2aWNlV29ya2VyKHN0cnVjdCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgY29udGV4dERhdGEpCiAgICAgU3RhcnRG
ZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJ
ZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
PiBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QsIHN0cnVjdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMgb3B0aW9ucykKICAgICBQb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UsIHN0
cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBzb3VyY2VJZGVudGlm
aWVyLCBTdHJpbmcgc291cmNlT3JpZ2luKQotICAgIEZpcmVJbnN0YWxsRXZlbnQodWludDY0X3Qg
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIpCi0gICAgRmlyZUFjdGl2YXRlRXZlbnQodWludDY0X3Qgc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIpCisgICAgRmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBpZGVudGlmaWVyKQorICAgIEZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB9CiAKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326787</attachid>
            <date>2017-11-13 13:20:45 -0800</date>
            <delta_ts>2017-11-13 14:09:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>101705</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaCBiL1NvdXJjZS9X
VEYvd3RmL09iamVjdElkZW50aWZpZXIuaAppbmRleCBlZjM3MTU0YTMxZS4uNjdkZWUwMjZiNWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgog
I2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gZnJpZW5kIE9iamVj
dElkZW50aWZpZXI8VT4gbWFrZU9iamVjdElkZW50aWZpZXIodWludDY0X3QpOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFU+IGZyaWVuZCBPYmplY3RJZGVudGlmaWVyPFU+IGdlbmVyYXRlT2JqZWN0
SWRlbnRpZmllcigpOwogICAgIGZyaWVuZCBzdHJ1Y3QgSGFzaFRyYWl0czxPYmplY3RJZGVudGlm
aWVyPjsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBmcmllbmQgc3RydWN0IE9iamVjdElkZW50
aWZpZXJIYXNoOwogCkBAIC04MywxMiArODMsMTQgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB1
aW50NjRfdCBtX2lkZW50aWZpZXIgeyAwIH07CisgICAgc3RhdGljIHVpbnQ2NF90IHNfY3VycmVu
dElkZW50aWZpZXI7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgT2JqZWN0SWRl
bnRpZmllcjxUPiBtYWtlT2JqZWN0SWRlbnRpZmllcih1aW50NjRfdCBpZGVudGlmaWVyKQordGVt
cGxhdGU8dHlwZW5hbWUgVD4gdWludDY0X3QgT2JqZWN0SWRlbnRpZmllcjxUPjo6c19jdXJyZW50
SWRlbnRpZmllcjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIE9iamVjdElkZW50aWZp
ZXI8VD4gZ2VuZXJhdGVPYmplY3RJZGVudGlmaWVyKCkKIHsKLSAgICBBU1NFUlQoT2JqZWN0SWRl
bnRpZmllcjxUPjo6aXNWYWxpZElkZW50aWZpZXIoaWRlbnRpZmllcikpOwotICAgIHJldHVybiBP
YmplY3RJZGVudGlmaWVyPFQ+IHsgaWRlbnRpZmllciB9OworICAgIHJldHVybiBPYmplY3RJZGVu
dGlmaWVyPFQ+IHsgKytPYmplY3RJZGVudGlmaWVyPFQ+OjpzX2N1cnJlbnRJZGVudGlmaWVyIH07
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBPYmplY3RJZGVudGlmaWVySGFzaCB7
CkBAIC0xMDYsNCArMTA4LDQgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRI
YXNoPE9iamVjdElkZW50aWZpZXI8VD4+IHsKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBX
VEY6Ok9iamVjdElkZW50aWZpZXI7Ci11c2luZyBXVEY6Om1ha2VPYmplY3RJZGVudGlmaWVyOwor
dXNpbmcgV1RGOjpnZW5lcmF0ZU9iamVjdElkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDIz
OWQ2OTllNjA1Li42NzQ5N2Y0MWExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIxOTEsNiArMjE5MSw3
IEBAIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmNwcAogd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJKb2JRdWV1ZS5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3Ry
YXRpb24uY3BwCit3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCiAKIHht
bC9ET01QYXJzZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggYmRlYjA0MGJiYmYuLjcwZmZmMTkxYmE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzU0
LDYgKzEzNTQsNyBAQAogCQk1MTgyQzI1ODFGMzE0M0NEMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29y
a2VyQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTgyQzI1NDFGMzE0MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyQ29udGFpbmVy
LmggKi87IH07CiAJCTUxODJDMjVBMUYzMTQzQ0QwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE4MkMyNEQxRjMxNDI1MDAwNTlCQTdDIC8qIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LmggKi87IH07CiAJCTUxODJDMjVDMUYzMTQzQ0QwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxODJDMjUwMUYzMTQyNTAwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b24uaCAqLzsgfTsKKwkJNTE4NTQzMEIxRkI2Nzg0NTAwNDc4Rjk1IC8qIFNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE4NTQzMDkxRkI2NzgzRTAwNDc4Rjk1IC8qIFNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTUxODVGQzc1MUJCNEM0RTgwMDEyODk4RiAvKiBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDcxOTZEMTgx
MTA2REYwMDE2REM1MSAvKiBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuaCAqLzsgfTsKIAkJNTE4
NUZDN0IxQkI0QzRFODAwMTI4OThGIC8qIElEQkN1cnNvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2NDVCNDExQjlGODg5QjAwRjc4OUNFIC8qIElE
QkN1cnNvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTUxODVGQzdFMUJCNEM0RTgwMDEyODk4RiAvKiBJREJDdXJzb3JXaXRoVmFsdWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjQ1QjQzMUI5Rjg4
OUIwMEY3ODlDRSAvKiBJREJDdXJzb3JXaXRoVmFsdWUuaCAqLzsgfTsKQEAgLTE0MjUsNyArMTQy
Niw3IEBACiAJCTUxRTY4MjEwMTYzODczMDIwMDNCQkYzQyAvKiBMb2FkZXJTdHJhdGVneS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFNjgyMEYxNjM4
NzMwMjAwM0JCRjNDIC8qIExvYWRlclN0cmF0ZWd5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFRTdCMzgxQUE1MEIwNTAwRjkyQjIxIC8qIFJl
c291cmNlTG9hZEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRUU3QjM3MUFBNTBCMDUwMEY5MkIyMSAvKiBSZXNvdXJjZUxvYWRJbmZvLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFRUFBNzQx
QkVGRkFCMTAwMjE4MDA4IC8qIEluZGV4VmFsdWVFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFRUFBNzIxQkVGRkE3OTAwMjE4MDA4IC8qIElu
ZGV4VmFsdWVFbnRyeS5oICovOyB9OwotCQk1MUYxNzRGRTFGMzU4OTkyMDBDNzQ5NTAgLyogV29y
a2VyVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFGMTc0RkMxRjM1ODk4ODAwQzc0OTUwIC8qIFdvcmtlclR5cGUuaCAqLzsgfTsKKwkJNTFGMTc0
RkUxRjM1ODk5MjAwQzc0OTUwIC8qIFdvcmtlclR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjE3NEZDMUYzNTg5ODgwMEM3NDk1MCAvKiBXb3Jr
ZXJUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTFGMTc1MDMxRjM1OEIzQjAwQzc0OTUwIC8qIEpTU2VydmljZVdvcmtlclVwZGF0ZVZpYUNh
Y2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYx
NzUwMTFGMzU4QjM2MDBDNzQ5NTAgLyogSlNTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUuaCAq
LzsgfTsKIAkJNTFGMTc1MDYxRjM1OEJGNzAwQzc0OTUwIC8qIEpTV29ya2VyVHlwZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMTc1MDUxRjM1OEJE
RTAwQzc0OTUwIC8qIEpTV29ya2VyVHlwZS5oICovOyB9OwogCQk1MUYxNzU1RDFGM0VCQzgzMDBD
NzQ5NTAgLyogU2VydmljZVdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFGMTc1NUExRjNFQkMwQzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXIu
aCAqLzsgfTsKQEAgLTc3MDYsNiArNzcwNyw4IEBACiAJCTUxODJDMjUyMUYzMTQyNTAwMDU5QkE3
QyAvKiBKU1NlcnZpY2VXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTZXJ2aWNlV29ya2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODJDMjUzMUYzMTQyNTAwMDU5QkE3QyAv
KiBKU1NlcnZpY2VXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4MkMyNTQxRjMxNDI1MDAwNTlC
QTdDIC8qIEpTU2VydmljZVdvcmtlckNvbnRhaW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NlcnZp
Y2VXb3JrZXJDb250YWluZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4NTQz
MDkxRkI2NzgzRTAwNDc4Rjk1IC8qIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4NTQzMEExRkI2NzgzRjAwNDc4Rjk1
IC8qIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTg1RkNCQzFCQjVDQjc3MDAxMjg5OEYgLyogSURCQ29u
bmVjdGlvblRvU2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IElEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxODVGQ0JEMUJCNUNCNzcwMDEyODk4RiAvKiBJREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJDb25uZWN0aW9uVG9TZXJ2
ZXJEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTg4NjRERTFCQkFG
MzBGMDBFNTQwQzkgLyogVW5pcXVlSURCRGF0YWJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVW5pcXVlSURCRGF0YWJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTcxMzEsNiArMTcxMzQsOCBAQAogCQkJCTgzMTFDMDAyMUZBQTJFODkw
MEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggKi8sCiAJCQkJNTFGNjQ1OTUxRjRBNjg2MTAw
QjU0REVEIC8qIFNXU2VydmVyUmVnaXN0cmF0aW9uLmNwcCAqLywKIAkJCQk1MUY2NDU5NDFGNEE2
ODRGMDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCAqLywKKwkJCQk1MTg1NDMwQTFG
QjY3ODNGMDA0NzhGOTUgLyogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCAqLywKKwkJ
CQk1MTg1NDMwOTFGQjY3ODNFMDA0NzhGOTUgLyogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmggKi8sCiAJCQkJNTE3QTUzNDMxRjUwQzE2MTAwRENEQzBBIC8qIFNXU2VydmVyV29ya2VyLmNw
cCAqLywKIAkJCQk1MTdBNTM0MjFGNTBDMTYxMDBEQ0RDMEEgLyogU1dTZXJ2ZXJXb3JrZXIuaCAq
LywKIAkJCSk7CkBAIC0yNzQxNSw2ICsyNzQyMCw3IEBACiAJCQkJN0M4RTM0QjkxRTRBMzNCMDAw
NTRDRTIzIC8qIEpTRE9NQ29udmVydEpTT04uaCBpbiBIZWFkZXJzICovLAogCQkJCTdDOEUzNEJB
MUU0QTMzQjAwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnROdWxsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QzhFMzRCQjFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252ZXJ0TnVsbGFibGUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTUxODU0MzBCMUZCNjc4NDUwMDQ3OEY5NSAvKiBTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTdDOEUzNEJEMUU0QTMzQjAwMDU0
Q0UyMyAvKiBKU0RPTUNvbnZlcnROdW1iZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzhFMzRC
RTFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252ZXJ0T2JqZWN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMzIzQ0ZGQTFFNUFGNkFGMDBGMEI0QTAgLyogSlNET01Db252ZXJ0UHJvbWlzZS5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwCmluZGV4IDRkMzM1MDFjNmRhLi5mMGVj
NzY2ZTM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgU2VydmljZVdvcmtlckNv
bnRleHREYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogewotICAgIHJldHVybiB7IHJlZ2lzdHJh
dGlvbktleS5pc29sYXRlZENvcHkoKSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHNjcmlwdC5p
c29sYXRlZENvcHkoKSwgc2NyaXB0VVJMLmlzb2xhdGVkQ29weSgpIH07CisgICAgcmV0dXJuIHsg
cmVnaXN0cmF0aW9uS2V5Lmlzb2xhdGVkQ29weSgpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
c2NyaXB0Lmlzb2xhdGVkQ29weSgpLCBzY3JpcHRVUkwuaXNvbGF0ZWRDb3B5KCksIHdvcmtlclR5
cGUgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCmluZGV4
IDA4YzMxYmM5NTQwLi43YTBiNDQzY2IzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaApAQCAtMjgsNiAr
MjgsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIgogI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1
ZGUgIldvcmtlclR5cGUuaCIKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIApAQCAtMzgs
NiArMzksNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcjsKICAgICBTdHJpbmcgc2Ny
aXB0OwogICAgIFVSTCBzY3JpcHRVUkw7CisgICAgV29ya2VyVHlwZSB3b3JrZXJUeXBlOwogICAg
IAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGE+IGRlY29kZShEZWNvZGVyJik7CkBAIC00OSw2ICs1MSw3IEBA
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCByZWdpc3Ry
YXRpb25LZXkgPDwgc2VydmljZVdvcmtlcklkZW50aWZpZXIgPDwgc2NyaXB0IDw8IHNjcmlwdFVS
TDsKKyAgICBlbmNvZGVyLmVuY29kZUVudW0od29ya2VyVHlwZSk7CiB9CiAKIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+CkBAIC02OSw4ICs3MiwxMiBAQCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNvZGUoRGVjb2Rlcgog
ICAgIFVSTCBzY3JpcHRVUkw7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzY3JpcHRVUkwpKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoKnJl
Z2lzdHJhdGlvbktleSksIFdURk1vdmUoKnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSwgV1RGTW92
ZShzY3JpcHQpLCBXVEZNb3ZlKHNjcmlwdFVSTCkgfX07CisgICAgCisgICAgV29ya2VyVHlwZSB3
b3JrZXJUeXBlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHdvcmtlclR5cGUpKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIAorICAgIHJldHVybiB7eyBXVEZNb3ZlKCpy
ZWdpc3RyYXRpb25LZXkpLCBXVEZNb3ZlKCpzZXJ2aWNlV29ya2VySWRlbnRpZmllciksIFdURk1v
dmUoc2NyaXB0KSwgV1RGTW92ZShzY3JpcHRVUkwpLCB3b3JrZXJUeXBlIH19OwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDRiZjE5ZDg1YjIy
Li4zYTIwYjNhOWQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTMzLDkgKzMzLDggQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OlNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
Y29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09u
bGluZSwgU2VydmljZVdvcmtlclRocmVhZCYgdGhyZWFkLCBib29sIHNob3VsZEJ5cGFzc01haW5X
b3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdp
biwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94
eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKK1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6U2VydmljZVdv
cmtlckdsb2JhbFNjb3BlKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1c2Vy
QWdlbnQsIGJvb2wgaXNPbmxpbmUsIFNlcnZpY2VXb3JrZXJUaHJlYWQmIHRocmVhZCwgYm9vbCBz
aG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZjxTZWN1cml0eU9y
aWdpbj4mJiB0b3BPcmlnaW4sIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgSURCQ2xpZW50OjpJ
REJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tl
dFByb3ZpZGVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgOiBXb3JrZXJHbG9iYWxT
Y29wZSh1cmwsIGlkZW50aWZpZXIsIHVzZXJBZ2VudCwgaXNPbmxpbmUsIHRocmVhZCwgc2hvdWxk
QnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBXVEZNb3ZlKHRvcE9yaWdpbiks
IHRpbWVPcmlnaW4sIGNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIHNlc3Npb25JRCkK
LSAgICAsIG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIpCiAgICAgLCBtX2NvbnRleHREYXRhKGNyb3NzVGhyZWFkQ29weShkYXRhKSkKICAgICAs
IG1fY2xpZW50cyhTZXJ2aWNlV29ya2VyQ2xpZW50czo6Y3JlYXRlKCp0aGlzKSkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUuaAppbmRleCBlZTQ5NTg2OTI0MC4uOTAwMTUxN2RkZjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLmgKQEAgLTUxLDggKzUxLDYgQEAgcHVibGljOgogICAgIFNlcnZpY2VXb3JrZXJDbGllbnRz
JiBjbGllbnRzKCkgeyByZXR1cm4gbV9jbGllbnRzLmdldCgpOyB9CiAgICAgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbiogcmVnaXN0cmF0aW9uKCk7CiAgICAgCi0gICAgdWludDY0X3Qgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyOyB9Ci0KICAgICB2b2lkIHNraXBXYWl0aW5nKFJlZjxEZWZlcnJlZFByb21pc2U+
JiYpOwogCiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdCBmaW5hbDsKQEAgLTYwLDkgKzU4LDggQEAgcHVibGljOgogICAgIFNlcnZpY2VXb3JrZXJU
aHJlYWQmIHRocmVhZCgpOwogCiBwcml2YXRlOgotICAgIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgU2VydmljZVdvcmtlclRocmVhZCYs
IGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBSZWY8U2Vj
dXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIElEQkNs
aWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqLCBQQUw6OlNlc3Npb25J
RCk7CisgICAgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YSYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUsIFNlcnZpY2VXb3JrZXJUaHJlYWQmLCBib29s
IHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgUmVmPFNlY3VyaXR5
T3JpZ2luPiYmIHRvcE9yaWdpbiwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBJREJDbGllbnQ6
OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKiwgUEFMOjpTZXNzaW9uSUQpOwog
Ci0gICAgdWludDY0X3QgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEgbV9jb250ZXh0RGF0YTsKICAgICBSZWY8U2VydmljZVdvcmtlckNs
aWVudHM+IG1fY2xpZW50czsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlclR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlclR5cGVzLmgKaW5kZXggYTNjNmMzZTYxNzguLmM3MGFlMDhhYTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
clR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJUeXBlcy5oCkBAIC01MCw2ICs1MCw5IEBAIGVudW0gY2xhc3MgU2hvdWxkTm90aWZ5V2hlblJl
c29sdmVkIHsgTm8sIFllcyB9OwogZW51bSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
ZmllclR5cGUgeyB9OwogdXNpbmcgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIg
PSBPYmplY3RJZGVudGlmaWVyPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyVHlw
ZT47CiAKK2VudW0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllclR5cGUgeyB9
OwordXNpbmcgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciA9IE9iamVjdElk
ZW50aWZpZXI8U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllclR5cGU+OworCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IDM0YTMzMjJkMjFmLi45YmY4MjA1YWQy
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTczLDkgKzczLDggQEAgcHJpdmF0
ZToKIC8vIEZJWE1FOiBVc2UgYSB2YWxpZCBpc09ubGluZSBmbGFnCiAvLyBGSVhNRTogVXNlIHZh
bGlkIHJ1bnRpbWUgZmxhZ3MKIAotU2VydmljZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRo
cmVhZCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdv
cmtlckNvbnRleHREYXRhJiBkYXRhLCBQQUw6OlNlc3Npb25JRCwgV29ya2VyTG9hZGVyUHJveHkm
IGxvYWRlclByb3h5LCBXb3JrZXJEZWJ1Z2dlclByb3h5JiBkZWJ1Z2dlclByb3h5KQorU2Vydmlj
ZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZChjb25zdCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEmIGRhdGEsIFBBTDo6U2Vzc2lvbklELCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVy
UHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkmIGRlYnVnZ2VyUHJveHkpCiAgICAgOiBXb3JrZXJU
aHJlYWQoZGF0YS5zY3JpcHRVUkwsICJzZXJ2aWNld29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50
aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpLCBBU0NJSUxpdGVyYWwoIldvcmtlclVz
ZXJBZ2VudCIpLCAvKiBpc09ubGluZSAqLyBmYWxzZSwgZGF0YS5zY3JpcHQsIGxvYWRlclByb3h5
LCBkZWJ1Z2dlclByb3h5LCBEdW1teVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2hhcmVkKCks
IFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnMgeyB9LCBmYWxzZSwgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShkYXRhLnNjcmlw
dFVSTCkuZ2V0KCksIE1vbm90b25pY1RpbWU6Om5vdygpLCBudWxscHRyLCBudWxscHRyLCBKU0M6
OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpLCBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNz
aW9uSUQoKSkKLSAgICAsIG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIpCiAgICAgLCBtX2RhdGEoZGF0YS5pc29sYXRlZENvcHkoKSkKICAgICAs
IG1fd29ya2VyT2JqZWN0UHJveHkoRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJl
ZCgpKQogewpAQCAtODYsNyArODUsNyBAQCBTZXJ2aWNlV29ya2VyVGhyZWFkOjp+U2VydmljZVdv
cmtlclRocmVhZCgpID0gZGVmYXVsdDsKIAogUmVmPFdvcmtlckdsb2JhbFNjb3BlPiBTZXJ2aWNl
V29ya2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09u
bGluZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBz
aG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZjxTZWN1cml0eU9y
aWdpbj4mJiB0b3BPcmlnaW4sIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKQogewotICAgIHJldHVybiBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmNy
ZWF0ZShtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBtX2RhdGEsIHVybCwgaWRlbnRpZmll
ciwgdXNlckFnZW50LCBpc09ubGluZSwgKnRoaXMsIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRl
bnRTZWN1cml0eVBvbGljeSwgV1RGTW92ZSh0b3BPcmlnaW4pLCB0aW1lT3JpZ2luLCBpZGJDb25u
ZWN0aW9uUHJveHkoKSwgc29ja2V0UHJvdmlkZXIoKSwgc2Vzc2lvbklEKTsKKyAgICByZXR1cm4g
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUobV9kYXRhLCB1cmwsIGlkZW50aWZpZXIs
IHVzZXJBZ2VudCwgaXNPbmxpbmUsICp0aGlzLCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50
U2VjdXJpdHlQb2xpY3ksIFdURk1vdmUodG9wT3JpZ2luKSwgdGltZU9yaWdpbiwgaWRiQ29ubmVj
dGlvblByb3h5KCksIHNvY2tldFByb3ZpZGVyKCksIHNlc3Npb25JRCk7CiB9CiAKIHZvaWQgU2Vy
dmljZVdvcmtlclRocmVhZDo6cnVuRXZlbnRMb29wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaApp
bmRleCBkNDhhNzE5NGJhYi4uOWI0MzNmYTk1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgK
QEAgLTU5LDcgKzU5LDYgQEAgcHVibGljOgogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudCgpOwog
ICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoKTsKIAotICAgIHVpbnQ2NF90IHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllcjsgfQogICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgY29udGV4dERhdGEo
KSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KIAogICAgIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuc2VydmljZVdvcmtlcklkZW50aWZp
ZXI7IH0KQEAgLTY5LDkgKzY4LDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcnVuRXZlbnRMb29w
KCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2VydmljZVdvcmtl
clRocmVhZCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhJiwgUEFMOjpTZXNzaW9uSUQsIFdvcmtlckxvYWRlclByb3h5Jiwg
V29ya2VyRGVidWdnZXJQcm94eSYpOworICAgIFdFQkNPUkVfRVhQT1JUIFNlcnZpY2VXb3JrZXJU
aHJlYWQoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiwgUEFMOjpTZXNzaW9uSUQsIFdv
cmtlckxvYWRlclByb3h5JiwgV29ya2VyRGVidWdnZXJQcm94eSYpOwogCi0gICAgdWludDY0X3Qg
bV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEgbV9kYXRhOwogICAgIFdvcmtlck9iamVjdFByb3h5JiBtX3dvcmtlck9iamVjdFByb3h5Owog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCmluZGV4IDE1NzBjZjBmMGJh
Li5lN2RiZDQwOWU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCkBA
IC0zNiwxMSArMzYsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxTZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHk+IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlKFBhZ2VDb25m
aWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24sIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEsIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImIGNhY2hlU3RvcmFnZVByb3Zp
ZGVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eSB7IFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgZGF0YSwgc2Vzc2lvbklELCBjYWNoZVN0b3JhZ2VQcm92aWRlciB9KTsKLX0KLQogc3RhdGlj
IGlubGluZSBVbmlxdWVSZWY8UGFnZT4gY3JlYXRlUGFnZUZvclNlcnZpY2VXb3JrZXIoUGFnZUNv
bmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBhdXRv
IHBhZ2UgPSBtYWtlVW5pcXVlUmVmPFBhZ2U+KFdURk1vdmUoY29uZmlndXJhdGlvbikpOwpAQCAt
NTIsMTAgKzQ3LDEwIEBAIHN0YXRpYyBpbmxpbmUgVW5pcXVlUmVmPFBhZ2U+IGNyZWF0ZVBhZ2VG
b3JTZXJ2aWNlV29ya2VyKFBhZ2VDb25maWd1cmF0aW9uJiYgY29uCiAgICAgcmV0dXJuIHBhZ2U7
CiB9CiAKLVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5
KFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24sIHVpbnQ2NF90IHNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEs
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImIGNhY2hlU3Rv
cmFnZVByb3ZpZGVyKQorU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpTZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbiwgY29uc3QgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENh
Y2hlU3RvcmFnZVByb3ZpZGVyJiBjYWNoZVN0b3JhZ2VQcm92aWRlcikKICAgICA6IG1fcGFnZShj
cmVhdGVQYWdlRm9yU2VydmljZVdvcmtlcihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSwgZGF0
YS5zY3JpcHRVUkwpKQogICAgICwgbV9kb2N1bWVudCgqbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1
bWVudCgpKQotICAgICwgbV9zZXJ2aWNlV29ya2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJUaHJlYWQ6
OmNyZWF0ZShzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZGF0YSwgc2Vzc2lvbklELCAqdGhp
cywgKnRoaXMpKQorICAgICwgbV9zZXJ2aWNlV29ya2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJUaHJl
YWQ6OmNyZWF0ZShkYXRhLCBzZXNzaW9uSUQsICp0aGlzLCAqdGhpcykpCiAgICAgLCBtX2NhY2hl
U3RvcmFnZVByb3ZpZGVyKGNhY2hlU3RvcmFnZVByb3ZpZGVyKQogICAgICwgbV9zZXNzaW9uSUQo
c2Vzc2lvbklEKQogICAgICwgbV9pbnNwZWN0b3JQcm94eSgqdGhpcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZFByb3h5LmgKaW5kZXggNDEwYjBlYWUxYzEuLmE5YzU5N2U2ZjRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaApAQCAtNDcsMTQgKzQ3LDE3IEBAIHN0cnVjdCBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CiAKIGNsYXNzIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHk+LCBwdWJsaWMgV29ya2VyTG9hZGVyUHJveHksIHB1YmxpYyBXb3JrZXJEZWJ1Z2dlclBy
b3h5IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eT4gY3JlYXRlKFBhZ2VDb25maWd1cmF0aW9uJiYsIHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBQ
QUw6OlNlc3Npb25JRCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImKTsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eT4gY3JlYXRl
KEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAg
IH0KIAogICAgIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX3NlcnZpY2VXb3JrZXJUaHJlYWQtPmlkZW50aWZpZXIoKTsgfQogICAgIFNlcnZpY2VX
b3JrZXJUaHJlYWQmIHRocmVhZCgpIHsgcmV0dXJuIG1fc2VydmljZVdvcmtlclRocmVhZC5nZXQo
KTsgfQogICAgIFNlcnZpY2VXb3JrZXJJbnNwZWN0b3JQcm94eSYgaW5zcGVjdG9yUHJveHkoKSB7
IHJldHVybiBtX2luc3BlY3RvclByb3h5OyB9CiAKIHByaXZhdGU6Ci0gICAgU2VydmljZVdvcmtl
clRocmVhZFByb3h5KFBhZ2VDb25maWd1cmF0aW9uJiYsIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBQQUw6OlNlc3Np
b25JRCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHkoUGFnZUNvbmZpZ3VyYXRpb24mJiwgY29uc3QgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhJiwgUEFMOjpTZXNzaW9uSUQsIENhY2hlU3RvcmFnZVByb3ZpZGVyJik7CiAK
ICAgICAvLyBXb3JrZXJMb2FkZXJQcm94eQogICAgIGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3Jr
ZXJHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYsIGNvbnN0IFN0cmlu
ZyYgbW9kZSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IGNjNDIyZDI5YmQ1Li4wN2JjYmQ5MmM3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAK
QEAgLTMzLDE5ICszMywyMCBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTV1Nl
cnZlckpvYlF1ZXVlLmgiCiAjaW5jbHVkZSAiU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCIKKyNpbmNs
dWRlICJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJTV1NlcnZlcldv
cmtlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VydmljZVdv
cmtlckNvbnRleHREYXRhLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoUmVzdWx0Lmgi
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYkRhdGEuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGF0aWMgU2VydmljZVdvcmtlcklkZW50aWZpZXIgZ2VuZXJhdGVTZXJ2
aWNlV29ya2VySWRlbnRpZmllcigpCiB7Ci0gICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZpZXIg
PSAwOwotICAgIHJldHVybiBtYWtlT2JqZWN0SWRlbnRpZmllcjxTZXJ2aWNlV29ya2VySWRlbnRp
ZmllclR5cGU+KCsraWRlbnRpZmllcik7CisgICAgcmV0dXJuIGdlbmVyYXRlT2JqZWN0SWRlbnRp
ZmllcjxTZXJ2aWNlV29ya2VySWRlbnRpZmllclR5cGU+KCk7CiB9CiAKIFNXU2VydmVyOjpDb25u
ZWN0aW9uOjpDb25uZWN0aW9uKFNXU2VydmVyJiBzZXJ2ZXIsIHVpbnQ2NF90IGlkZW50aWZpZXIp
CkBAIC02MCw2ICs2MSwxMiBAQCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6fkNvbm5lY3Rpb24oKQog
ICAgIG1fc2VydmVyLnVucmVnaXN0ZXJDb25uZWN0aW9uKCp0aGlzKTsKIH0KIAorSGFzaFNldDxT
V1NlcnZlcio+JiBTV1NlcnZlcjo6YWxsU2VydmVycygpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEhhc2hTZXQ8U1dTZXJ2ZXIqPj4gc2VydmVyczsKKyAgICByZXR1cm4gc2VydmVyczsK
K30KKwogU1dTZXJ2ZXI6On5TV1NlcnZlcigpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9jb25u
ZWN0aW9ucy5pc0VtcHR5KCkpOwpAQCAtNzQsNiArODEsOCBAQCBTV1NlcnZlcjo6flNXU2VydmVy
KCkKICAgICAvLyBCdXQgb25jZSBpdCBkb2VzIHN0YXJ0IGhhcHBlbmluZywgdGhpcyBBU1NFUlQg
d2lsbCBjYXRjaCB1cyBkb2luZyBpdCB3cm9uZy4KICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1f
dGFza1RocmVhZExvY2spOwogICAgIEFTU0VSVCghbV90YXNrVGhyZWFkKTsKKyAgICAKKyAgICBh
bGxTZXJ2ZXJzKCkucmVtb3ZlKHRoaXMpOwogfQogCiBTV1NlcnZlclJlZ2lzdHJhdGlvbiogU1dT
ZXJ2ZXI6OmdldFJlZ2lzdHJhdGlvbihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
JiByZWdpc3RyYXRpb25LZXkpCkBAIC0xMTIsMTYgKzEyMSw2IEBAIHZvaWQgU1dTZXJ2ZXI6OkNv
bm5lY3Rpb246OmZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtl
ckZldGNoCiAgICAgbV9zZXJ2ZXIuc2NyaXB0RmV0Y2hGaW5pc2hlZCgqdGhpcywgcmVzdWx0KTsK
IH0KIAotdm9pZCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6ZGlkRmluaXNoSW5zdGFsbChjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCi17Ci0gICAgbV9z
ZXJ2ZXIuZGlkRmluaXNoSW5zdGFsbCgqdGhpcywga2V5LCBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgd2FzU3VjY2Vzc2Z1bCk7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OmRpZEZp
bmlzaEFjdGl2YXRpb24oY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYga2V5LCBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKLXsKLSAgICBt
X3NlcnZlci5kaWRGaW5pc2hBY3RpdmF0aW9uKCp0aGlzLCBrZXksIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKTsKLX0KLQogdm9pZCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6ZGlkUmVzb2x2ZVJlZ2lz
dHJhdGlvblByb21pc2UoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYga2V5KQog
ewogICAgIG1fc2VydmVyLmRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKCp0aGlzLCBrZXkp
OwpAQCAtMTM3LDE4ICsxMzYsOSBAQCB2b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpyZW1vdmVT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoY29uc3QgU2VydmljZQogICAgIG1fc2Vy
dmVyLnJlbW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oKnRoaXMsIGtleSwgaWRl
bnRpZmllcik7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OnNjcmlwdENvbnRleHRG
YWlsZWRUb1N0YXJ0KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJh
dGlvbktleSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQotewotICAgIG1fc2VydmVyLnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KCp0
aGlzLCByZWdpc3RyYXRpb25LZXksIGlkZW50aWZpZXIsIG1lc3NhZ2UpOwotfQotCi12b2lkIFNX
U2VydmVyOjpDb25uZWN0aW9uOjpzY3JpcHRDb250ZXh0U3RhcnRlZChjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIpCi17Ci0gICAgbV9zZXJ2ZXIuc2NyaXB0Q29udGV4dFN0YXJ0ZWQoKnRo
aXMsIHJlZ2lzdHJhdGlvbktleSwgaWRlbnRpZmllcik7Ci19Ci0KIFNXU2VydmVyOjpTV1NlcnZl
cigpCiB7CisgICAgYWxsU2VydmVycygpLmFkZCh0aGlzKTsKICAgICBtX3Rhc2tUaHJlYWQgPSBU
aHJlYWQ6OmNyZWF0ZShBU0NJSUxpdGVyYWwoIlNlcnZpY2VXb3JrZXIgVGFzayBUaHJlYWQiKSwg
W3RoaXNdIHsKICAgICAgICAgdGFza1RocmVhZEVudHJ5UG9pbnQoKTsKICAgICB9KTsKQEAgLTIy
Myw0NCArMjEzLDM2IEBAIHZvaWQgU1dTZXJ2ZXI6OnNjcmlwdEZldGNoRmluaXNoZWQoQ29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlckZlCiAgICAgam9iUXVldWUtPnNj
cmlwdEZldGNoRmluaXNoZWQoY29ubmVjdGlvbiwgcmVzdWx0KTsKIH0KIAotdm9pZCBTV1NlcnZl
cjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29u
c3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lk
IFNXU2VydmVyOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChTV1NlcnZlcldvcmtlciYgd29y
a2VyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgQVNTRVJUKG1fY29ubmVjdGlvbnMu
Y29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKLSAgICAKLSAgICBpZiAoYXV0byog
am9iUXVldWUgPSBtX2pvYlF1ZXVlcy5nZXQocmVnaXN0cmF0aW9uS2V5KSkKLSAgICAgICAgam9i
UXVldWUtPnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbm5lY3Rpb24sIGlkZW50aWZpZXIs
IG1lc3NhZ2UpOworICAgIGlmIChhdXRvKiBqb2JRdWV1ZSA9IG1fam9iUXVldWVzLmdldCh3b3Jr
ZXIucmVnaXN0cmF0aW9uS2V5KCkpKQorICAgICAgICBqb2JRdWV1ZS0+c2NyaXB0Q29udGV4dEZh
aWxlZFRvU3RhcnQod29ya2VyLmlkZW50aWZpZXIoKSwgbWVzc2FnZSk7CiB9CiAKLXZvaWQgU1dT
ZXJ2ZXI6OnNjcmlwdENvbnRleHRTdGFydGVkKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgU2VydmljZVdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgU1dTZXJ2ZXI6OnNjcmlwdENvbnRleHRT
dGFydGVkKFNXU2VydmVyV29ya2VyJiB3b3JrZXIpCiB7Ci0gICAgQVNTRVJUKG1fY29ubmVjdGlv
bnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKLQotICAgIGlmIChhdXRvKiBq
b2JRdWV1ZSA9IG1fam9iUXVldWVzLmdldChyZWdpc3RyYXRpb25LZXkpKQotICAgICAgICBqb2JR
dWV1ZS0+c2NyaXB0Q29udGV4dFN0YXJ0ZWQoY29ubmVjdGlvbiwgaWRlbnRpZmllcik7CisgICAg
aWYgKGF1dG8qIGpvYlF1ZXVlID0gbV9qb2JRdWV1ZXMuZ2V0KHdvcmtlci5yZWdpc3RyYXRpb25L
ZXkoKSkpCisgICAgICAgIGpvYlF1ZXVlLT5zY3JpcHRDb250ZXh0U3RhcnRlZCh3b3JrZXIuaWRl
bnRpZmllcigpKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6ZGlkRmluaXNoSW5zdGFsbChDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdp
c3RyYXRpb25LZXksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCit2b2lkIFNXU2VydmVyOjpkaWRGaW5pc2hJbnN0YWxs
KFNXU2VydmVyV29ya2VyJiB3b3JrZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkKIHsKLSAgICBBU1NF
UlQobV9jb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOwotCi0g
ICAgaWYgKGF1dG8qIGpvYlF1ZXVlID0gbV9qb2JRdWV1ZXMuZ2V0KHJlZ2lzdHJhdGlvbktleSkp
Ci0gICAgICAgIGpvYlF1ZXVlLT5kaWRGaW5pc2hJbnN0YWxsKGNvbm5lY3Rpb24sIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCB3YXNTdWNjZXNzZnVsKTsKKyAgICBpZiAoYXV0byogam9iUXVldWUg
PSBtX2pvYlF1ZXVlcy5nZXQod29ya2VyLnJlZ2lzdHJhdGlvbktleSgpKSkKKyAgICAgICAgam9i
UXVldWUtPmRpZEZpbmlzaEluc3RhbGwod29ya2VyLmlkZW50aWZpZXIoKSwgd2FzU3VjY2Vzc2Z1
bCk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OmRpZEZpbmlzaEFjdGl2YXRpb24oQ29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0
aW9uS2V5LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikK
K3ZvaWQgU1dTZXJ2ZXI6OmRpZEZpbmlzaEFjdGl2YXRpb24oU1dTZXJ2ZXJXb3JrZXImIHdvcmtl
cikKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGNvbm5lY3Rpb24sIG1fY29ubmVjdGlvbnMuY29udGFp
bnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKLQotICAgIGlmIChhdXRvKiByZWdpc3RyYXRp
b24gPSBnZXRSZWdpc3RyYXRpb24ocmVnaXN0cmF0aW9uS2V5KSkKLSAgICAgICAgU1dTZXJ2ZXJK
b2JRdWV1ZTo6ZGlkRmluaXNoQWN0aXZhdGlvbigqcmVnaXN0cmF0aW9uLCBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcik7CisgICAgaWYgKGF1dG8qIHJlZ2lzdHJhdGlvbiA9IGdldFJlZ2lzdHJhdGlv
bih3b3JrZXIucmVnaXN0cmF0aW9uS2V5KCkpKQorICAgICAgICBTV1NlcnZlckpvYlF1ZXVlOjpk
aWRGaW5pc2hBY3RpdmF0aW9uKCpyZWdpc3RyYXRpb24sIHdvcmtlci5pZGVudGlmaWVyKCkpOwog
fQogCiB2b2lkIFNXU2VydmVyOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdp
c3RyYXRpb25LZXkpCiB7Ci0gICAgQVNTRVJUKG1fY29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVj
dGlvbi5pZGVudGlmaWVyKCkpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGNvbm5lY3Rpb24sIG1fY29u
bmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKIAogICAgIGlmIChh
dXRvKiBqb2JRdWV1ZSA9IG1fam9iUXVldWVzLmdldChyZWdpc3RyYXRpb25LZXkpKQotICAgICAg
ICBqb2JRdWV1ZS0+ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoY29ubmVjdGlvbik7Cisg
ICAgICAgIGpvYlF1ZXVlLT5kaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZSgpOwogfQogCiB2
b2lkIFNXU2VydmVyOjphZGRDbGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKENvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIGtleSwg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikKQEAgLTI5MSwy
NiArMjczLDc1IEBAIHZvaWQgU1dTZXJ2ZXI6OnJlbW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uCiAgICAgcmVnaXN0cmF0aW9uLT5y
ZW1vdmVDbGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKGNvbm5lY3Rpb24uaWRlbnRpZmll
cigpKTsKIH0KIAotUmVmPFNXU2VydmVyV29ya2VyPiBTV1NlcnZlcjo6dXBkYXRlV29ya2VyKENv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkm
IHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBX
b3JrZXJUeXBlIHR5cGUpCit2b2lkIFNXU2VydmVyOjp1cGRhdGVXb3JrZXIoQ29ubmVjdGlvbiYs
IGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXb3JrZXJUeXBlIHR5cGUpCiB7CiAg
ICAgYXV0byBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IGdlbmVyYXRlU2VydmljZVdvcmtlcklk
ZW50aWZpZXIoKTsKIAotICAgIGF1dG8gcmVzdWx0ID0gbV93b3JrZXJzQnlJRC5hZGQoc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIFNXU2VydmVyV29ya2VyOjpjcmVhdGUocmVnaXN0cmF0aW9uS2V5
LCB1cmwsIHNjcmlwdCwgdHlwZSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIpKTsKLSAgICBBU1NF
UlQocmVzdWx0LmlzTmV3RW50cnkpOworICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBkYXRh
ID0geyByZWdpc3RyYXRpb25LZXksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzY3JpcHQsIHVy
bCwgdHlwZSB9OwogCi0gICAgY29ubmVjdGlvbi5pbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQo
eyByZWdpc3RyYXRpb25LZXksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzY3JpcHQsIHVybCB9
KTsKKyAgICAvLyBSaWdodCBub3cgd2Ugb25seSBldmVyIGtlZXAgdXAgdG8gb25lIGNvbm5lY3Rp
b24gdG8gb25lIFNXIGNvbnRleHQgcHJvY2Vzcy4KKyAgICAvLyBBbmQgaXQgc2hvdWxkIGFsd2F5
cyBleGlzdCBpZiB3ZSdyZSBjYWxsaW5nIHVwZGF0ZVdvcmtlcgorICAgIGF1dG8qIGNvbm5lY3Rp
b24gPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24oKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24pIHsKKyAgICAgICAgbV9wZW5kaW5nQ29u
dGV4dERhdGFzLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
ICAgICAKLSAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKyAgICBpbnN0
YWxsQ29udGV4dERhdGEoZGF0YSk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OmZpcmVJbnN0YWxsRXZl
bnQoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIpCit2b2lkIFNXU2VydmVyOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uQ3JlYXRlZCgpCiB7Ci0gICAgY29ubmVjdGlvbi5maXJlSW5zdGFsbEV2ZW50KHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKTsKKyAgICBBU1NFUlQoU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjpnbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkpOworICAgIGZvciAoYXV0byYgZGF0
YSA6IG1fcGVuZGluZ0NvbnRleHREYXRhcykKKyAgICAgICAgaW5zdGFsbENvbnRleHREYXRhKGRh
dGEpOworICAgIAorICAgIG1fcGVuZGluZ0NvbnRleHREYXRhcy5jbGVhcigpOwogfQogCi12b2lk
IFNXU2VydmVyOjpmaXJlQWN0aXZhdGVFdmVudChDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKK3ZvaWQgU1dTZXJ2
ZXI6Omluc3RhbGxDb250ZXh0RGF0YShjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRh
dGEpCiB7Ci0gICAgY29ubmVjdGlvbi5maXJlQWN0aXZhdGVFdmVudChzZXJ2aWNlV29ya2VySWRl
bnRpZmllcik7CisgICAgYXV0byogY29ubmVjdGlvbiA9IFNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6Z2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOworICAgIEFTU0VSVChjb25u
ZWN0aW9uKTsKKworICAgIGF1dG8gcmVzdWx0ID0gbV93b3JrZXJzQnlJRC5hZGQoZGF0YS5zZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgU1dTZXJ2ZXJXb3JrZXI6OmNyZWF0ZSgqdGhpcywgZGF0YS5y
ZWdpc3RyYXRpb25LZXksIGNvbm5lY3Rpb24tPmlkZW50aWZpZXIoKSwgZGF0YS5zY3JpcHRVUkws
IGRhdGEuc2NyaXB0LCBkYXRhLndvcmtlclR5cGUsIGRhdGEuc2VydmljZVdvcmtlcklkZW50aWZp
ZXIpKTsKKyAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgY29ubmVjdGlvbi0+
aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KGRhdGEpOworfQorCit2b2lkIFNXU2VydmVyOjpm
aXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKQoreworICAgIGF1dG8qIHdvcmtlciA9IG1fd29ya2Vyc0J5SUQuZ2V0KHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKTsKKyAgICBpZiAoIXdvcmtlcikgeworICAgICAgICBMT0dfRVJST1Io
IlJlcXVlc3QgdG8gZmlyZSBpbnN0YWxsIGV2ZW50IG9uIGEgd29ya2VyIHRoYXQgY2Fubm90IGJl
IGZvdW5kIGluIHRoZSBzZXJ2ZXIiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1
dG8qIGNvbm5lY3Rpb24gPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25G
b3JJZGVudGlmaWVyKHdvcmtlci0+Y29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKCkpOworICAg
IGlmICghY29ubmVjdGlvbikgeworICAgICAgICBMT0dfRVJST1IoIlJlcXVlc3QgdG8gZmlyZSBp
bnN0YWxsIGV2ZW50IG9uIGEgd29ya2VyIHdob3NlIGNvbnRleHQgY29ubmVjdGlvbiBkb2VzIG5v
dCBleGlzdCIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29ubmVjdGlvbi0+Zmly
ZUluc3RhbGxFdmVudChzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Cit9CisKK3ZvaWQgU1dTZXJ2
ZXI6OmZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKQoreworICAgIGF1dG8qIHdvcmtlciA9IG1fd29ya2Vyc0J5SUQuZ2V0KHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBpZiAoIXdvcmtlcikgeworICAgICAgICBMT0df
RVJST1IoIlJlcXVlc3QgdG8gZmlyZSBpbnN0YWxsIGV2ZW50IG9uIGEgd29ya2VyIHRoYXQgY2Fu
bm90IGJlIGZvdW5kIGluIHRoZSBzZXJ2ZXIiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5l
Y3Rpb25Gb3JJZGVudGlmaWVyKHdvcmtlci0+Y29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKCkp
OworICAgIGlmICghY29ubmVjdGlvbikgeworICAgICAgICBMT0dfRVJST1IoIlJlcXVlc3QgdG8g
ZmlyZSBpbnN0YWxsIGV2ZW50IG9uIGEgd29ya2VyIHdob3NlIGNvbnRleHQgY29ubmVjdGlvbiBk
b2VzIG5vdCBleGlzdCIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29ubmVjdGlv
bi0+ZmlyZUFjdGl2YXRlRXZlbnQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogfQogCiB2b2lk
IFNXU2VydmVyOjp0YXNrVGhyZWFkRW50cnlQb2ludCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggMGFlMDMxMmQxN2EuLmIzYzEw
OGUxOWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYi5o
IgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmgiCiAjaW5jbHVkZSAi
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJU
eXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFF1ZXVlLmg+CiAjaW5jbHVkZSA8d3Rm
L0Nyb3NzVGhyZWFkVGFzay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC00NSw2ICs0
Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1dTZXJ2ZXJKb2JRdWV1ZTsKIGNs
YXNzIFNXU2VydmVyUmVnaXN0cmF0aW9uOworY2xhc3MgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOwogZW51bSBjbGFzcyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGU7CiBlbnVtIGNs
YXNzIFNlcnZpY2VXb3JrZXJTdGF0ZTsKIHN0cnVjdCBFeGNlcHRpb25EYXRhOwpAQCAtNTksMTAg
KzYxLDYgQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB+Q29ubmVjdGlvbigpOwogCi0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NyaXB0
Q29udGV4dEZhaWxlZFRvU3RhcnQoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYs
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcmlwdENvbnRleHRTdGFydGVkKGNvbnN0IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmluaXNoSW5zdGFsbChjb25zdCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vz
c2Z1bCk7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbihj
b25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgU2VydmljZVdvcmtlcklkZW50aWZp
ZXIpOwogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlc29sdmVSZWdpc3RyYXRpb25Q
cm9taXNlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKTsKICAgICAgICAgY29u
c3QgU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIGRvUmVnaXN0cmF0aW9uTWF0Y2hpbmcoY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMKSBjb25zdCB7
IHJldHVybiBtX3NlcnZlci5kb1JlZ2lzdHJhdGlvbk1hdGNoaW5nKHRvcE9yaWdpbiwgY2xpZW50
VVJMKTsgfQogCkBAIC04NywxMSArODUsNiBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCByZXNvbHZlVW5yZWdpc3RyYXRpb25Kb2JJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVudGlmaWVy
LCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgYm9vbCByZWdpc3RyYXRpb25S
ZXN1bHQpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hJbkNsaWVu
dCh1aW50NjRfdCBqb2JJZGVudGlmaWVyKSA9IDA7CiAKLSAgICAgICAgLy8gTWVzc2FnZXMgdG8g
dGhlIFNXIGhvc3QgV2ViUHJvY2VzcwotICAgICAgICB2aXJ0dWFsIHZvaWQgaW5zdGFsbFNlcnZp
Y2VXb3JrZXJDb250ZXh0KGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpID0gMDsKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKSA9IDA7Ci0KICAgICAgICAgU1dTZXJ2ZXImIG1fc2VydmVyOwogICAg
IH07CiAKQEAgLTExMywxMyArMTA2LDIyIEBAIHB1YmxpYzoKICAgICB2b2lkIHBvc3RUYXNrKENy
b3NzVGhyZWFkVGFzayYmKTsKICAgICB2b2lkIHBvc3RUYXNrUmVwbHkoQ3Jvc3NUaHJlYWRUYXNr
JiYpOwogCi0gICAgUmVmPFNXU2VydmVyV29ya2VyPiB1cGRhdGVXb3JrZXIoQ29ubmVjdGlvbiYs
IGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmIHNjcmlwdCwgV29ya2VyVHlwZSk7Ci0gICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KENv
bm5lY3Rpb24mLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgdm9pZCBmaXJlQWN0aXZh
dGVFdmVudChDb25uZWN0aW9uJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIHZvaWQg
dXBkYXRlV29ya2VyKENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIFdvcmtlclR5cGUpOworICAg
IHZvaWQgZmlyZUluc3RhbGxFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisgICAgdm9p
ZCBmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgU1dTZXJ2
ZXJXb3JrZXIqIHdvcmtlckJ5SUQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikg
Y29uc3QgeyByZXR1cm4gbV93b3JrZXJzQnlJRC5nZXQoaWRlbnRpZmllcik7IH0KICAgICAKICAg
ICBDb25uZWN0aW9uKiBnZXRDb25uZWN0aW9uKHVpbnQ2NF90IGlkZW50aWZpZXIpIHsgcmV0dXJu
IG1fY29ubmVjdGlvbnMuZ2V0KGlkZW50aWZpZXIpOyB9CiAKKyAgICB2b2lkIHNjcmlwdENvbnRl
eHRGYWlsZWRUb1N0YXJ0KFNXU2VydmVyV29ya2VyJiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsK
KyAgICB2b2lkIHNjcmlwdENvbnRleHRTdGFydGVkKFNXU2VydmVyV29ya2VyJik7CisgICAgdm9p
ZCBkaWRGaW5pc2hJbnN0YWxsKFNXU2VydmVyV29ya2VyJiwgYm9vbCB3YXNTdWNjZXNzZnVsKTsK
KyAgICB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oU1dTZXJ2ZXJXb3JrZXImKTsKKworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoKTsKKyAg
ICAKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSGFzaFNldDxTV1NlcnZlcio+JiBhbGxTZXJ2
ZXJzKCk7CisKIHByaXZhdGU6CiAgICAgdm9pZCByZWdpc3RlckNvbm5lY3Rpb24oQ29ubmVjdGlv
biYpOwogICAgIHZvaWQgdW5yZWdpc3RlckNvbm5lY3Rpb24oQ29ubmVjdGlvbiYpOwpAQCAtMTI4
LDEwICsxMzAsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlVGFza1JlcGxpZXNPbk1haW5U
aHJlYWQoKTsKIAogICAgIHZvaWQgc2NyaXB0RmV0Y2hGaW5pc2hlZChDb25uZWN0aW9uJiwgY29u
c3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0Jik7Ci0gICAgdm9pZCBzY3JpcHRDb250ZXh0RmFp
bGVkVG9TdGFydChDb25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eSYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAg
IHZvaWQgc2NyaXB0Q29udGV4dFN0YXJ0ZWQoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgdm9pZCBk
aWRGaW5pc2hJbnN0YWxsKENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCk7Ci0g
ICAgdm9pZCBkaWRGaW5pc2hBY3RpdmF0aW9uKENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIHZvaWQg
ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkmKTsKIAogICAgIHZvaWQgYWRkQ2xpZW50U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbihDb25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSYsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKQEAgLTEzOSw2ICsx
MzcsOCBAQCBwcml2YXRlOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgU1dTZXJ2ZXJSZWdp
c3RyYXRpb24qIGRvUmVnaXN0cmF0aW9uTWF0Y2hpbmcoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMKSBjb25zdDsKIAorICAgIHZvaWQgaW5z
dGFsbENvbnRleHREYXRhKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpOworCiAgICAg
SGFzaE1hcDx1aW50NjRfdCwgQ29ubmVjdGlvbio+IG1fY29ubmVjdGlvbnM7CiAgICAgSGFzaE1h
cDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LCBzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJS
ZWdpc3RyYXRpb24+PiBtX3JlZ2lzdHJhdGlvbnM7CiAgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5LCBzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJKb2JRdWV1ZT4+IG1fam9i
UXVldWVzOwpAQCAtMTUzLDYgKzE1Myw4IEBAIHByaXZhdGU6CiAKICAgICBMb2NrIG1fbWFpblRo
cmVhZFJlcGx5TG9jazsKICAgICBib29sIG1fbWFpblRocmVhZFJlcGx5U2NoZWR1bGVkIHsgZmFs
c2UgfTsKKworICAgIERlcXVlPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gbV9wZW5kaW5nQ29u
dGV4dERhdGFzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5j
cHAKaW5kZXggNGI3YjA3MjViMGUuLmFjMjg3MTk2NWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAK
QEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlz
aGVkKFNXU2VydmVyOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb24KIH0KIAogLy8gaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI3VwZGF0ZS1hbGdvcml0aG0KLXZvaWQgU1dT
ZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoU1dTZXJ2ZXI6OkNvbm5l
Y3Rpb24mLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQor
dm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIC8vIElmIGFu
IHVuY2F1Z2h0IHJ1bnRpbWUgc2NyaXB0IGVycm9yIG9jY3VycyBkdXJpbmcgdGhlIGFib3ZlIHN0
ZXAsIHRoZW46CiAgICAgYXV0byogcmVnaXN0cmF0aW9uID0gbV9zZXJ2ZXIuZ2V0UmVnaXN0cmF0
aW9uKG1fcmVnaXN0cmF0aW9uS2V5KTsKQEAgLTEwMSwxNiArMTAxLDE2IEBAIHZvaWQgU1dTZXJ2
ZXJKb2JRdWV1ZTo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoU1dTZXJ2ZXI6OkNvbm5lY3Rp
b24mLCBTZXJ2aWNlCiAgICAgZmluaXNoQ3VycmVudEpvYigpOwogfQogCi12b2lkIFNXU2VydmVy
Sm9iUXVldWU6OnNjcmlwdENvbnRleHRTdGFydGVkKFNXU2VydmVyOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBTV1NlcnZl
ckpvYlF1ZXVlOjpzY3JpcHRDb250ZXh0U3RhcnRlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBp
ZGVudGlmaWVyKQogewogICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fc2VydmVyLmdldFJlZ2lz
dHJhdGlvbihtX3JlZ2lzdHJhdGlvbktleSk7CiAgICAgQVNTRVJUKHJlZ2lzdHJhdGlvbik7CiAK
LSAgICBpbnN0YWxsKCpyZWdpc3RyYXRpb24sIGNvbm5lY3Rpb24sIGlkZW50aWZpZXIpOworICAg
IGluc3RhbGwoKnJlZ2lzdHJhdGlvbiwgaWRlbnRpZmllcik7CiB9CiAKIC8vIGh0dHBzOi8vdzNj
LmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNpbnN0YWxsCi12b2lkIFNXU2VydmVySm9iUXVldWU6
Omluc3RhbGwoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgU1dTZXJ2ZXI6OkNv
bm5lY3Rpb24mLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpbnN0YWxsaW5nV29ya2VyKQordm9p
ZCBTV1NlcnZlckpvYlF1ZXVlOjppbnN0YWxsKFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3Ry
YXRpb24sIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGluc3RhbGxpbmdXb3JrZXIpCiB7CiAgICAg
Ly8gVGhlIEluc3RhbGwgYWxnb3JpdGhtIHNob3VsZCBuZXZlciBiZSBpbnZva2VkIHdpdGggYSBu
dWxsIHdvcmtlci4KICAgICBhdXRvKiB3b3JrZXIgPSBtX3NlcnZlci53b3JrZXJCeUlEKGluc3Rh
bGxpbmdXb3JrZXIpOwpAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6
aW5zdGFsbChTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBTV1NlcnZlcjo6Q29u
CiB9CiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNpbnN0YWxsIChh
ZnRlciByZXNvbHZpbmcgcHJvbWlzZSkuCi12b2lkIFNXU2VydmVySm9iUXVldWU6OmRpZFJlc29s
dmVSZWdpc3RyYXRpb25Qcm9taXNlKFNXU2VydmVyOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQor
dm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZSgpCiB7
CiAgICAgYXV0byogcmVnaXN0cmF0aW9uID0gbV9zZXJ2ZXIuZ2V0UmVnaXN0cmF0aW9uKG1fcmVn
aXN0cmF0aW9uS2V5KTsKICAgICBBU1NFUlQocmVnaXN0cmF0aW9uKTsKQEAgLTEzNSwxMSArMTM1
LDExIEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21p
c2UoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mIGNvbm5lCiAgICAgcmVnaXN0cmF0aW9uLT5maXJlVXBk
YXRlRm91bmRFdmVudCgpOwogCiAgICAgLy8gUXVldWUgYSB0YXNrIHRvIGZpcmUgdGhlIEluc3Rh
bGxFdmVudC4KLSAgICBtX3NlcnZlci5maXJlSW5zdGFsbEV2ZW50KGNvbm5lY3Rpb24sIHJlZ2lz
dHJhdGlvbi0+aW5zdGFsbGluZ1dvcmtlcigpLT5pZGVudGlmaWVyKCkpOworICAgIG1fc2VydmVy
LmZpcmVJbnN0YWxsRXZlbnQocmVnaXN0cmF0aW9uLT5pbnN0YWxsaW5nV29ya2VyKCktPmlkZW50
aWZpZXIoKSk7CiB9CiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNp
bnN0YWxsCi12b2lkIFNXU2VydmVySm9iUXVldWU6OmRpZEZpbmlzaEluc3RhbGwoU1dTZXJ2ZXI6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6ZGlkRmluaXNo
SW5zdGFsbChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nl
c3NmdWwpCiB7CiAgICAgYXV0byogcmVnaXN0cmF0aW9uID0gbV9zZXJ2ZXIuZ2V0UmVnaXN0cmF0
aW9uKG1fcmVnaXN0cmF0aW9uS2V5KTsKICAgICBBU1NFUlQocmVnaXN0cmF0aW9uKTsKQEAgLTE3
NiwxMSArMTc2LDExIEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6ZGlkRmluaXNoSW5zdGFsbChT
V1NlcnZlcjo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU2VydmljCiAgICAgZmluaXNoQ3VycmVu
dEpvYigpOwogCiAgICAgLy8gRklYTUU6IFdhaXQgZm9yIGFsbCB0aGUgdGFza3MgcXVldWVkIGJ5
IFVwZGF0ZSBXb3JrZXIgU3RhdGUgaW52b2tlZCBpbiB0aGlzIGFsZ29yaXRobSBoYXZlIGV4ZWN1
dGVkLgotICAgIHRyeUFjdGl2YXRlKG1fc2VydmVyLCBjb25uZWN0aW9uLCAqcmVnaXN0cmF0aW9u
KTsKKyAgICB0cnlBY3RpdmF0ZShtX3NlcnZlciwgKnJlZ2lzdHJhdGlvbik7CiB9CiAKIC8vIGh0
dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyN0cnktYWN0aXZhdGUtYWxnb3JpdGht
Ci12b2lkIFNXU2VydmVySm9iUXVldWU6OnRyeUFjdGl2YXRlKFNXU2VydmVyJiBzZXJ2ZXIsIFNX
U2VydmVyOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVn
aXN0cmF0aW9uKQordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjp0cnlBY3RpdmF0ZShTV1NlcnZlciYg
c2VydmVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uKQogewogICAgIC8vIElm
IHJlZ2lzdHJhdGlvbidzIHdhaXRpbmcgd29ya2VyIGlzIG51bGwsIHJldHVybi4KICAgICBpZiAo
IXJlZ2lzdHJhdGlvbi53YWl0aW5nV29ya2VyKCkpCkBAIC0xOTQsMTEgKzE5NCwxMSBAQCB2b2lk
IFNXU2VydmVySm9iUXVldWU6OnRyeUFjdGl2YXRlKFNXU2VydmVyJiBzZXJ2ZXIsIFNXU2VydmVy
OjpDb25uZWN0aW9uJiBjb25uZQogICAgIC8vIC0gVGhlIHJlc3VsdCBvZiBydW5uaW5nIFNlcnZp
Y2UgV29ya2VyIEhhcyBObyBQZW5kaW5nIEV2ZW50cyB3aXRoIHJlZ2lzdHJhdGlvbidzIGFjdGl2
ZSB3b3JrZXIgaXMgdHJ1ZSwKICAgICAvLyAgIGFuZCBubyBzZXJ2aWNlIHdvcmtlciBjbGllbnQg
aXMgdXNpbmcgcmVnaXN0cmF0aW9uIG9yIHJlZ2lzdHJhdGlvbidzIHdhaXRpbmcgd29ya2VyJ3Mg
c2tpcCB3YWl0aW5nCiAgICAgLy8gICBmbGFnIGlzIHNldC4KLSAgICBhY3RpdmF0ZShzZXJ2ZXIs
IGNvbm5lY3Rpb24sIHJlZ2lzdHJhdGlvbik7CisgICAgYWN0aXZhdGUoc2VydmVyLCByZWdpc3Ry
YXRpb24pOwogfQogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jYWN0
aXZhdGUKLXZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6YWN0aXZhdGUoU1dTZXJ2ZXImIHNlcnZlciwg
U1dTZXJ2ZXI6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNXU2VydmVyUmVnaXN0cmF0aW9uJiBy
ZWdpc3RyYXRpb24pCit2b2lkIFNXU2VydmVySm9iUXVldWU6OmFjdGl2YXRlKFNXU2VydmVyJiBz
ZXJ2ZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24pCiB7CiAgICAgLy8gSWYg
cmVnaXN0cmF0aW9uJ3Mgd2FpdGluZyB3b3JrZXIgaXMgbnVsbCwgYWJvcnQgdGhlc2Ugc3RlcHMu
CiAgICAgaWYgKCFyZWdpc3RyYXRpb24ud2FpdGluZ1dvcmtlcigpKQpAQCAtMjIyLDcgKzIyMiw3
IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6YWN0aXZhdGUoU1dTZXJ2ZXImIHNlcnZlciwgU1dT
ZXJ2ZXI6OkNvbm5lY3Rpb24mIGNvbm5lY3RpCiAgICAgLy8gRklYTUU6IEludm9rZSBSdW4gU2Vy
dmljZSBXb3JrZXIgYWxnb3JpdGhtIHdpdGggYWN0aXZlV29ya2VyIGFzIHRoZSBhcmd1bWVudC4K
IAogICAgIC8vIFF1ZXVlIGEgdGFzayB0byBmaXJlIHRoZSBhY3RpdmF0ZSBldmVudC4KLSAgICBz
ZXJ2ZXIuZmlyZUFjdGl2YXRlRXZlbnQoY29ubmVjdGlvbiwgcmVnaXN0cmF0aW9uLmFjdGl2ZVdv
cmtlcigpLT5pZGVudGlmaWVyKCkpOworICAgIHNlcnZlci5maXJlQWN0aXZhdGVFdmVudChyZWdp
c3RyYXRpb24uYWN0aXZlV29ya2VyKCktPmlkZW50aWZpZXIoKSk7CiB9CiAKIC8vIGh0dHBzOi8v
dzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNhY3RpdmF0ZSAocG9zdCBhY3RpdmF0ZSBldmVu
dCBzdGVwcykuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVySm9iUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5oCmluZGV4IDJmNzdiMDk3ZjIxLi4zMTBkMThiM2IwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ckpvYlF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlckpvYlF1ZXVlLmgKQEAgLTQ4LDExICs0OCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
dW5OZXh0Sm9iKCk7CiAKICAgICB2b2lkIHNjcmlwdEZldGNoRmluaXNoZWQoU1dTZXJ2ZXI6OkNv
bm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKTsKLSAgICB2b2lkIHNj
cmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KFNXU2VydmVyOjpDb25uZWN0aW9uJiwgU2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgdm9pZCBzY3JpcHRD
b250ZXh0U3RhcnRlZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYsIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKTsKLSAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKTsKKyAgICB2b2lkIHNj
cmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgc2NyaXB0Q29udGV4dFN0YXJ0ZWQoU2VydmljZVdv
cmtlcklkZW50aWZpZXIpOworICAgIHZvaWQgZGlkRmluaXNoSW5zdGFsbChTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5p
c2hBY3RpdmF0aW9uKFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgU2VydmljZVdvcmtlcklkZW50aWZp
ZXIpOwotICAgIHZvaWQgZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoU1dTZXJ2ZXI6OkNv
bm5lY3Rpb24mKTsKKyAgICB2b2lkIGRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKCk7CiAK
IHByaXZhdGU6CiAgICAgdm9pZCBqb2JUaW1lckZpcmVkKCk7CkBAIC02Niw5ICs2Niw5IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHRyeUNsZWFyUmVnaXN0cmF0aW9uKFNXU2VydmVyUmVnaXN0cmF0
aW9uJik7CiAgICAgdm9pZCBjbGVhclJlZ2lzdHJhdGlvbihTV1NlcnZlclJlZ2lzdHJhdGlvbiYp
OwotICAgIHZvaWQgaW5zdGFsbChTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIFNXU2VydmVyOjpDb25u
ZWN0aW9uJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAgIHN0YXRpYyB2b2lkIHRyeUFj
dGl2YXRlKFNXU2VydmVyJiwgU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBTV1NlcnZlclJlZ2lzdHJh
dGlvbiYpOwotICAgIHN0YXRpYyB2b2lkIGFjdGl2YXRlKFNXU2VydmVyJiwgU1dTZXJ2ZXI6OkNv
bm5lY3Rpb24mLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYpOworICAgIHZvaWQgaW5zdGFsbChTV1Nl
cnZlclJlZ2lzdHJhdGlvbiYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMg
dm9pZCB0cnlBY3RpdmF0ZShTV1NlcnZlciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJik7CisgICAg
c3RhdGljIHZvaWQgYWN0aXZhdGUoU1dTZXJ2ZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYpOwog
CiAgICAgRGVxdWU8U2VydmljZVdvcmtlckpvYkRhdGE+IG1fam9iUXVldWU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3Ry
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggZjczYmVmZWNiNDMuLjczMjc3OTdiODA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0
cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyUmVnaXN0cmF0aW9uLmNwcApAQCAtMzcsOCArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0YXRpYyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBnZW5lcmF0
ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKCkKIHsKLSAgICBzdGF0aWMgdWlu
dDY0X3QgaWRlbnRpZmllciA9IDA7Ci0gICAgcmV0dXJuIG1ha2VPYmplY3RJZGVudGlmaWVyPFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyVHlwZT4oKytpZGVudGlmaWVyKTsKKyAg
ICByZXR1cm4gZ2VuZXJhdGVPYmplY3RJZGVudGlmaWVyPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyVHlwZT4oKTsKIH0KIAogU1dTZXJ2ZXJSZWdpc3RyYXRpb246OlNXU2VydmVy
UmVnaXN0cmF0aW9uKFNXU2VydmVyJiBzZXJ2ZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkmIGtleSwgU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlIHVwZGF0ZVZpYUNhY2hl
LCBjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmIHNjcmlwdFVSTCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uMjI5MmJkNjRlYTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAK
QEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCisKKyNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCisKKyNpbmNsdWRlICJTV1NlcnZlci5oIgorI2luY2x1ZGUgIlNXU2VydmVyV29y
a2VyLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RhdGljIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgZ2Vu
ZXJhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcigpCit7CisgICAgcmV0dXJu
IGdlbmVyYXRlT2JqZWN0SWRlbnRpZmllcjxTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVu
dGlmaWVyVHlwZT4oKTsKK30KKworc3RhdGljIEhhc2hNYXA8U1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uSWRlbnRpZmllciwgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4mIGFsbENvbm5l
Y3Rpb25zKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyLCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24q
Pj4gY29ubmVjdGlvbnM7CisgICAgcmV0dXJuIGNvbm5lY3Rpb25zOworfQorCitTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpCisgICAgOiBt
X2lkZW50aWZpZXIoZ2VuZXJhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcigp
KQoreworICAgIGF1dG8gcmVzdWx0ID0gYWxsQ29ubmVjdGlvbnMoKS5hZGQobV9pZGVudGlmaWVy
LCB0aGlzKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwor
fQorCitTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5TV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24oKQoreworICAgIGF1dG8gdGFrZW4gPSBhbGxDb25uZWN0aW9ucygpLnRha2UobV9pZGVu
dGlmaWVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHRha2VuLCB0YWtlbiA9IHRoaXMpOworfQorCitT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
Y29ubmVjdGlvbkZvcklkZW50aWZpZXIoU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRp
ZmllciBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBhbGxDb25uZWN0aW9ucygpLmdldChpZGVu
dGlmaWVyKTsKK30KKworU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQoreworICAg
IGlmIChhbGxDb25uZWN0aW9ucygpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgCisgICAgQVNTRVJUKGFsbENvbm5lY3Rpb25zKCkuc2l6ZSgpID09IDEpOworICAgIHJl
dHVybiBhbGxDb25uZWN0aW9ucygpLmJlZ2luKCktPnZhbHVlOworfQorCit2b2lkIFNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoU2VydmljZVdv
cmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKK3sKKyAgICBpZiAoYXV0byogd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5n
V29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpCisgICAgICAgIHdv
cmtlci0+c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQobWVzc2FnZSk7Cit9CisKK3ZvaWQgU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzY3JpcHRDb250ZXh0U3RhcnRlZChTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byog
d29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2
aWNlV29ya2VySWRlbnRpZmllcikpCisgICAgICAgIHdvcmtlci0+c2NyaXB0Q29udGV4dFN0YXJ0
ZWQoKTsKK30KKyAgICAKK3ZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRGaW5p
c2hJbnN0YWxsKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBib29sIHdhc1N1Y2Nlc3NmdWwpCit7CisgICAgaWYgKGF1dG8qIHdvcmtlciA9IFNXU2VydmVy
V29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZp
ZXIpKQorICAgICAgICB3b3JrZXItPmRpZEZpbmlzaEluc3RhbGwod2FzU3VjY2Vzc2Z1bCk7Cit9
CisKK3ZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRGaW5pc2hBY3RpdmF0aW9u
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQoreworICAg
IGlmIChhdXRvKiB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVu
dGlmaWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkKKyAgICAgICAgd29ya2VyLT5kaWRGaW5p
c2hBY3RpdmF0aW9uKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mNmEwMmRlYTk5NQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVk
ZSAiU2VydmljZVdvcmtlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVHlw
ZXMuaCIKKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBTV1NlcnZlcjsKK3N0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE7CisKK2NsYXNzIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+IHsKK3B1YmxpYzoK
KyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24o
KTsKKworICAgIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgaWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCisgICAgLy8gTWVzc2FnZXMgdG8g
dGhlIFNXIGhvc3QgcHJvY2VzcworICAgIHZpcnR1YWwgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtl
ckNvbnRleHQoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KSA9IDA7CisKKyAgICAvLyBNZXNzYWdlcyBiYWNrIGZyb20gdGhlIFNXIGhvc3QgcHJvY2Vzcwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzY3JpcHRDb250ZXh0U3RhcnRlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRGaW5pc2hJbnN0YWxsKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZGlkRmluaXNoQWN0aXZhdGlvbihTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisKKyAgICBzdGF0
aWMgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBjb25uZWN0aW9uRm9ySWRlbnRpZmllcihT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKTsKKworICAgIC8vIEZJWE1FOiBX
aGlsZSB3ZSBvbmx5IGV2ZXIgaGF2ZSBvbmUgU1cgY29udGV4dCBwcm9jZXNzIHRoaXMgbWV0aG9k
IG1ha2VzIHNlbnNlLgorICAgIC8vIE9uY2Ugd2UgaGF2ZSBtdWx0aXBsZSBvbmVzIHRoaXMgbWV0
aG9kIHNob3VsZCBnbyBhd2F5LgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24qIGdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKKwor
cHJvdGVjdGVkOgorICAgIFdFQkNPUkVfRVhQT1JUIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bigpOworCitwcml2YXRlOgorICAgIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZp
ZXIgbV9pZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAppbmRleCAxMjVhMjY0ZjU3
Yy4uNWJiMjMwY2ZmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCkBAIC0yOCwyNCArMjgsNjUgQEAKIAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNXU2VydmVyV29ya2VyOjpTV1NlcnZlcldv
cmtlcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXks
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgV29ya2VyVHlwZSB0eXBlLCBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQotICAgIDogbV9yZWdpc3RyYXRpb25L
ZXkocmVnaXN0cmF0aW9uS2V5KQorc3RhdGljIEhhc2hNYXA8U2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIFNXU2VydmVyV29ya2VyKj4mIGFsbFdvcmtlcnMoKQoreworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxIYXNoTWFwPFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTV1NlcnZlcldvcmtlcio+
PiB3b3JrZXJzOworICAgIHJldHVybiB3b3JrZXJzOworfQorCitTV1NlcnZlcldvcmtlciogU1dT
ZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBhbGxXb3JrZXJzKCkuZ2V0KGlkZW50
aWZpZXIpOworfQorCitTV1NlcnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImIHNl
cnZlciwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5
LCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyIGNvbnRleHRDb25uZWN0aW9u
SWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXb3JrZXJU
eXBlIHR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgOiBtX3Nl
cnZlcihzZXJ2ZXIpCisgICAgLCBtX3JlZ2lzdHJhdGlvbktleShyZWdpc3RyYXRpb25LZXkpCisg
ICAgLCBtX2NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcihjb250ZXh0Q29ubmVjdGlvbklkZW50
aWZpZXIpCiAgICAgLCBtX3NjcmlwdFVSTCh1cmwpCiAgICAgLCBtX3NjcmlwdChzY3JpcHQpCiAg
ICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAsIG1fdHlwZSh0eXBlKQogeworICAg
IGF1dG8gcmVzdWx0ID0gYWxsV29ya2VycygpLmFkZChpZGVudGlmaWVyLCB0aGlzKTsKKyAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi1TV1NlcnZlcldv
cmtlcjo6flNXU2VydmVyV29ya2VyKCkgPSBkZWZhdWx0OworU1dTZXJ2ZXJXb3JrZXI6On5TV1Nl
cnZlcldvcmtlcigpCit7CisgICAgYXV0byB0YWtlbiA9IGFsbFdvcmtlcnMoKS50YWtlKG1faWRl
bnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRCh0YWtlbiwgdGFrZW4gPT0gdGhpcyk7Cit9CiAK
IHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnRlcm1pbmF0ZSgpCiB7CiAgICAgLy8gRklYTUU6IEltcGxl
bWVudAogfQogCit2b2lkIFNXU2VydmVyV29ya2VyOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFy
dChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgbV9zZXJ2ZXIuc2NyaXB0Q29udGV4dEZh
aWxlZFRvU3RhcnQoKnRoaXMsIG1lc3NhZ2UpOworfQorCit2b2lkIFNXU2VydmVyV29ya2VyOjpz
Y3JpcHRDb250ZXh0U3RhcnRlZCgpCit7CisgICAgbV9zZXJ2ZXIuc2NyaXB0Q29udGV4dFN0YXJ0
ZWQoKnRoaXMpOworfQorCit2b2lkIFNXU2VydmVyV29ya2VyOjpkaWRGaW5pc2hJbnN0YWxsKGJv
b2wgd2FzU3VjY2Vzc2Z1bCkKK3sKKyAgICBtX3NlcnZlci5kaWRGaW5pc2hJbnN0YWxsKCp0aGlz
LCB3YXNTdWNjZXNzZnVsKTsKK30KKwordm9pZCBTV1NlcnZlcldvcmtlcjo6ZGlkRmluaXNoQWN0
aXZhdGlvbigpCit7CisgICAgbV9zZXJ2ZXIuZGlkRmluaXNoQWN0aXZhdGlvbigqdGhpcyk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJXb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJXb3JrZXIuaAppbmRleCBhYmNkNTljZTkxMC4uNTcwMWUxNDQ3MWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmgKQEAgLTM1LDEzICszNSwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IFNXU2VydmVyOwogZW51bSBjbGFzcyBXb3JrZXJUeXBlOwogCiBjbGFzcyBTV1NlcnZlcldvcmtl
ciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTV1NlcnZlcldvcmtlcj4gewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8U1dTZXJ2ZXJXb3JrZXI+IGNyZWF0ZShjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHNjcmlwdCwgV29ya2VyVHlwZSB0eXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBpZGVudGlmaWVyKQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVm
PFNXU2VydmVyV29ya2VyPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTV1NlcnZlcldvcmtlcihyZWdpc3RyYXRpb25LZXksIHVybCwg
c2NyaXB0LCB0eXBlLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNXU2VydmVyV29ya2VyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOwogICAgIH0KICAg
ICAKICAgICBTV1NlcnZlcldvcmtlcihjb25zdCBTV1NlcnZlcldvcmtlciYpID0gZGVsZXRlOwpA
QCAtNDksMTkgKzUwLDMwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdGVybWluYXRlKCk7CiAKKyAg
ICBTV1NlcnZlciYgc2VydmVyKCk7CisgICAgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSYgcmVnaXN0cmF0aW9uS2V5KCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYXRpb25LZXk7
IH0KICAgICBjb25zdCBVUkwmIHNjcmlwdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0VVJM
OyB9CiAgICAgY29uc3QgU3RyaW5nJiBzY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdDsg
fQogICAgIFdvcmtlclR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiAgICAg
U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRl
bnRpZmllcjsgfQorICAgIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgY29u
dGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0Q29ubmVj
dGlvbklkZW50aWZpZXI7IH0KIAogICAgIFNlcnZpY2VXb3JrZXJTdGF0ZSBzdGF0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhdGU7IH0KICAgICB2b2lkIHNldFN0YXRlKFNlcnZpY2VXb3JrZXJTdGF0
ZSBzdGF0ZSkgeyBtX3N0YXRlID0gc3RhdGU7IH0KIAorICAgIHZvaWQgc2NyaXB0Q29udGV4dEZh
aWxlZFRvU3RhcnQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIHNjcmlwdENvbnRl
eHRTdGFydGVkKCk7CisgICAgdm9pZCBkaWRGaW5pc2hJbnN0YWxsKGJvb2wgd2FzU3VjY2Vzc2Z1
bCk7CisgICAgdm9pZCBkaWRGaW5pc2hBY3RpdmF0aW9uKCk7CisKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgU1dTZXJ2ZXJXb3JrZXIqIGV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihTZXJ2
aWNlV29ya2VySWRlbnRpZmllcik7CiBwcml2YXRlOgotICAgIFNXU2VydmVyV29ya2VyKGNvbnN0
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IHNjcmlwdCwgV29ya2VyVHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIFNXU2Vy
dmVyV29ya2VyKFNXU2VydmVyJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYs
IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYgc2NyaXB0LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAK
KyAgICBTV1NlcnZlciYgbV9zZXJ2ZXI7CiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eSBtX3JlZ2lzdHJhdGlvbktleTsKKyAgICBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVu
dGlmaWVyIG1fY29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyOwogICAgIFVSTCBtX3NjcmlwdFVS
TDsKICAgICBTdHJpbmcgbV9zY3JpcHQ7CiAgICAgU2VydmljZVdvcmtlcklkZW50aWZpZXIgbV9p
ZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDQzOWIxZWU4Zjg5Li5k
NzIxYzBiMThjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTY0LDYgKzE2NCw3
IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFdlYlNXQ2xpZW50Q29ubmVjdGlvbiBcCiAg
ICAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gXAogICAgIFdlYlNXU2VydmVyQ29ubmVj
dGlvbiBcCisgICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIFwKICAgICBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyIFwKICAgICBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkgXAogICAg
IFdlYlByb2Nlc3MgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAppbmRleCA5OGQ5N2FkZmM4NC4uZTk5Y2I2ZGQ4MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZp
Y2VXb3JrZXJVcGRhdGVWaWFDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlclR5cGUuaD4KIAogbmFtZXNw
YWNlIFdURiB7CiBjbGFzcyBNb25vdG9uaWNUaW1lOwpAQCAtNzk3LDYgKzc5OCwxNCBAQCB0ZW1w
bGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eT4gewogICAgID47CiB9OwogCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3Jl
OjpXb3JrZXJUeXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAg
V2ViQ29yZTo6V29ya2VyVHlwZSwKKyAgICAgICAgV2ViQ29yZTo6V29ya2VyVHlwZTo6Q2xhc3Np
YywKKyAgICAgICAgV2ViQ29yZTo6V29ya2VyVHlwZTo6TW9kdWxlCisgICAgPjsKK307CisKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGU+IHsKICAgICB1c2luZyB2YWx1ZXMg
PSBFbnVtVmFsdWVzPApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRl
eCA2YmM1ODlhOTU3Mi4uNmZhZmY0ODE0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3Rv
cmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNv
bm5lY3Rpb24uY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXT3JpZ2luU3RvcmUuaCIK
ICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYlRvU3RvcmFnZVBy
b2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25EYXRhLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpAQCAtMTExLDI0ICsxMTIsNiBAQCB2
b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6dXBkYXRlV29ya2VyU3RhdGVJbkNsaWVudChTZXJ2
aWNlV29ya2VySWRlbnRpZmllciB3bwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29u
bmVjdGlvbjo6VXBkYXRlV29ya2VyU3RhdGUod29ya2VyLCBzdGF0ZSkpOwogfQogCi12b2lkIFdl
YlNXU2VydmVyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKLXsKLSAgICBpZiAoc2VuZFRvQ29udGV4dFBy
b2Nlc3MoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpJbnN0YWxsU2Vy
dmljZVdvcmtlcihpZGVudGlmaWVyKCksIGRhdGEpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
bV9wZW5kaW5nQ29udGV4dERhdGFzLmFwcGVuZChkYXRhKTsKLX0KLQotdm9pZCBXZWJTV1NlcnZl
ckNvbm5lY3Rpb246OmZpcmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIpCi17Ci0gICAgc2VuZFRvQ29udGV4dFByb2Nlc3MoTWVzc2Fn
ZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpGaXJlSW5zdGFsbEV2ZW50KGlkZW50
aWZpZXIoKSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIpKTsKLX0KLQotdm9pZCBXZWJTV1NlcnZl
ckNvbm5lY3Rpb246OmZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKQotewotICAgIHNlbmRUb0NvbnRleHRQcm9jZXNzKE1lc3Nh
Z2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6RmlyZUFjdGl2YXRlRXZlbnQoaWRl
bnRpZmllcigpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpOwotfQotCiB2b2lkIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaCh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHN0ZDo6
b3B0aW9uYWw8U2VydmljZVdvcmtlcklkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0
aW9ucykKIHsKICAgICBzZW5kVG9Db250ZXh0UHJvY2VzcyhNZXNzYWdlczo6V2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OlN0YXJ0RmV0Y2goaWRlbnRpZmllcigpLCBmZXRjaElkZW50aWZp
ZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRpb25zKSk7CkBAIC0xNzks
MjUgKzE2MiwxMiBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6bWF0Y2hSZWdpc3RyYXRp
b24odWludDY0X3QgcmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SQogICAgIHNlbmQoTWVzc2FnZXM6
OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6RGlkTWF0Y2hSZWdpc3RyYXRpb24geyByZWdpc3RyYXRp
b25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om51bGxvcHQgfSk7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFU+IGJvb2wgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzZW5kVG9Db250ZXh0UHJv
Y2VzcyhVJiYgbWVzc2FnZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpzZW5kVG9Db250ZXh0UHJvY2VzcyhVJiYgbWVzc2FnZSkKIHsKLSAgICBpZiAo
IW1fY29udGV4dENvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVy
biBtX2NvbnRleHRDb25uZWN0aW9uLT5zZW5kPFU+KFdURk1vdmUobWVzc2FnZSksIDApOworICAg
IGlmIChhdXRvKiBjb25uZWN0aW9uID0gU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLmdsb2Jh
bFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKSkKKyAgICAgICAgY29ubmVjdGlvbi0+c2VuZChX
VEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnNldENv
bnRleHRDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbikKLXsKLSAgICBtX2Nv
bnRleHRDb25uZWN0aW9uID0gY29ubmVjdGlvbjsKLQotICAgIC8vIFdlIGNhbiBub3cgc3RhcnQg
YW55IHBlbmRpbmcgc2VydmljZSB3b3JrZXIgdXBkYXRlcy4KLSAgICBmb3IgKGF1dG8mIHBlbmRp
bmdDb250ZXh0RGF0YSA6IG1fcGVuZGluZ0NvbnRleHREYXRhcykKLSAgICAgICAgaW5zdGFsbFNl
cnZpY2VXb3JrZXJDb250ZXh0KHBlbmRpbmdDb250ZXh0RGF0YSk7Ci0gICAgCi0gICAgbV9wZW5k
aW5nQ29udGV4dERhdGFzLmNsZWFyKCk7Ci19Ci0gICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
aCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24uaAppbmRleCA3ZjFjZDUxZWNmMS4uYjgwYjNiZmQ0N2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTQ2LDcgKzQ2LDYgQEAgcHVibGljOgogICAg
IH5XZWJTV1NlcnZlckNvbm5lY3Rpb24oKSBmaW5hbDsKIAogICAgIHZvaWQgZGlzY29ubmVjdGVk
RnJvbVdlYlByb2Nlc3MoKTsKLSAgICB2b2lkIHNldENvbnRleHRDb25uZWN0aW9uKElQQzo6Q29u
bmVjdGlvbiopOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJikgZmluYWw7CiAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBj
b25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQpAQCAtNzUsMjIgKzc0LDE1IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIG1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNo
UmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgY2xpZW50VVJMKTsKIAotICAgIC8vIE1lc3NhZ2VzIHRvIHRoZSBT
VyBjb250ZXh0IFdlYlByb2Nlc3MKLSAgICB2b2lkIGluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4
dChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmKSBmaW5hbDsKLSAgICB2
b2lkIGZpcmVJbnN0YWxsRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZp
bmFsOwotICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIpIGZpbmFsOwotCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29u
bmVjdGlvbigpIGZpbmFsIHsgcmV0dXJuIG1fY29udGVudENvbm5lY3Rpb24ucHRyKCk7IH0KICAg
ICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGZpbmFsIHsgcmV0dXJuIGlk
ZW50aWZpZXIoKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBzZW5kVG9Db250
ZXh0UHJvY2VzcyhVJiYgbWVzc2FnZSk7CiAgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4g
dm9pZCBzZW5kVG9Db250ZXh0UHJvY2VzcyhVJiYgbWVzc2FnZSk7CisKICAgICBQQUw6OlNlc3Np
b25JRCBtX3Nlc3Npb25JRDsKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29udGVudENv
bm5lY3Rpb247CiAgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9jb250ZXh0Q29ubmVjdGlv
bjsKLSAgICAKLSAgICBEZXF1ZTxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IG1f
cGVuZGluZ0NvbnRleHREYXRhczsKIH07IC8vIGNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbgog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLmE4YzU5ZWU5OTkyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
cHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKKworI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5o
PgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKKyAgICA6IG1faXBjQ29ubmVj
dGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQoreworfQorCitJUEM6OkNvbm5lY3Rpb24qIFdlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKQorewor
ICAgIHJldHVybiBtX2lwY0Nvbm5lY3Rpb24ucHRyKCk7Cit9CisKK3VpbnQ2NF90IFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKQorewor
ICAgIHJldHVybiAwOworfQorCit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
Y29ubmVjdGlvbkNsb3NlZCgpCit7CisgICAgLy8gRklYTUU6IERvIHdoYXQgaGVyZS4uLj8KK30K
Kwordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29y
a2VyQ29udGV4dChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEpCit7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Okluc3RhbGxTZXJ2
aWNlV29ya2VyKGRhdGEpKTsKK30KKwordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OmZpcmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtl
cklkZW50aWZpZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OkZpcmVJbnN0YWxsRXZlbnQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKTsKK30K
Kwordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZpcmVBY3RpdmF0ZUV2ZW50
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpGaXJlQWN0aXZh
dGVFdmVudChzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uMzBiZDgzODRiMmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2Vp
dmVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gOiBwdWJsaWMgV2ViQ29yZTo6U1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4u
LiBBcmdzPiBzdGF0aWMgUmVmPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4gY3JlYXRl
KEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikp
OworICAgIH0KKworICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZCgpOworCisgICAgSVBDOjpDb25u
ZWN0aW9uKiBpcGNDb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pcGNDb25uZWN0aW9uLnB0
cigpOyB9CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKK3ByaXZh
dGU6CisgICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rp
b24+JiYpOworCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCisgICAgSVBDOjpDb25uZWN0aW9u
KiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEKCkgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcyB0byB0aGUgU1cg
aG9zdCBXZWJQcm9jZXNzCisgICAgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoY29u
c3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJikgZmluYWw7CisgICAgdm9pZCBm
aXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsK
KyAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKSBmaW5hbDsKKyAgICAKKyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2lwY0Nvbm5lY3Rp
b247CisgICAgCit9OyAvLyBjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li41OTQ4ZTM3M2U2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KQEAgLTAsMCArMSwzNCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMg
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgor
IyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCittZXNzYWdlcyAtPiBXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24geworICAgICMgV2hlbiBwb3NzaWJsZSwgdGhlc2UgbWVz
c2FnZXMgY2FuIGJlIGltcGxlbWVudGVkIGRpcmVjdGx5IGJ5IFdlYkNvcmU6OlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbgorCisgICAgU2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU3RyaW5nIG1lc3NhZ2UpOwor
ICAgIFNjcmlwdENvbnRleHRTdGFydGVkKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIpOworICAgIERpZEZpbmlzaEluc3RhbGwoV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKTsKKyAgICBEaWRGaW5p
c2hBY3RpdmF0aW9uKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIp
OworfQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAppbmRleCAxMThkZGQ3ZmQ2NS4u
MWU0YTFhZWIwZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3Rv
cmFnZVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFn
ZVByb2Nlc3MuY3BwCkBAIC0zMywxMCArMzMsMTMgQEAKICNpbmNsdWRlICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJTV09yaWdpblN0b3JlLmgiCiAjaW5jbHVkZSAiV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSURCS2V5RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NXU2VydmVyV29ya2VyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRF
bmNvZGluZy5oPgpAQCAtNzksOCArODIsOSBAQCBib29sIFN0b3JhZ2VQcm9jZXNzOjpzaG91bGRU
ZXJtaW5hdGUoKQogdm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uKQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAobV93
b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPT0gJmNvbm5lY3Rpb24pIHsKLSAgICAgICAg
bV93b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPSBudWxscHRyOworICAgIGlmIChtX3Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24gJiYgbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5p
cGNDb25uZWN0aW9uKCkgPT0gJmNvbm5lY3Rpb24pIHsKKyAgICAgICAgbV9zZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2VkKCk7CisgICAgICAgIG1fc2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZWxzZQpA
QCAtOTgsNiArMTAyLDE0IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyCiAgICAgICAgIGRpZFJl
Y2VpdmVTdG9yYWdlUHJvY2Vzc01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkg
PT0gTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpKSB7CisgICAgICAgIGlmIChhdXRvKiBzd0Nvbm5lY3Rpb24gPSBTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKSkgewor
ICAgICAgICAgICAgYXV0byogd2ViU1dDb25uZWN0aW9uID0gc3RhdGljX2Nhc3Q8V2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4oc3dDb25uZWN0aW9uKTsKKyAgICAgICAgICAgIHdlYlNX
Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAg
ICAgICAgICByZXR1cm47ICAgICAgICAKKyAgICAgICAgfQorICAgIH0KIH0KIAogI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQpAQCAtMzUxLDE3ICszNjMsMTcgQEAgU1dTZXJ2ZXImIFN0b3Jh
Z2VQcm9jZXNzOjpzd1NlcnZlckZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQog
ICAgIHJldHVybiAqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIAotSVBDOjpDb25uZWN0aW9u
KiBTdG9yYWdlUHJvY2Vzczo6d29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKCkKK1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogU3RvcmFnZVByb2Nlc3M6Omdsb2JhbFNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24oKQogewotICAgIHJldHVybiBtX3dvcmtlckNvbnRleHRQcm9jZXNz
Q29ubmVjdGlvbi5nZXQoKTsKKyAgICByZXR1cm4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmdldCgpOwogfQogCi12b2lkIFN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVXb3JrZXJDb250ZXh0UHJv
Y2Vzc0Nvbm5lY3Rpb24oKQordm9pZCBTdG9yYWdlUHJvY2Vzczo6Y3JlYXRlU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbigpCiB7Ci0gICAgaWYgKG1fd2FpdGluZ0ZvcldvcmtlckNvbnRleHRQcm9j
ZXNzQ29ubmVjdGlvbikKKyAgICBpZiAobV93YWl0aW5nRm9yU2VydmVyVG9Db250ZXh0UHJvY2Vz
c0Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX3dhaXRpbmdGb3JXb3Jr
ZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPSB0cnVlOworICAgIG1fd2FpdGluZ0ZvclNlcnZl
clRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uID0gdHJ1ZTsKICAgICBwYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpHZXRXb3JrZXJD
b250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oKSwgMCk7CiB9CiAKQEAgLTM4Miw4ICszOTQsOCBAQCBX
ZWJTV09yaWdpblN0b3JlKiBTdG9yYWdlUHJvY2Vzczo6c3dPcmlnaW5TdG9yZUZvclNlc3Npb24o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbgogCiB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaWRHZXRXb3Jr
ZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50JiYgZW5jb2RlZENvbm5l
Y3Rpb25JZGVudGlmaWVyKQogewotICAgIEFTU0VSVChtX3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0
UHJvY2Vzc0Nvbm5lY3Rpb24pOwotICAgIG1fd2FpdGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNz
Q29ubmVjdGlvbiA9IGZhbHNlOworICAgIEFTU0VSVChtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRl
eHRQcm9jZXNzQ29ubmVjdGlvbik7CisgICAgbV93YWl0aW5nRm9yU2VydmVyVG9Db250ZXh0UHJv
Y2Vzc0Nvbm5lY3Rpb24gPSBmYWxzZTsKIAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQog
ICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciA9IGVu
Y29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5yZWxlYXNlRmlsZURlc2NyaXB0b3IoKTsKQEAgLTM5
OCwyNSArNDEwLDE0IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZEdldFdvcmtlckNvbnRleHRQ
cm9jZXNzQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQmJiBlbmNvCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBtX3dvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9IElQQzo6Q29u
bmVjdGlvbjo6Y3JlYXRlQ2xpZW50Q29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwgKnRo
aXMpOwotICAgIG1fd29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uLT5vcGVuKCk7CisgICAg
YXV0byBpcGNDb25uZWN0aW9uID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVDbGllbnRDb25uZWN0
aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCAqdGhpcyk7CisgICAgaXBjQ29ubmVjdGlvbi0+b3Bl
bigpOworICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiA9IFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6Y3JlYXRlKFdURk1vdmUoaXBjQ29ubmVjdGlvbikpOwogICAgIAogICAg
IGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fc3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25z
KQogICAgICAgICBjb25uZWN0aW9uLT53b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb25DcmVh
dGVkKCk7CiB9CiAKLXZvaWQgU3RvcmFnZVByb2Nlc3M6OnNlcnZpY2VXb3JrZXJDb250ZXh0RmFp
bGVkVG9TdGFydCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQotewotICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbV9zd1NlcnZlckNvbm5lY3Rpb25zLmdl
dChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpCi0gICAgICAgIGNvbm5lY3Rpb24tPnNjcmlw
dENvbnRleHRGYWlsZWRUb1N0YXJ0KHJlZ2lzdHJhdGlvbktleSwgc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIG1lc3NhZ2UpOwotfQotCi12b2lkIFN0b3JhZ2VQcm9jZXNzOjpzZXJ2aWNlV29ya2Vy
Q29udGV4dFN0YXJ0ZWQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgU2VydmljZVdv
cmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCi17Ci0gICAgaWYgKGF1dG8q
IGNvbm5lY3Rpb24gPSBtX3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0KHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyKSkKLSAgICAgICAgY29ubmVjdGlvbi0+c2NyaXB0Q29udGV4dFN0YXJ0ZWQocmVn
aXN0cmF0aW9uS2V5LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci19Ci0KIHZvaWQgU3RvcmFn
ZVByb2Nlc3M6OmRpZEZhaWxGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKQogewogICAgIGlmIChhdXRvKiBjb25uZWN0aW9u
ID0gbV9zd1NlcnZlckNvbm5lY3Rpb25zLmdldChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikp
CkBAIC00NTMsMTggKzQ1NCw2IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OnBvc3RNZXNzYWdlVG9T
ZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJCiAgICAgICAgIGNv
bm5lY3Rpb24tPnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGRlc3RpbmF0aW9uSWRl
bnRpZmllci5zY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgbWVzc2FnZSwgc291cmNl
SWRlbnRpZmllciwgc291cmNlT3JpZ2luKTsKIH0KIAotdm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlk
RmluaXNoU2VydmljZVdvcmtlckluc3RhbGwodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktl
eSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wg
d2FzU3VjY2Vzc2Z1bCkKLXsKLSAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1fc3dTZXJ2ZXJD
b25uZWN0aW9ucy5nZXQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKQotICAgICAgICBjb25u
ZWN0aW9uLT5kaWRGaW5pc2hJbnN0YWxsKHJlZ2lzdHJhdGlvbktleSwgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIHdhc1N1Y2Nlc3NmdWwpOwotfQotCi12b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaWRG
aW5pc2hTZXJ2aWNlV29ya2VyQWN0aXZhdGlvbih1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9u
S2V5LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKLXsK
LSAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5nZXQoc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKQotICAgICAgICBjb25uZWN0aW9uLT5kaWRGaW5pc2hB
Y3RpdmF0aW9uKHJlZ2lzdHJhdGlvbktleSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotfQot
CiB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpyZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1Nl
cnZlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAgICAgQVNTRVJUKCFtX3N3U2VydmVyQ29u
bmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaAppbmRleCA0ODI4ZWRkNDliMC4u
OTg5ZjExMDA1YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3Rv
cmFnZVByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQ
cm9jZXNzLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFN0
b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
OworY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOwogZW51bSBjbGFzcyBXZWJz
aXRlRGF0YVR5cGU7CiBzdHJ1Y3QgU3RvcmFnZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiAK
QEAgLTgwLDggKzgxLDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQotICAgIElQQzo6Q29ubmVjdGlvbiogd29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0
aW9uKCk7Ci0gICAgdm9pZCBjcmVhdGVXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oKTsK
KyAgICAvLyBGb3Igbm93IHdlIGp1c3QgaGF2ZSBvbmUgZ2xvYmFsIGNvbm5lY3Rpb24gdG8gc2Vy
dmljZSB3b3JrZXIgY29udGV4dCBwcm9jZXNzZXMuCisgICAgLy8gVGhpcyB3aWxsIGNoYW5nZSBp
biB0aGUgZnV0dXJlLgorICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogZ2xvYmFs
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOworICAgIHZvaWQgY3JlYXRlU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbigpOwogCiAgICAgV2ViU1dPcmlnaW5TdG9yZSYgZW5zdXJlU1dPcmlnaW5T
dG9yZUZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwogICAgIFdlYlNXT3JpZ2luU3RvcmUqIHN3
T3JpZ2luU3RvcmVGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKSBjb25zdDsKQEAgLTExOSw4ICsx
MjIsNiBAQCBwcml2YXRlOgogI2VuZGlmCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IHZvaWQgZGlkR2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKElQQzo6QXR0YWNobWVu
dCYmIGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllcik7Ci0gICAgdm9pZCBzZXJ2aWNlV29ya2Vy
Q29udGV4dEZhaWxlZFRvU3RhcnQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICB2b2lk
IHNlcnZpY2VXb3JrZXJDb250ZXh0U3RhcnRlZCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZUZl
dGNoUmVzcG9uc2UodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90
IGZldGNoSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogICAg
IHZvaWQgZGlkUmVjZWl2ZUZldGNoRGF0YSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
LCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKQEAgLTEyOCw4ICsxMjksNiBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkRmFpbEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkTm90SGFuZGxlRmV0
Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRl
bnRpZmllcik7CiAKLSAgICB2b2lkIGRpZEZpbmlzaFNlcnZpY2VXb3JrZXJJbnN0YWxsKHVpbnQ2
NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJv
b2wgd2FzU3VjY2Vzc2Z1bCk7Ci0gICAgdm9pZCBkaWRGaW5pc2hTZXJ2aWNlV29ya2VyQWN0aXZh
dGlvbih1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKTsKICAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50
aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VP
cmlnaW4pOwogI2VuZGlmCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCkBAIC0xNTcsOCAr
MTU2LDggQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBk
aWRDcmVhdGVXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpBdHRhY2ht
ZW50Jik7CiAKLSAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX3dvcmtlckNvbnRleHRQcm9j
ZXNzQ29ubmVjdGlvbjsKLSAgICBib29sIG1fd2FpdGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNz
Q29ubmVjdGlvbiB7IGZhbHNlIH07CisgICAgUmVmUHRyPFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbj4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOworICAgIGJvb2wgbV93YWl0aW5n
Rm9yU2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24geyBmYWxzZSB9OwogICAgIEhhc2hN
YXA8UEFMOjpTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTV1NlcnZlcj4+IG1f
c3dTZXJ2ZXJzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFdlYlNXU2VydmVyQ29ubmVjdGlvbio+
IG1fc3dTZXJ2ZXJDb25uZWN0aW9uczsKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBzdGQ6
OnVuaXF1ZV9wdHI8V2ViU1dPcmlnaW5TdG9yZT4+IG1fc3dPcmlnaW5TdG9yZXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdl
cy5pbgppbmRleCBlOGYxOTg0MzViOS4uMDU3NDkwMjMzZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
MzgsMTEgKzM4LDYgQEAgbWVzc2FnZXMgLT4gU3RvcmFnZVByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIg
ewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBEaWRHZXRXb3JrZXJDb250ZXh0UHJv
Y2Vzc0Nvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25IYW5kbGUpCiAKLSAgICBT
ZXJ2aWNlV29ya2VyQ29udGV4dEZhaWxlZFRvU3RhcnQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgcmVnaXN0
cmF0aW9uS2V5LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgU3RyaW5nIG1lc3NhZ2UpCi0gICAgU2VydmljZVdvcmtlckNvbnRleHRTdGFy
dGVkKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlvbktleSwgV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCi0gICAgRGlkRmluaXNoU2Vy
dmljZVdvcmtlckluc3RhbGwodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgcmVnaXN0cmF0aW9uS2V5LCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9v
bCB3YXNTdWNjZXNzZnVsKTsKLSAgICBEaWRGaW5pc2hTZXJ2aWNlV29ya2VyQWN0aXZhdGlvbih1
aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleSByZWdpc3RyYXRpb25LZXksIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLQogICAgIERpZE5vdEhhbmRsZUZl
dGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElk
ZW50aWZpZXIpCiAgICAgRGlkRmFpbEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpCiAgICAgRGlkUmVjZWl2ZUZldGNoUmVz
cG9uc2UodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNo
SWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlVG9XZWJQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggNDU0NWJjNGEyNTIuLmZlNDNmMTc0NjhhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VUb1dl
YlByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgIldlYklE
QkNvbm5lY3Rpb25Ub0NsaWVudE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgPHd0Zi9SdW5M
b29wLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBQQUw7CkBAIC04NSw2ICs4NywxMSBAQCB2b2lkIFN0
b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3RpbwogICAgICAgICAgICAgaXRlcmF0b3ItPnZhbHVlLT5kaWRSZWNlaXZl
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKwor
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAg
ICAgU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLmdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24oKS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CiAjZW5kaWYKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
MTQ4LDEwICsxNTUsOCBAQCB2b2lkIFN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjplc3Rh
Ymxpc2hTV1NlcnZlckNvbm5lY3Rpb24oU2Vzc2lvbklEIHNlc3NpbwogCiAgICAgU3RvcmFnZVBy
b2Nlc3M6OnNpbmdsZXRvbigpLnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKCooY29ubmVjdGlv
blJlc3VsdC5pdGVyYXRvci0+dmFsdWUpKTsKIAotICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0g
U3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLndvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlv
bigpKQotICAgICAgICBjb25uZWN0aW9uUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+c2V0Q29udGV4
dENvbm5lY3Rpb24oY29ubmVjdGlvbik7Ci0gICAgZWxzZQotICAgICAgICBTdG9yYWdlUHJvY2Vz
czo6c2luZ2xldG9uKCkuY3JlYXRlV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKCk7Cisg
ICAgaWYgKCFTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkuZ2xvYmFsU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbigpKQorICAgICAgICBTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkuY3JlYXRl
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOwogfQogCiB2b2lkIFN0b3JhZ2VUb1dlYlByb2Nl
c3NDb25uZWN0aW9uOjpyZW1vdmVTV1NlcnZlckNvbm5lY3Rpb24odWludDY0X3Qgc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIpCkBAIC0xNjUsMTEgKzE3MCw4IEBAIHZvaWQgU3RvcmFnZVRvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb246OnJlbW92ZVNXU2VydmVyQ29ubmVjdGlvbih1aW50NjRfdCBzZXJ2
ZXJDb25uCiAKIHZvaWQgU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OndvcmtlckNvbnRl
eHRQcm9jZXNzQ29ubmVjdGlvbkNyZWF0ZWQoKQogewotICAgIGF1dG8qIGlwY0Nvbm5lY3Rpb24g
PSBTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkud29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0
aW9uKCk7Ci0gICAgQVNTRVJUKGlwY0Nvbm5lY3Rpb24pOwotCi0gICAgZm9yIChhdXRvJiBzd0Nv
bm5lY3Rpb24gOiBtX3N3Q29ubmVjdGlvbnMudmFsdWVzKCkpCi0gICAgICAgIHN3Q29ubmVjdGlv
bi0+c2V0Q29udGV4dENvbm5lY3Rpb24oaXBjQ29ubmVjdGlvbik7CisgICAgZm9yIChhdXRvKiBz
ZXJ2ZXIgOiBTV1NlcnZlcjo6YWxsU2VydmVycygpKQorICAgICAgICBzZXJ2ZXItPnNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25DcmVhdGVkKCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTNjZmI3ZmEzZmEuLjBl
Nzc4YTBhMGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTEwMTksNiArMTAxOSw4IEBACiAJCTUxNEJERUQzMTZDOThFREQwMEU0RTI1
RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE0QkRFRDIxNkM5OEVERDAwRTRFMjVFIC8qIFN0YXRpc3RpY3NSZXF1
ZXN0LmggKi87IH07CiAJCTUxNEQ5RjU3MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
NEQ5RjU1MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIuaCAqLzsgfTsKIAkJ
NTE0RDlGNTgxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEQ5RjU2MTkxMTlEMzUw
MDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIubW0gKi87IH07CisJCTUxNTI2MkJDMUZCOTUx
NUQwMDcwRTU3OSAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1MjYyQkIxRkI5
NTEzMTAwNzBFNTc5IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgg
Ki87IH07CisJCTUxNTI2MkJEMUZCOTUxNjEwMDcwRTU3OSAvKiBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1MjYyQkExRkI5NTEzMTAwNzBFNTc5IC8qIFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUxNTc4
QjgzMTIwOUVDRUYwMEEzN0M0QSAvKiBBUElEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTU3OEI4MjEyMDlFQ0VGMDBBMzdDNEEgLyogQVBJRGF0
YS5oICovOyB9OwogCQk1MTVCRTE3NzFENTNGRTg3MDBERDdDNjggLyogV2ViR2FtZXBhZFByb3Zp
ZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
NUJFMTczMUQ1M0ZEREMwMEREN0M2OCAvKiBXZWJHYW1lcGFkUHJvdmlkZXIuY3BwICovOyB9Owog
CQk1MTVCRTE3OTFENTNGRThGMDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVCRTE3NDFENTNGRERD
MDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmggKi87IH07CkBAIC0xMDU4LDYgKzEwNjAs
NyBAQAogCQk1MTdERDVCRTE4MERBN0QzMDA4MTY2MEIgLyogU3RvcmFnZVByb2Nlc3NQcm94eS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdERDVC
QzE4MERBN0QzMDA4MTY2MEIgLyogU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAgKi87IH07CiAJCTUx
N0RENUJGMTgwREE3RDMwMDgxNjYwQiAvKiBTdG9yYWdlUHJvY2Vzc1Byb3h5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdERDVCRDE4MERBN0QzMDA4
MTY2MEIgLyogU3RvcmFnZVByb2Nlc3NQcm94eS5oICovOyB9OwogCQk1MTgzRERFQzE2MzBCREZD
MDA4QkU1QzcgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDVCMEQ0MTYyRjdBN0EwMEUyNzcwOSAv
KiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwICovOyB9OworCQk1MTg1NDMwRTFGQjY4MTYx
MDA0NzhGOTUgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODU0MzBEMUZCNjgwRkEwMDQ3
OEY5NSAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwICovOyB9OwogCQk1MTg3
MUI1QjEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4NzFCNTkxMjdDQjg5RDAwRjc2MjMy
IC8qIFdlYkNvbnRleHRNZW51LmNwcCAqLzsgfTsKIAkJNTE4NzFCNUMxMjdDQjg5RDAwRjc2MjMy
IC8qIFdlYkNvbnRleHRNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTg3MUI1QTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuaCAq
LzsgfTsKIAkJNTE4QUNBRUExMkFFRTZCQjAwQjA0QjgzIC8qIFdLUHJvdGVjdGlvblNwYWNlVHlw
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxOEFD
QUU5MTJBRUU2QkIwMEIwNEI4MyAvKiBXS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMzNTksNiArMzM2Miw5
IEBACiAJCTUxNEJERUQyMTZDOThFREQwMEU0RTI1RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGF0aXN0aWNzUmVxdWVzdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTREOUY1NTE5MTE5RDM1MDAwMDYzQTcgLyogU2Vy
dmljZXNDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZp
Y2VzQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTREOUY1NjE5
MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2VydmljZXNDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MTUyNjJCOTFGQjk1MDM1MDA3MEU1NzkgLyogV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTE1MjYyQkExRkI5NTEzMTAwNzBFNTc5IC8qIFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdl
UmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTUyNjJCQjFGQjk1
MTMxMDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1NzhCODIx
MjA5RUNFRjAwQTM3QzRBIC8qIEFQSURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQVBJRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVCRTE3MzFE
NTNGRERDMDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdhbWVwYWRQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxNUJFMTc0MUQ1M0ZEREMwMEREN0M2OCAvKiBXZWJHYW1lcGFk
UHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR2FtZXBhZFBy
b3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMzk2LDYgKzM0MDIsOCBA
QAogCQk1MTdERDVCQzE4MERBN0QzMDA4MTY2MEIgLyogU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlUHJvY2Vzc1Byb3h5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3REQ1QkQxODBEQTdEMzAwODE2
NjBCIC8qIFN0b3JhZ2VQcm9jZXNzUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3RvcmFnZVByb2Nlc3NQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MTgzQjM5MzEzNzlGODVDMDBFODc1NEUgLyogU2hpbS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQueGNjb25maWc7IHBhdGggPSBTaGltLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MTg1NDMwQzFGQjY4MEY5MDA0NzhGOTUgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTg1
NDMwRDFGQjY4MEZBMDA0NzhGOTUgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODcxQjU5
MTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb250ZXh0TWVudS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxODcxQjVBMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0TWVudS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MThBQ0FFOTEyQUVFNkJCMDBCMDRCODMgLyogV0tQ
cm90ZWN0aW9uU3BhY2VUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
S1Byb3RlY3Rpb25TcGFjZVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02
MzgxLDYgKzYzODksOSBAQAogCQkJCTUxN0E1MzA5MUY0NzlFMzEwMERDREMwQSAvKiBXZWJTV1Nl
cnZlckNvbm5lY3Rpb24uY3BwICovLAogCQkJCTUxN0E1MzA3MUY0NzlFMzEwMERDREMwQSAvKiBX
ZWJTV1NlcnZlckNvbm5lY3Rpb24uaCAqLywKIAkJCQk1MTdBNTMwODFGNDc5RTMxMDBEQ0RDMEEg
LyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovLAorCQkJCTUxODU0MzBEMUZC
NjgwRkEwMDQ3OEY5NSAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwICovLAor
CQkJCTUxODU0MzBDMUZCNjgwRjkwMDQ3OEY5NSAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaCAqLywKKwkJCQk1MTUyNjJCOTFGQjk1MDM1MDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovLAogCQkJKTsKIAkJCXBhdGggPSBTZXJ2
aWNlV29ya2VyOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTgyMDAsNiArODIxMSw4
IEBACiAJCQkJNDYwRjQ4OEUxRjk5NkY2QzAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uTWVzc2FnZXMuaCAqLywKIAkJCQk1MTdBNTJENzFGNDNBOUI2MDBEQ0RDMEEgLyog
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQk1MTdBNTJE
NjFGNDNBOUI2MDBEQ0RDMEEgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCAqLywK
KwkJCQk1MTUyNjJCQTFGQjk1MTMxMDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQk1MTUyNjJCQjFGQjk1MTMxMDA3MEU1
NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCAqLywKIAkJCQkx
QUFGMDhCNTE5MjY5RTZEMDBCNjM5MEMgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQUFGMDhCNjE5MjY5RTZEMDBCNjM5MEMgLyogV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyTWVzc2FnZXMuaCAqLywKIAkJCQk3QzM2MUQ3NjE5MjgwM0JEMDAz
NkE1OUQgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovLApAQCAtOTA1OSw2ICs5MDcyLDcgQEAKIAkJCQlCQzdCNjI1MjEyQTQzQzk2MDBEMTc0QTQg
LyogV2ViUGFnZUdyb3VwRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3QjYyMTUxMkE0MjE5
QTAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cFByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDlF
QTMwRjFBOTZDQkZGMDAyRDI4MDcgLyogV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKKwkJCQk1MTUyNjJCQzFGQjk1MTVEMDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMwQ0U3MkEx
MTI0N0U3MUQwMEJDMEVDNCAvKiBXZWJQYWdlTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJENUM5RDA2MTlDODFEOEYwMEIzQzVDMSAvKiBXZWJQYWdlT3ZlcmxheS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMwMzJERDExMEY0Mzg5RjAwNThDMTVBIC8qIFdlYlBhZ2VQcm94eS5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xMDg1OCw2ICsxMDg3Miw3IEBACiAJCQkJOUZCNUYzOTQxNjlFNkE4MDAw
MkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMzA5
MzQ1QTEzMTVCOTk4MDA5N0E3QkMgLyogV0tDb29raWVNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUExRkI2ODI1MUY2RTUxODIwMEM0M0Y5RiAvKiBXS0NyYXNoUmVwb3J0ZXIubW0gaW4g
U291cmNlcyAqLywKKwkJCQk1MTUyNjJCRDFGQjk1MTYxMDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxMkY1OEY5MTJBODhBNTQwMDYyOTUzMCAvKiBXS0NyZWRlbnRpYWwuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkM0MDc1RjcxMjRGRjAyNzAwNjhGMjBBIC8qIFdLRGF0YS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQUZGNDkwMDE4MzNERTc4MDA5QUIxNUEgLyogV0tEZXByZWNhdGVkRnVuY3Rp
b25zLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTA5MjYsNiArMTA5NDEsNyBAQAogCQkJCTM3QzRD
MDkzMTgxNEIzQUYwMDM2ODhCOSAvKiBXS05TQXJyYXkubW0gaW4gU291cmNlcyAqLywKIAkJCQkz
NzNDRUFENTE4NTQxN0FFMDA4QzM2M0QgLyogV0tOU0RhdGEubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkzNzFBMTk0MTE4MjREMjkzMDBGMzJBNUUgLyogV0tOU0RpY3Rpb25hcnkubW0gaW4gU291cmNl
cyAqLywKKwkJCQk1MTg1NDMwRTFGQjY4MTYxMDA0NzhGOTUgLyogV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3MkNBRjBDMTgzM0ZEOTEwMDQw
QUMyNyAvKiBXS05TRXJyb3IubW0gaW4gU291cmNlcyAqLywKIAkJCQkzNzVFMEUxMzFENjY0MzI3
MDBFRkVDMkMgLyogV0tOU051bWJlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3OEUxQTQ5MTgy
MDhDRDYwMDMxMDA3QSAvKiBXS05TU3RyaW5nLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggYmFhMGE0YzNhNjEuLjViMWQ4MmViMDVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0zNyw2ICszNyw3IEBACiAj
aW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNLZXlzLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNT
dG9yZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRQcm92aWRlci5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvRWRpdG9yQ2xpZW50Lmg+CkBAIC05NSw4ICs5NiwxMCBAQCB2b2lkIFdlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVm
ZXJlbmNlc1N0b3JlJgogICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkuc2V0RmV0Y2hBUElFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJl
bmNlc0tleTo6ZmV0Y2hBUElFbmFibGVkS2V5KCkpKTsKIH0KIAotdm9pZCBXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIodWludDY0X3Qgc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkK
K3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29ya2Vy
KGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKIHsKKyAgICBMT0coU2Vydmlj
ZVdvcmtlciwgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdv
cmtlciBmb3Igd29ya2VyICVzIiwgZGF0YS5zZXJ2aWNlV29ya2VySWRlbnRpZmllci5sb2dnaW5n
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKICAgICAvLyBGSVhNRTogUHJvdmlkZSBhIHNlbnNp
Y2FsIHNlc3Npb24gSUQuCiAgICAgYXV0byBzZXNzaW9uSUQgPSBQQUw6OlNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpOwogCkBAIC0xMTMsNyArMTE2LDcgQEAgdm9pZCBXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIodWludDY0X3Qgc2VydmVyQ29u
bmVjdGkKICAgICBhdXRvIGZyYW1lTG9hZGVyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTZXJ2
aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ+KHNlc3Npb25JRCwgbV9wYWdlSUQsICsrbV9wcmV2
aW91c1NlcnZpY2VXb3JrZXJJRCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50
Rm9yTWFpbkZyYW1lID0gZnJhbWVMb2FkZXJDbGllbnQucmVsZWFzZSgpOwogCi0gICAgYXV0byBz
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgPSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0
ZShXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSwgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IGRhdGEsIHNlc3Npb25JRCwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FjaGVTdG9yYWdlUHJv
dmlkZXIoKSk7CisgICAgYXV0byBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgPSBTZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHk6OmNyZWF0ZShXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSwgZGF0YSwg
c2Vzc2lvbklELCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZVN0b3JhZ2VQcm92aWRlcigp
KTsKICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5yZWdpc3RlclNlcnZpY2VXb3Jr
ZXJUaHJlYWRGb3JJbnN0YWxsKFdURk1vdmUoc2VydmljZVdvcmtlclRocmVhZFByb3h5KSk7CiAK
ICAgICBMT0coU2VydmljZVdvcmtlciwgIkNvbnRleHQgcHJvY2VzcyBQSUQ6ICVpIGNyZWF0ZWQg
d29ya2VyIHRocmVhZFxuIiwgZ2V0cGlkKCkpOwpAQCAtMTIxLDE1ICsxMjQsMTAgQEAgdm9pZCBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIodWludDY0
X3Qgc2VydmVyQ29ubmVjdGkKIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
c2VydmljZVdvcmtlclN0YXJ0ZWRXaXRoTWVzc2FnZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBleGNlcHRpb25NZXNzYWdlKQog
ewotICAgIGF1dG8qIHRocmVhZFByb3h5ID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCku
c2VydmljZVdvcmtlclRocmVhZFByb3h5KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICBB
U1NFUlQodGhyZWFkUHJveHkpOwotICAgIAotICAgIGF1dG8mIGRhdGEgPSB0aHJlYWRQcm94eS0+
dGhyZWFkKCkuY29udGV4dERhdGEoKTsKLSAgICAKICAgICBpZiAoZXhjZXB0aW9uTWVzc2FnZS5p
c0VtcHR5KCkpCi0gICAgICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpTZXJ2aWNlV29ya2VyQ29udGV4dFN0YXJ0ZWQodGhyZWFk
UHJveHktPnRocmVhZCgpLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCksIGRhdGEucmVnaXN0
cmF0aW9uS2V5LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciksIDApOworICAgICAgICBtX2Nvbm5l
Y3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OlNjcmlwdENvbnRleHRTdGFydGVkKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KSwgMCk7CiAgICAgZWxzZQotICAgICAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6U2VydmljZVdvcmtlckNvbnRleHRGYWlsZWRU
b1N0YXJ0KHRocmVhZFByb3h5LT50aHJlYWQoKS5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigp
LCBkYXRhLnJlZ2lzdHJhdGlvbktleSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGV4Y2VwdGlv
bk1lc3NhZ2UpLCAwKTsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTY3JpcHRDb250ZXh0
RmFpbGVkVG9TdGFydChzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZXhjZXB0aW9uTWVzc2FnZSks
IDApOwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzdGFydEZldGNo
KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50
aWZpZXIsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlcklkZW50aWZpZXI+IHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGZXRjaE9wdGlvbnMmJiBv
cHRpb25zKQpAQCAtMTQ5LDE1ICsxNDcsMTMgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShTZXJ2aWMKICAg
ICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlKGRlc3RpbmF0aW9uSWRlbnRpZmllciwgU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjphZG9wdChtZXNzYWdlLnZlY3RvcigpKSwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2lu
KTsKIH0KIAotdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZmlyZUluc3RhbGxF
dmVudCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OmZpcmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsK
LSAgICBVTlVTRURfUEFSQU0oc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpOwogICAgIFNXQ29u
dGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZpcmVJbnN0YWxsRXZlbnQoaWRlbnRpZmllcik7CiB9
CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpcmVBY3RpdmF0ZUV2ZW50
KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBpZGVudGlmaWVyKQordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Zmly
ZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAg
ICBVTlVTRURfUEFSQU0oc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpOwogICAgIFNXQ29udGV4
dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZpcmVBY3RpdmF0ZUV2ZW50KGlkZW50aWZpZXIpOwogfQog
CkBAIC0xNjgsMjAgKzE2NCwxMiBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
Ojpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZXJ2aQogCiB2b2lkIFdl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpkaWRGaW5pc2hJbnN0YWxsKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwp
CiB7Ci0gICAgYXV0byogdGhyZWFkUHJveHkgPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24o
KS5zZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAg
IEFTU0VSVCh0aHJlYWRQcm94eSk7Ci0KLSAgICBhdXRvJiBkYXRhID0gdGhyZWFkUHJveHktPnRo
cmVhZCgpLmNvbnRleHREYXRhKCk7Ci0gICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkRpZEZpbmlzaFNlcnZpY2VXb3JrZXJJbnN0
YWxsKHRocmVhZFByb3h5LT50aHJlYWQoKS5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpLCBk
YXRhLnJlZ2lzdHJhdGlvbktleSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHdhc1N1Y2Nlc3Nm
dWwpLCAwKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OkRpZEZpbmlzaEluc3RhbGwoc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIHdhc1N1Y2Nlc3NmdWwpLCAwKTsKIH0KIAogdm9pZCBXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlkRmluaXNoQWN0aXZhdGlvbihTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKIHsKLSAgICBhdXRvKiB0aHJlYWRQ
cm94eSA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eShzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgQVNTRVJUKHRocmVhZFByb3h5KTsK
LQotICAgIGF1dG8mIGRhdGEgPSB0aHJlYWRQcm94eS0+dGhyZWFkKCkuY29udGV4dERhdGEoKTsK
LSAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdl
UHJvY2Vzczo6RGlkRmluaXNoU2VydmljZVdvcmtlckFjdGl2YXRpb24odGhyZWFkUHJveHktPnRo
cmVhZCgpLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCksIGRhdGEucmVnaXN0cmF0aW9uS2V5
LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciksIDApOworICAgIG1fY29ubmVjdGlvblRvU3RvcmFn
ZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
RGlkRmluaXNoQWN0aXZhdGlvbihzZXJ2aWNlV29ya2VySWRlbnRpZmllciksIDApOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRl
eCA2MDdlMDBlZjhhNC4uNmYzMzBkYmM4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uaApAQCAtNTcsMTEgKzU3LDExIEBAIHByaXZhdGU6CiAKICAgICAvLyBJUEMgbWVzc2FnZXMu
CiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyU3RhcnRlZFdpdGhNZXNzYWdlKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UpIGZpbmFs
OwotICAgIHZvaWQgaW5zdGFsbFNlcnZpY2VXb3JrZXIodWludDY0X3Qgc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpOwor
ICAgIHZvaWQgaW5zdGFsbFNlcnZpY2VXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNvbnRleHREYXRhJik7CiAgICAgdm9pZCBzdGFydEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXI+LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYpOwogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBk
ZXN0aW5hdGlvbklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwg
Y29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIHNvdXJjZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKLSAgICB2b2lkIGZpcmVJbnN0YWxs
RXZlbnQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KHVpbnQ2NF90
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
Zmllcik7CisgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKTsKKyAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKTsKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlv
blRvU3RvcmFnZVByb2Nlc3M7CiAgICAgdWludDY0X3QgbV9wYWdlSUQgeyAwIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDVkMjU1NWFk
Y2M5Li4xNDk4ZDI3MjE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KQEAgLTIzLDExICsyMywxMSBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKIAogbWVzc2FnZXMgLT4gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gewotICAg
IEluc3RhbGxTZXJ2aWNlV29ya2VyKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhIGNvbnRleHREYXRhKQor
ICAgIEluc3RhbGxTZXJ2aWNlV29ya2VyKHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEgY29udGV4dERhdGEpCiAgICAgU3RhcnRGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpGZXRj
aE9wdGlvbnMgb3B0aW9ucykKICAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmll
ciwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBTdHJpbmcgc291cmNlT3JpZ2lu
KQotICAgIEZpcmVJbnN0YWxsRXZlbnQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCi0gICAgRmly
ZUFjdGl2YXRlRXZlbnQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgRmlyZUluc3RhbGxF
dmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIEZp
cmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCiB9CiAKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326797</attachid>
            <date>2017-11-13 14:09:52 -0800</date>
            <delta_ts>2017-11-13 14:23:31 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>104730</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaCBiL1NvdXJjZS9X
VEYvd3RmL09iamVjdElkZW50aWZpZXIuaAppbmRleCBlZjM3MTU0YTMxZS4uNjdkZWUwMjZiNWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgog
I2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gZnJpZW5kIE9iamVj
dElkZW50aWZpZXI8VT4gbWFrZU9iamVjdElkZW50aWZpZXIodWludDY0X3QpOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFU+IGZyaWVuZCBPYmplY3RJZGVudGlmaWVyPFU+IGdlbmVyYXRlT2JqZWN0
SWRlbnRpZmllcigpOwogICAgIGZyaWVuZCBzdHJ1Y3QgSGFzaFRyYWl0czxPYmplY3RJZGVudGlm
aWVyPjsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBmcmllbmQgc3RydWN0IE9iamVjdElkZW50
aWZpZXJIYXNoOwogCkBAIC04MywxMiArODMsMTQgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB1
aW50NjRfdCBtX2lkZW50aWZpZXIgeyAwIH07CisgICAgc3RhdGljIHVpbnQ2NF90IHNfY3VycmVu
dElkZW50aWZpZXI7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgT2JqZWN0SWRl
bnRpZmllcjxUPiBtYWtlT2JqZWN0SWRlbnRpZmllcih1aW50NjRfdCBpZGVudGlmaWVyKQordGVt
cGxhdGU8dHlwZW5hbWUgVD4gdWludDY0X3QgT2JqZWN0SWRlbnRpZmllcjxUPjo6c19jdXJyZW50
SWRlbnRpZmllcjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIE9iamVjdElkZW50aWZp
ZXI8VD4gZ2VuZXJhdGVPYmplY3RJZGVudGlmaWVyKCkKIHsKLSAgICBBU1NFUlQoT2JqZWN0SWRl
bnRpZmllcjxUPjo6aXNWYWxpZElkZW50aWZpZXIoaWRlbnRpZmllcikpOwotICAgIHJldHVybiBP
YmplY3RJZGVudGlmaWVyPFQ+IHsgaWRlbnRpZmllciB9OworICAgIHJldHVybiBPYmplY3RJZGVu
dGlmaWVyPFQ+IHsgKytPYmplY3RJZGVudGlmaWVyPFQ+OjpzX2N1cnJlbnRJZGVudGlmaWVyIH07
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBPYmplY3RJZGVudGlmaWVySGFzaCB7
CkBAIC0xMDYsNCArMTA4LDQgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRI
YXNoPE9iamVjdElkZW50aWZpZXI8VD4+IHsKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBX
VEY6Ok9iamVjdElkZW50aWZpZXI7Ci11c2luZyBXVEY6Om1ha2VPYmplY3RJZGVudGlmaWVyOwor
dXNpbmcgV1RGOjpnZW5lcmF0ZU9iamVjdElkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDIz
OWQ2OTllNjA1Li42NzQ5N2Y0MWExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIxOTEsNiArMjE5MSw3
IEBAIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmNwcAogd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJKb2JRdWV1ZS5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3Ry
YXRpb24uY3BwCit3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCiAKIHht
bC9ET01QYXJzZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggYmRlYjA0MGJiYmYuLjcwZmZmMTkxYmE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzU0
LDYgKzEzNTQsNyBAQAogCQk1MTgyQzI1ODFGMzE0M0NEMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29y
a2VyQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTgyQzI1NDFGMzE0MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyQ29udGFpbmVy
LmggKi87IH07CiAJCTUxODJDMjVBMUYzMTQzQ0QwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE4MkMyNEQxRjMxNDI1MDAwNTlCQTdDIC8qIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LmggKi87IH07CiAJCTUxODJDMjVDMUYzMTQzQ0QwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxODJDMjUwMUYzMTQyNTAwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b24uaCAqLzsgfTsKKwkJNTE4NTQzMEIxRkI2Nzg0NTAwNDc4Rjk1IC8qIFNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE4NTQzMDkxRkI2NzgzRTAwNDc4Rjk1IC8qIFNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTUxODVGQzc1MUJCNEM0RTgwMDEyODk4RiAvKiBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDcxOTZEMTgx
MTA2REYwMDE2REM1MSAvKiBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuaCAqLzsgfTsKIAkJNTE4
NUZDN0IxQkI0QzRFODAwMTI4OThGIC8qIElEQkN1cnNvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2NDVCNDExQjlGODg5QjAwRjc4OUNFIC8qIElE
QkN1cnNvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTUxODVGQzdFMUJCNEM0RTgwMDEyODk4RiAvKiBJREJDdXJzb3JXaXRoVmFsdWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjQ1QjQzMUI5Rjg4
OUIwMEY3ODlDRSAvKiBJREJDdXJzb3JXaXRoVmFsdWUuaCAqLzsgfTsKQEAgLTE0MjUsNyArMTQy
Niw3IEBACiAJCTUxRTY4MjEwMTYzODczMDIwMDNCQkYzQyAvKiBMb2FkZXJTdHJhdGVneS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFNjgyMEYxNjM4
NzMwMjAwM0JCRjNDIC8qIExvYWRlclN0cmF0ZWd5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFRTdCMzgxQUE1MEIwNTAwRjkyQjIxIC8qIFJl
c291cmNlTG9hZEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRUU3QjM3MUFBNTBCMDUwMEY5MkIyMSAvKiBSZXNvdXJjZUxvYWRJbmZvLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFRUFBNzQx
QkVGRkFCMTAwMjE4MDA4IC8qIEluZGV4VmFsdWVFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFRUFBNzIxQkVGRkE3OTAwMjE4MDA4IC8qIElu
ZGV4VmFsdWVFbnRyeS5oICovOyB9OwotCQk1MUYxNzRGRTFGMzU4OTkyMDBDNzQ5NTAgLyogV29y
a2VyVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFGMTc0RkMxRjM1ODk4ODAwQzc0OTUwIC8qIFdvcmtlclR5cGUuaCAqLzsgfTsKKwkJNTFGMTc0
RkUxRjM1ODk5MjAwQzc0OTUwIC8qIFdvcmtlclR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjE3NEZDMUYzNTg5ODgwMEM3NDk1MCAvKiBXb3Jr
ZXJUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTFGMTc1MDMxRjM1OEIzQjAwQzc0OTUwIC8qIEpTU2VydmljZVdvcmtlclVwZGF0ZVZpYUNh
Y2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYx
NzUwMTFGMzU4QjM2MDBDNzQ5NTAgLyogSlNTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUuaCAq
LzsgfTsKIAkJNTFGMTc1MDYxRjM1OEJGNzAwQzc0OTUwIC8qIEpTV29ya2VyVHlwZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMTc1MDUxRjM1OEJE
RTAwQzc0OTUwIC8qIEpTV29ya2VyVHlwZS5oICovOyB9OwogCQk1MUYxNzU1RDFGM0VCQzgzMDBD
NzQ5NTAgLyogU2VydmljZVdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFGMTc1NUExRjNFQkMwQzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXIu
aCAqLzsgfTsKQEAgLTc3MDYsNiArNzcwNyw4IEBACiAJCTUxODJDMjUyMUYzMTQyNTAwMDU5QkE3
QyAvKiBKU1NlcnZpY2VXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTZXJ2aWNlV29ya2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODJDMjUzMUYzMTQyNTAwMDU5QkE3QyAv
KiBKU1NlcnZpY2VXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4MkMyNTQxRjMxNDI1MDAwNTlC
QTdDIC8qIEpTU2VydmljZVdvcmtlckNvbnRhaW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NlcnZp
Y2VXb3JrZXJDb250YWluZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4NTQz
MDkxRkI2NzgzRTAwNDc4Rjk1IC8qIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4NTQzMEExRkI2NzgzRjAwNDc4Rjk1
IC8qIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTg1RkNCQzFCQjVDQjc3MDAxMjg5OEYgLyogSURCQ29u
bmVjdGlvblRvU2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IElEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxODVGQ0JEMUJCNUNCNzcwMDEyODk4RiAvKiBJREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJDb25uZWN0aW9uVG9TZXJ2
ZXJEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTg4NjRERTFCQkFG
MzBGMDBFNTQwQzkgLyogVW5pcXVlSURCRGF0YWJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVW5pcXVlSURCRGF0YWJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTcxMzEsNiArMTcxMzQsOCBAQAogCQkJCTgzMTFDMDAyMUZBQTJFODkw
MEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggKi8sCiAJCQkJNTFGNjQ1OTUxRjRBNjg2MTAw
QjU0REVEIC8qIFNXU2VydmVyUmVnaXN0cmF0aW9uLmNwcCAqLywKIAkJCQk1MUY2NDU5NDFGNEE2
ODRGMDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCAqLywKKwkJCQk1MTg1NDMwQTFG
QjY3ODNGMDA0NzhGOTUgLyogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCAqLywKKwkJ
CQk1MTg1NDMwOTFGQjY3ODNFMDA0NzhGOTUgLyogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmggKi8sCiAJCQkJNTE3QTUzNDMxRjUwQzE2MTAwRENEQzBBIC8qIFNXU2VydmVyV29ya2VyLmNw
cCAqLywKIAkJCQk1MTdBNTM0MjFGNTBDMTYxMDBEQ0RDMEEgLyogU1dTZXJ2ZXJXb3JrZXIuaCAq
LywKIAkJCSk7CkBAIC0yNzQxNSw2ICsyNzQyMCw3IEBACiAJCQkJN0M4RTM0QjkxRTRBMzNCMDAw
NTRDRTIzIC8qIEpTRE9NQ29udmVydEpTT04uaCBpbiBIZWFkZXJzICovLAogCQkJCTdDOEUzNEJB
MUU0QTMzQjAwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnROdWxsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QzhFMzRCQjFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252ZXJ0TnVsbGFibGUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTUxODU0MzBCMUZCNjc4NDUwMDQ3OEY5NSAvKiBTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTdDOEUzNEJEMUU0QTMzQjAwMDU0
Q0UyMyAvKiBKU0RPTUNvbnZlcnROdW1iZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzhFMzRC
RTFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252ZXJ0T2JqZWN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMzIzQ0ZGQTFFNUFGNkFGMDBGMEI0QTAgLyogSlNET01Db252ZXJ0UHJvbWlzZS5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwCmluZGV4IDRkMzM1MDFjNmRhLi5mMGVj
NzY2ZTM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgU2VydmljZVdvcmtlckNv
bnRleHREYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogewotICAgIHJldHVybiB7IHJlZ2lzdHJh
dGlvbktleS5pc29sYXRlZENvcHkoKSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHNjcmlwdC5p
c29sYXRlZENvcHkoKSwgc2NyaXB0VVJMLmlzb2xhdGVkQ29weSgpIH07CisgICAgcmV0dXJuIHsg
cmVnaXN0cmF0aW9uS2V5Lmlzb2xhdGVkQ29weSgpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
c2NyaXB0Lmlzb2xhdGVkQ29weSgpLCBzY3JpcHRVUkwuaXNvbGF0ZWRDb3B5KCksIHdvcmtlclR5
cGUgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCmluZGV4
IDA4YzMxYmM5NTQwLi43YTBiNDQzY2IzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaApAQCAtMjgsNiAr
MjgsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIgogI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1
ZGUgIldvcmtlclR5cGUuaCIKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIApAQCAtMzgs
NiArMzksNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcjsKICAgICBTdHJpbmcgc2Ny
aXB0OwogICAgIFVSTCBzY3JpcHRVUkw7CisgICAgV29ya2VyVHlwZSB3b3JrZXJUeXBlOwogICAg
IAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGE+IGRlY29kZShEZWNvZGVyJik7CkBAIC00OSw2ICs1MSw3IEBA
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCByZWdpc3Ry
YXRpb25LZXkgPDwgc2VydmljZVdvcmtlcklkZW50aWZpZXIgPDwgc2NyaXB0IDw8IHNjcmlwdFVS
TDsKKyAgICBlbmNvZGVyLmVuY29kZUVudW0od29ya2VyVHlwZSk7CiB9CiAKIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+CkBAIC02OSw4ICs3MiwxMiBAQCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNvZGUoRGVjb2Rlcgog
ICAgIFVSTCBzY3JpcHRVUkw7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzY3JpcHRVUkwpKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoKnJl
Z2lzdHJhdGlvbktleSksIFdURk1vdmUoKnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSwgV1RGTW92
ZShzY3JpcHQpLCBXVEZNb3ZlKHNjcmlwdFVSTCkgfX07CisgICAgCisgICAgV29ya2VyVHlwZSB3
b3JrZXJUeXBlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHdvcmtlclR5cGUpKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIAorICAgIHJldHVybiB7eyBXVEZNb3ZlKCpy
ZWdpc3RyYXRpb25LZXkpLCBXVEZNb3ZlKCpzZXJ2aWNlV29ya2VySWRlbnRpZmllciksIFdURk1v
dmUoc2NyaXB0KSwgV1RGTW92ZShzY3JpcHRVUkwpLCB3b3JrZXJUeXBlIH19OwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDRiZjE5ZDg1YjIy
Li4zYTIwYjNhOWQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTMzLDkgKzMzLDggQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OlNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
Y29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09u
bGluZSwgU2VydmljZVdvcmtlclRocmVhZCYgdGhyZWFkLCBib29sIHNob3VsZEJ5cGFzc01haW5X
b3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdp
biwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94
eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKK1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6U2VydmljZVdv
cmtlckdsb2JhbFNjb3BlKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1c2Vy
QWdlbnQsIGJvb2wgaXNPbmxpbmUsIFNlcnZpY2VXb3JrZXJUaHJlYWQmIHRocmVhZCwgYm9vbCBz
aG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZjxTZWN1cml0eU9y
aWdpbj4mJiB0b3BPcmlnaW4sIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgSURCQ2xpZW50OjpJ
REJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tl
dFByb3ZpZGVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgOiBXb3JrZXJHbG9iYWxT
Y29wZSh1cmwsIGlkZW50aWZpZXIsIHVzZXJBZ2VudCwgaXNPbmxpbmUsIHRocmVhZCwgc2hvdWxk
QnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBXVEZNb3ZlKHRvcE9yaWdpbiks
IHRpbWVPcmlnaW4sIGNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIHNlc3Npb25JRCkK
LSAgICAsIG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIpCiAgICAgLCBtX2NvbnRleHREYXRhKGNyb3NzVGhyZWFkQ29weShkYXRhKSkKICAgICAs
IG1fY2xpZW50cyhTZXJ2aWNlV29ya2VyQ2xpZW50czo6Y3JlYXRlKCp0aGlzKSkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUuaAppbmRleCBlZTQ5NTg2OTI0MC4uOTAwMTUxN2RkZjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLmgKQEAgLTUxLDggKzUxLDYgQEAgcHVibGljOgogICAgIFNlcnZpY2VXb3JrZXJDbGllbnRz
JiBjbGllbnRzKCkgeyByZXR1cm4gbV9jbGllbnRzLmdldCgpOyB9CiAgICAgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbiogcmVnaXN0cmF0aW9uKCk7CiAgICAgCi0gICAgdWludDY0X3Qgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyOyB9Ci0KICAgICB2b2lkIHNraXBXYWl0aW5nKFJlZjxEZWZlcnJlZFByb21pc2U+
JiYpOwogCiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdCBmaW5hbDsKQEAgLTYwLDkgKzU4LDggQEAgcHVibGljOgogICAgIFNlcnZpY2VXb3JrZXJU
aHJlYWQmIHRocmVhZCgpOwogCiBwcml2YXRlOgotICAgIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgU2VydmljZVdvcmtlclRocmVhZCYs
IGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBSZWY8U2Vj
dXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIElEQkNs
aWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqLCBQQUw6OlNlc3Npb25J
RCk7CisgICAgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YSYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUsIFNlcnZpY2VXb3JrZXJUaHJlYWQmLCBib29s
IHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgUmVmPFNlY3VyaXR5
T3JpZ2luPiYmIHRvcE9yaWdpbiwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBJREJDbGllbnQ6
OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKiwgUEFMOjpTZXNzaW9uSUQpOwog
Ci0gICAgdWludDY0X3QgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEgbV9jb250ZXh0RGF0YTsKICAgICBSZWY8U2VydmljZVdvcmtlckNs
aWVudHM+IG1fY2xpZW50czsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlclR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlclR5cGVzLmgKaW5kZXggYTNjNmMzZTYxNzguLmM3MGFlMDhhYTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
clR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJUeXBlcy5oCkBAIC01MCw2ICs1MCw5IEBAIGVudW0gY2xhc3MgU2hvdWxkTm90aWZ5V2hlblJl
c29sdmVkIHsgTm8sIFllcyB9OwogZW51bSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
ZmllclR5cGUgeyB9OwogdXNpbmcgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIg
PSBPYmplY3RJZGVudGlmaWVyPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyVHlw
ZT47CiAKK2VudW0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllclR5cGUgeyB9
OwordXNpbmcgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciA9IE9iamVjdElk
ZW50aWZpZXI8U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllclR5cGU+OworCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IDYzMzhlNGU3NTVlLi4yM2M2YmI2Zjhl
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTczLDkgKzczLDggQEAgcHJpdmF0
ZToKIC8vIEZJWE1FOiBVc2UgYSB2YWxpZCBpc09ubGluZSBmbGFnCiAvLyBGSVhNRTogVXNlIHZh
bGlkIHJ1bnRpbWUgZmxhZ3MKIAotU2VydmljZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRo
cmVhZCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdv
cmtlckNvbnRleHREYXRhJiBkYXRhLCBQQUw6OlNlc3Npb25JRCwgV29ya2VyTG9hZGVyUHJveHkm
IGxvYWRlclByb3h5LCBXb3JrZXJEZWJ1Z2dlclByb3h5JiBkZWJ1Z2dlclByb3h5KQorU2Vydmlj
ZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZChjb25zdCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEmIGRhdGEsIFBBTDo6U2Vzc2lvbklELCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVy
UHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkmIGRlYnVnZ2VyUHJveHkpCiAgICAgOiBXb3JrZXJU
aHJlYWQoZGF0YS5zY3JpcHRVUkwsICJzZXJ2aWNld29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50
aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpLCBBU0NJSUxpdGVyYWwoIldvcmtlclVz
ZXJBZ2VudCIpLCAvKiBpc09ubGluZSAqLyBmYWxzZSwgZGF0YS5zY3JpcHQsIGxvYWRlclByb3h5
LCBkZWJ1Z2dlclByb3h5LCBEdW1teVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2hhcmVkKCks
IFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnMgeyB9LCBmYWxzZSwgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShkYXRhLnNjcmlw
dFVSTCkuZ2V0KCksIE1vbm90b25pY1RpbWU6Om5vdygpLCBudWxscHRyLCBudWxscHRyLCBKU0M6
OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpLCBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNz
aW9uSUQoKSkKLSAgICAsIG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIpCiAgICAgLCBtX2RhdGEoZGF0YS5pc29sYXRlZENvcHkoKSkKICAgICAs
IG1fd29ya2VyT2JqZWN0UHJveHkoRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJl
ZCgpKQogewpAQCAtODYsNyArODUsNyBAQCBTZXJ2aWNlV29ya2VyVGhyZWFkOjp+U2VydmljZVdv
cmtlclRocmVhZCgpID0gZGVmYXVsdDsKIAogUmVmPFdvcmtlckdsb2JhbFNjb3BlPiBTZXJ2aWNl
V29ya2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09u
bGluZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBz
aG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZjxTZWN1cml0eU9y
aWdpbj4mJiB0b3BPcmlnaW4sIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKQogewotICAgIHJldHVybiBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmNy
ZWF0ZShtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBtX2RhdGEsIHVybCwgaWRlbnRpZmll
ciwgdXNlckFnZW50LCBpc09ubGluZSwgKnRoaXMsIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRl
bnRTZWN1cml0eVBvbGljeSwgV1RGTW92ZSh0b3BPcmlnaW4pLCB0aW1lT3JpZ2luLCBpZGJDb25u
ZWN0aW9uUHJveHkoKSwgc29ja2V0UHJvdmlkZXIoKSwgc2Vzc2lvbklEKTsKKyAgICByZXR1cm4g
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUobV9kYXRhLCB1cmwsIGlkZW50aWZpZXIs
IHVzZXJBZ2VudCwgaXNPbmxpbmUsICp0aGlzLCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50
U2VjdXJpdHlQb2xpY3ksIFdURk1vdmUodG9wT3JpZ2luKSwgdGltZU9yaWdpbiwgaWRiQ29ubmVj
dGlvblByb3h5KCksIHNvY2tldFByb3ZpZGVyKCksIHNlc3Npb25JRCk7CiB9CiAKIHZvaWQgU2Vy
dmljZVdvcmtlclRocmVhZDo6cnVuRXZlbnRMb29wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaApp
bmRleCA3M2RlY2Q1MDM5MC4uODRhOGUzYjQ3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgK
QEAgLTYwLDcgKzYwLDYgQEAgcHVibGljOgogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudCgpOwog
ICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoKTsKIAotICAgIHVpbnQ2NF90IHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllcjsgfQogICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgY29udGV4dERhdGEo
KSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KIAogICAgIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuc2VydmljZVdvcmtlcklkZW50aWZp
ZXI7IH0KQEAgLTcwLDEyICs2OSwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBydW5FdmVudExv
b3AoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBTZXJ2aWNlV29y
a2VyVGhyZWFkKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEmLCBQQUw6OlNlc3Npb25JRCwgV29ya2VyTG9hZGVyUHJveHkm
LCBXb3JrZXJEZWJ1Z2dlclByb3h5Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgU2VydmljZVdvcmtl
clRocmVhZChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBQQUw6OlNlc3Npb25JRCwg
V29ya2VyTG9hZGVyUHJveHkmLCBXb3JrZXJEZWJ1Z2dlclByb3h5Jik7CiAKICAgICB2b2lkIHVw
ZGF0ZUV4dGVuZGVkRXZlbnRzU2V0KEV4dGVuZGFibGVFdmVudCogbmV3RXZlbnQgPSBudWxscHRy
KTsKICAgICBib29sIGhhc1BlbmRpbmdFdmVudHMoKSBjb25zdCB7IHJldHVybiAhbV9leHRlbmRl
ZEV2ZW50cy5pc0VtcHR5KCk7IH0KIAotICAgIHVpbnQ2NF90IG1fc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXI7CiAgICAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIG1fZGF0YTsKICAgICBXb3Jr
ZXJPYmplY3RQcm94eSYgbV93b3JrZXJPYmplY3RQcm94eTsKICAgICBWZWN0b3I8UmVmPEV4dGVu
ZGFibGVFdmVudD4+IG1fZXh0ZW5kZWRFdmVudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZFByb3h5LmNwcAppbmRleCAxNTcwY2YwZjBiYS4uZTdkYmQ0MDllODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5LmNwcApAQCAtMzYsMTEgKzM2LDYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1SZWY8U2VydmljZVdvcmtlclRocmVhZFByb3h5PiBTZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHk6OmNyZWF0ZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0aW9u
LCB1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhJiBkYXRhLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENhY2hlU3RvcmFn
ZVByb3ZpZGVyJiBjYWNoZVN0b3JhZ2VQcm92aWRlcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgeyBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9u
KSwgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGRhdGEsIHNlc3Npb25JRCwgY2FjaGVTdG9y
YWdlUHJvdmlkZXIgfSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgVW5pcXVlUmVmPFBhZ2U+IGNyZWF0
ZVBhZ2VGb3JTZXJ2aWNlV29ya2VyKFBhZ2VDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbiwg
Y29uc3QgVVJMJiB1cmwpCiB7CiAgICAgYXV0byBwYWdlID0gbWFrZVVuaXF1ZVJlZjxQYWdlPihX
VEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKQEAgLTUyLDEwICs0NywxMCBAQCBzdGF0aWMgaW5saW5l
IFVuaXF1ZVJlZjxQYWdlPiBjcmVhdGVQYWdlRm9yU2VydmljZVdvcmtlcihQYWdlQ29uZmlndXJh
dGlvbiYmIGNvbgogICAgIHJldHVybiBwYWdlOwogfQogCi1TZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHk6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25m
aWd1cmF0aW9uLCB1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENh
Y2hlU3RvcmFnZVByb3ZpZGVyJiBjYWNoZVN0b3JhZ2VQcm92aWRlcikKK1NlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5KFBhZ2VDb25maWd1cmF0aW9uJiYg
cGFnZUNvbmZpZ3VyYXRpb24sIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSwg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDYWNoZVN0b3JhZ2VQcm92aWRlciYgY2FjaGVTdG9y
YWdlUHJvdmlkZXIpCiAgICAgOiBtX3BhZ2UoY3JlYXRlUGFnZUZvclNlcnZpY2VXb3JrZXIoV1RG
TW92ZShwYWdlQ29uZmlndXJhdGlvbiksIGRhdGEuc2NyaXB0VVJMKSkKICAgICAsIG1fZG9jdW1l
bnQoKm1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKLSAgICAsIG1fc2VydmljZVdvcmtl
clRocmVhZChTZXJ2aWNlV29ya2VyVGhyZWFkOjpjcmVhdGUoc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIGRhdGEsIHNlc3Npb25JRCwgKnRoaXMsICp0aGlzKSkKKyAgICAsIG1fc2VydmljZVdv
cmtlclRocmVhZChTZXJ2aWNlV29ya2VyVGhyZWFkOjpjcmVhdGUoZGF0YSwgc2Vzc2lvbklELCAq
dGhpcywgKnRoaXMpKQogICAgICwgbV9jYWNoZVN0b3JhZ2VQcm92aWRlcihjYWNoZVN0b3JhZ2VQ
cm92aWRlcikKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1faW5zcGVjdG9y
UHJveHkoKnRoaXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCmluZGV4IDQxMGIw
ZWFlMWMxLi5hOWM1OTdlNmY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgK
QEAgLTQ3LDE0ICs0NywxNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOwogCiBj
bGFzcyBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8U2VydmljZVdvcmtlclRocmVhZFByb3h5PiwgcHVibGljIFdvcmtlckxvYWRlclBy
b3h5LCBwdWJsaWMgV29ya2VyRGVidWdnZXJQcm94eSB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk+IGNyZWF0ZShQYWdlQ29u
ZmlndXJhdGlvbiYmLCB1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3Qg
U2VydmljZVdvcmtlckNvbnRleHREYXRhJiwgUEFMOjpTZXNzaW9uSUQsIENhY2hlU3RvcmFnZVBy
b3ZpZGVyJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxTZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHk+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShzdGQ6OmZv
cndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICB9CiAKICAgICBTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyVGhyZWFkLT5p
ZGVudGlmaWVyKCk7IH0KICAgICBTZXJ2aWNlV29ya2VyVGhyZWFkJiB0aHJlYWQoKSB7IHJldHVy
biBtX3NlcnZpY2VXb3JrZXJUaHJlYWQuZ2V0KCk7IH0KICAgICBTZXJ2aWNlV29ya2VySW5zcGVj
dG9yUHJveHkmIGluc3BlY3RvclByb3h5KCkgeyByZXR1cm4gbV9pbnNwZWN0b3JQcm94eTsgfQog
CiBwcml2YXRlOgotICAgIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShQYWdlQ29uZmlndXJhdGlv
biYmLCB1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdv
cmtlckNvbnRleHREYXRhJiwgUEFMOjpTZXNzaW9uSUQsIENhY2hlU3RvcmFnZVByb3ZpZGVyJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgU2VydmljZVdvcmtlclRocmVhZFByb3h5KFBhZ2VDb25maWd1
cmF0aW9uJiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYsIFBBTDo6U2Vzc2lvbklE
LCBDYWNoZVN0b3JhZ2VQcm92aWRlciYpOwogCiAgICAgLy8gV29ya2VyTG9hZGVyUHJveHkKICAg
ICBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzayYmLCBjb25zdCBTdHJpbmcmIG1vZGUpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCA1ZWE1
NDRmZTM2Mi4uMDdiY2JkOTJjNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0zMywxOSArMzMsMjAgQEAKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU1dTZXJ2ZXJKb2JRdWV1ZS5oIgogI2luY2x1ZGUgIlNX
U2VydmVyUmVnaXN0cmF0aW9uLmgiCisjaW5jbHVkZSAiU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmgiCiAjaW5jbHVkZSAiU1dTZXJ2ZXJXb3JrZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9y
aWdpbi5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIgogI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2JE
YXRhLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIGdlbmVyYXRlU2VydmljZVdvcmtlcklkZW50aWZpZXIoKQogewotICAg
IHN0YXRpYyB1aW50NjRfdCBpZGVudGlmaWVyID0gMDsKLSAgICByZXR1cm4gbWFrZU9iamVjdElk
ZW50aWZpZXI8U2VydmljZVdvcmtlcklkZW50aWZpZXJUeXBlPigrK2lkZW50aWZpZXIpOworICAg
IHJldHVybiBnZW5lcmF0ZU9iamVjdElkZW50aWZpZXI8U2VydmljZVdvcmtlcklkZW50aWZpZXJU
eXBlPigpOwogfQogCiBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbihTV1NlcnZlciYg
c2VydmVyLCB1aW50NjRfdCBpZGVudGlmaWVyKQpAQCAtNjAsNiArNjEsMTIgQEAgU1dTZXJ2ZXI6
OkNvbm5lY3Rpb246On5Db25uZWN0aW9uKCkKICAgICBtX3NlcnZlci51bnJlZ2lzdGVyQ29ubmVj
dGlvbigqdGhpcyk7CiB9CiAKK0hhc2hTZXQ8U1dTZXJ2ZXIqPiYgU1dTZXJ2ZXI6OmFsbFNlcnZl
cnMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFNXU2VydmVyKj4+IHNl
cnZlcnM7CisgICAgcmV0dXJuIHNlcnZlcnM7Cit9CisKIFNXU2VydmVyOjp+U1dTZXJ2ZXIoKQog
ewogICAgIFJFTEVBU0VfQVNTRVJUKG1fY29ubmVjdGlvbnMuaXNFbXB0eSgpKTsKQEAgLTc0LDYg
KzgxLDggQEAgU1dTZXJ2ZXI6On5TV1NlcnZlcigpCiAgICAgLy8gQnV0IG9uY2UgaXQgZG9lcyBz
dGFydCBoYXBwZW5pbmcsIHRoaXMgQVNTRVJUIHdpbGwgY2F0Y2ggdXMgZG9pbmcgaXQgd3Jvbmcu
CiAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX3Rhc2tUaHJlYWRMb2NrKTsKICAgICBBU1NFUlQo
IW1fdGFza1RocmVhZCk7CisgICAgCisgICAgYWxsU2VydmVycygpLnJlbW92ZSh0aGlzKTsKIH0K
IAogU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIFNXU2VydmVyOjpnZXRSZWdpc3RyYXRpb24oY29uc3Qg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQpAQCAtMTEyLDIx
ICsxMjEsNiBAQCB2b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpmaW5pc2hGZXRjaGluZ1Njcmlw
dEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaAogICAgIG1fc2VydmVyLnNjcmlwdEZl
dGNoRmluaXNoZWQoKnRoaXMsIHJlc3VsdCk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rp
b246OmRpZEZpbmlzaEluc3RhbGwoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYg
a2V5LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9v
bCB3YXNTdWNjZXNzZnVsKQotewotICAgIG1fc2VydmVyLmRpZEZpbmlzaEluc3RhbGwoKnRoaXMs
IGtleSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHdhc1N1Y2Nlc3NmdWwpOwotfQotCi12b2lk
IFNXU2VydmVyOjpDb25uZWN0aW9uOjpkaWRGaW5pc2hBY3RpdmF0aW9uKGNvbnN0IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkmIGtleSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIpCi17Ci0gICAgbV9zZXJ2ZXIuZGlkRmluaXNoQWN0aXZhdGlvbigq
dGhpcywga2V5LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXI6
OkNvbm5lY3Rpb246OnNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIGhhc1BlbmRpbmdFdmVu
dHMpCi17Ci0gICAgbV9zZXJ2ZXIuc2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHMoKnRo
aXMsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBoYXNQZW5kaW5nRXZlbnRzKTsKLX0KLQogdm9p
ZCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoY29u
c3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYga2V5KQogewogICAgIG1fc2VydmVyLmRp
ZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKCp0aGlzLCBrZXkpOwpAQCAtMTQyLDE4ICsxMzYs
OSBAQCB2b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpyZW1vdmVTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSW5TZXJ2ZXIoY29uc3QgU2VydmljZQogICAgIG1fc2VydmVyLnJlbW92ZUNsaWVudFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oKnRoaXMsIGtleSwgaWRlbnRpZmllcik7CiB9CiAKLXZv
aWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgU2VydmljZVdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAg
IG1fc2VydmVyLnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KCp0aGlzLCByZWdpc3RyYXRpb25L
ZXksIGlkZW50aWZpZXIsIG1lc3NhZ2UpOwotfQotCi12b2lkIFNXU2VydmVyOjpDb25uZWN0aW9u
OjpzY3JpcHRDb250ZXh0U3RhcnRlZChjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
JiByZWdpc3RyYXRpb25LZXksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCi17
Ci0gICAgbV9zZXJ2ZXIuc2NyaXB0Q29udGV4dFN0YXJ0ZWQoKnRoaXMsIHJlZ2lzdHJhdGlvbktl
eSwgaWRlbnRpZmllcik7Ci19Ci0KIFNXU2VydmVyOjpTV1NlcnZlcigpCiB7CisgICAgYWxsU2Vy
dmVycygpLmFkZCh0aGlzKTsKICAgICBtX3Rhc2tUaHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZShBU0NJ
SUxpdGVyYWwoIlNlcnZpY2VXb3JrZXIgVGFzayBUaHJlYWQiKSwgW3RoaXNdIHsKICAgICAgICAg
dGFza1RocmVhZEVudHJ5UG9pbnQoKTsKICAgICB9KTsKQEAgLTIyOCw1MiArMjEzLDM2IEBAIHZv
aWQgU1dTZXJ2ZXI6OnNjcmlwdEZldGNoRmluaXNoZWQoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
Y29uc3QgU2VydmljZVdvcmtlckZlCiAgICAgam9iUXVldWUtPnNjcmlwdEZldGNoRmluaXNoZWQo
Y29ubmVjdGlvbiwgcmVzdWx0KTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6c2NyaXB0Q29udGV4dEZh
aWxlZFRvU3RhcnQoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgQVNTRVJUKG1fY29ubmVj
dGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKLSAgICAKLSAgICBpZiAo
YXV0byogam9iUXVldWUgPSBtX2pvYlF1ZXVlcy5nZXQocmVnaXN0cmF0aW9uS2V5KSkKLSAgICAg
ICAgam9iUXVldWUtPnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbm5lY3Rpb24sIGlkZW50
aWZpZXIsIG1lc3NhZ2UpOwotfQotCi12b2lkIFNXU2VydmVyOjpzY3JpcHRDb250ZXh0U3RhcnRl
ZChDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5JiByZWdpc3RyYXRpb25LZXksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIp
Cit2b2lkIFNXU2VydmVyOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChTV1NlcnZlcldvcmtl
ciYgd29ya2VyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgQVNTRVJUKG1fY29ubmVj
dGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKLQotICAgIGlmIChhdXRv
KiBqb2JRdWV1ZSA9IG1fam9iUXVldWVzLmdldChyZWdpc3RyYXRpb25LZXkpKQotICAgICAgICBq
b2JRdWV1ZS0+c2NyaXB0Q29udGV4dFN0YXJ0ZWQoY29ubmVjdGlvbiwgaWRlbnRpZmllcik7Cisg
ICAgaWYgKGF1dG8qIGpvYlF1ZXVlID0gbV9qb2JRdWV1ZXMuZ2V0KHdvcmtlci5yZWdpc3RyYXRp
b25LZXkoKSkpCisgICAgICAgIGpvYlF1ZXVlLT5zY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydCh3
b3JrZXIuaWRlbnRpZmllcigpLCBtZXNzYWdlKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6ZGlkRmlu
aXNoSW5zdGFsbChDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCit2b2lkIFNXU2VydmVy
OjpzY3JpcHRDb250ZXh0U3RhcnRlZChTV1NlcnZlcldvcmtlciYgd29ya2VyKQogewotICAgIEFT
U0VSVChtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKSk7Ci0K
LSAgICBpZiAoYXV0byogam9iUXVldWUgPSBtX2pvYlF1ZXVlcy5nZXQocmVnaXN0cmF0aW9uS2V5
KSkKLSAgICAgICAgam9iUXVldWUtPmRpZEZpbmlzaEluc3RhbGwoY29ubmVjdGlvbiwgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIHdhc1N1Y2Nlc3NmdWwpOworICAgIGlmIChhdXRvKiBqb2JRdWV1
ZSA9IG1fam9iUXVldWVzLmdldCh3b3JrZXIucmVnaXN0cmF0aW9uS2V5KCkpKQorICAgICAgICBq
b2JRdWV1ZS0+c2NyaXB0Q29udGV4dFN0YXJ0ZWQod29ya2VyLmlkZW50aWZpZXIoKSk7CiB9CiAK
LXZvaWQgU1dTZXJ2ZXI6OmRpZEZpbmlzaEFjdGl2YXRpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlv
biwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKK3ZvaWQgU1dT
ZXJ2ZXI6OmRpZEZpbmlzaEluc3RhbGwoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlciwgYm9vbCB3YXNT
dWNjZXNzZnVsKQogewotICAgIEFTU0VSVF9VTlVTRUQoY29ubmVjdGlvbiwgbV9jb25uZWN0aW9u
cy5jb250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOwotCi0gICAgaWYgKGF1dG8qIHJl
Z2lzdHJhdGlvbiA9IGdldFJlZ2lzdHJhdGlvbihyZWdpc3RyYXRpb25LZXkpKQotICAgICAgICBT
V1NlcnZlckpvYlF1ZXVlOjpkaWRGaW5pc2hBY3RpdmF0aW9uKCpyZWdpc3RyYXRpb24sIHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBpZiAoYXV0byogam9iUXVldWUgPSBtX2pvYlF1ZXVl
cy5nZXQod29ya2VyLnJlZ2lzdHJhdGlvbktleSgpKSkKKyAgICAgICAgam9iUXVldWUtPmRpZEZp
bmlzaEluc3RhbGwod29ya2VyLmlkZW50aWZpZXIoKSwgd2FzU3VjY2Vzc2Z1bCk7CiB9CiAKLXZv
aWQgU1dTZXJ2ZXI6OnNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKENvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBib29sIGhhc1BlbmRpbmdFdmVudHMpCit2b2lkIFNXU2VydmVyOjpkaWRGaW5pc2hBY3Rp
dmF0aW9uKFNXU2VydmVyV29ya2VyJiB3b3JrZXIpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChjb25u
ZWN0aW9uLCBtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKSk7
Ci0KLSAgICBpZiAoYXV0byogc2VydmljZVdvcmtlciA9IG1fd29ya2Vyc0J5SUQuZ2V0KHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKSkKLSAgICAgICAgc2VydmljZVdvcmtlci0+c2V0SGFzUGVuZGlu
Z0V2ZW50cyhoYXNQZW5kaW5nRXZlbnRzKTsKKyAgICBpZiAoYXV0byogcmVnaXN0cmF0aW9uID0g
Z2V0UmVnaXN0cmF0aW9uKHdvcmtlci5yZWdpc3RyYXRpb25LZXkoKSkpCisgICAgICAgIFNXU2Vy
dmVySm9iUXVldWU6OmRpZEZpbmlzaEFjdGl2YXRpb24oKnJlZ2lzdHJhdGlvbiwgd29ya2VyLmlk
ZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OmRpZFJlc29sdmVSZWdpc3RyYXRpb25Q
cm9taXNlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKIHsKLSAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5j
b250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOworICAgIEFTU0VSVF9VTlVTRUQoY29u
bmVjdGlvbiwgbV9jb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkp
OwogCiAgICAgaWYgKGF1dG8qIGpvYlF1ZXVlID0gbV9qb2JRdWV1ZXMuZ2V0KHJlZ2lzdHJhdGlv
bktleSkpCi0gICAgICAgIGpvYlF1ZXVlLT5kaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShj
b25uZWN0aW9uKTsKKyAgICAgICAgam9iUXVldWUtPmRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9t
aXNlKCk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OmFkZENsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSYga2V5LCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlm
aWVyKQpAQCAtMzA0LDI2ICsyNzMsNzUgQEAgdm9pZCBTV1NlcnZlcjo6cmVtb3ZlQ2xpZW50U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb24KICAgICBy
ZWdpc3RyYXRpb24tPnJlbW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oY29ubmVj
dGlvbi5pZGVudGlmaWVyKCkpOwogfQogCi1SZWY8U1dTZXJ2ZXJXb3JrZXI+IFNXU2VydmVyOjp1
cGRhdGVXb3JrZXIoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBzY3JpcHQsIFdvcmtlclR5cGUgdHlwZSkKK3ZvaWQgU1dTZXJ2ZXI6OnVwZGF0ZVdvcmtl
cihDb25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0
cmF0aW9uS2V5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIFdvcmtlclR5
cGUgdHlwZSkKIHsKICAgICBhdXRvIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gZ2VuZXJhdGVT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcigpOwogCi0gICAgYXV0byByZXN1bHQgPSBtX3dvcmtlcnNC
eUlELmFkZChzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU1dTZXJ2ZXJXb3JrZXI6OmNyZWF0ZShy
ZWdpc3RyYXRpb25LZXksIHVybCwgc2NyaXB0LCB0eXBlLCBzZXJ2aWNlV29ya2VySWRlbnRpZmll
cikpOwotICAgIEFTU0VSVChyZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgU2VydmljZVdvcmtlckNv
bnRleHREYXRhIGRhdGEgPSB7IHJlZ2lzdHJhdGlvbktleSwgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIHNjcmlwdCwgdXJsLCB0eXBlIH07CiAKLSAgICBjb25uZWN0aW9uLmluc3RhbGxTZXJ2aWNl
V29ya2VyQ29udGV4dCh7IHJlZ2lzdHJhdGlvbktleSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IHNjcmlwdCwgdXJsIH0pOworICAgIC8vIFJpZ2h0IG5vdyB3ZSBvbmx5IGV2ZXIga2VlcCB1cCB0
byBvbmUgY29ubmVjdGlvbiB0byBvbmUgU1cgY29udGV4dCBwcm9jZXNzLgorICAgIC8vIEFuZCBp
dCBzaG91bGQgYWx3YXlzIGV4aXN0IGlmIHdlJ3JlIGNhbGxpbmcgdXBkYXRlV29ya2VyCisgICAg
YXV0byogY29ubmVjdGlvbiA9IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Z2xvYmFsU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOworICAgIGlmICghY29ubmVjdGlvbikgeworICAgICAg
ICBtX3BlbmRpbmdDb250ZXh0RGF0YXMuYXBwZW5kKFdURk1vdmUoZGF0YSkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQogICAgIAotICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdl
dCgpOworICAgIGluc3RhbGxDb250ZXh0RGF0YShkYXRhKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6
ZmlyZUluc3RhbGxFdmVudChDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKK3ZvaWQgU1dTZXJ2ZXI6OnNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25DcmVhdGVkKCkKIHsKLSAgICBjb25uZWN0aW9uLmZpcmVJbnN0YWxs
RXZlbnQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIEFTU0VSVChTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKSk7CisgICAg
Zm9yIChhdXRvJiBkYXRhIDogbV9wZW5kaW5nQ29udGV4dERhdGFzKQorICAgICAgICBpbnN0YWxs
Q29udGV4dERhdGEoZGF0YSk7CisgICAgCisgICAgbV9wZW5kaW5nQ29udGV4dERhdGFzLmNsZWFy
KCk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OmZpcmVBY3RpdmF0ZUV2ZW50KENvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KQordm9pZCBTV1NlcnZlcjo6aW5zdGFsbENvbnRleHREYXRhKGNvbnN0IFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSYgZGF0YSkKIHsKLSAgICBjb25uZWN0aW9uLmZpcmVBY3RpdmF0ZUV2ZW50KHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpnbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7Cisg
ICAgQVNTRVJUKGNvbm5lY3Rpb24pOworCisgICAgYXV0byByZXN1bHQgPSBtX3dvcmtlcnNCeUlE
LmFkZChkYXRhLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTV1NlcnZlcldvcmtlcjo6Y3JlYXRl
KCp0aGlzLCBkYXRhLnJlZ2lzdHJhdGlvbktleSwgY29ubmVjdGlvbi0+aWRlbnRpZmllcigpLCBk
YXRhLnNjcmlwdFVSTCwgZGF0YS5zY3JpcHQsIGRhdGEud29ya2VyVHlwZSwgZGF0YS5zZXJ2aWNl
V29ya2VySWRlbnRpZmllcikpOworICAgIEFTU0VSVChyZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAg
ICBjb25uZWN0aW9uLT5pbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoZGF0YSk7Cit9CisKK3Zv
aWQgU1dTZXJ2ZXI6OmZpcmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIpCit7CisgICAgYXV0byogd29ya2VyID0gbV93b3JrZXJzQnlJ
RC5nZXQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIGlmICghd29ya2VyKSB7CisgICAg
ICAgIExPR19FUlJPUigiUmVxdWVzdCB0byBmaXJlIGluc3RhbGwgZXZlbnQgb24gYSB3b3JrZXIg
dGhhdCBjYW5ub3QgYmUgZm91bmQgaW4gdGhlIHNlcnZlciIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgYXV0byogY29ubmVjdGlvbiA9IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6Y29ubmVjdGlvbkZvcklkZW50aWZpZXIod29ya2VyLT5jb250ZXh0Q29ubmVjdGlvbklkZW50
aWZpZXIoKSk7CisgICAgaWYgKCFjb25uZWN0aW9uKSB7CisgICAgICAgIExPR19FUlJPUigiUmVx
dWVzdCB0byBmaXJlIGluc3RhbGwgZXZlbnQgb24gYSB3b3JrZXIgd2hvc2UgY29udGV4dCBjb25u
ZWN0aW9uIGRvZXMgbm90IGV4aXN0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBj
b25uZWN0aW9uLT5maXJlSW5zdGFsbEV2ZW50KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBTV1NlcnZlcjo6ZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCit7CisgICAgYXV0byogd29ya2VyID0gbV93b3Jr
ZXJzQnlJRC5nZXQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIGlmICghd29ya2VyKSB7
CisgICAgICAgIExPR19FUlJPUigiUmVxdWVzdCB0byBmaXJlIGluc3RhbGwgZXZlbnQgb24gYSB3
b3JrZXIgdGhhdCBjYW5ub3QgYmUgZm91bmQgaW4gdGhlIHNlcnZlciIpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgYXV0byogY29ubmVjdGlvbiA9IFNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6Y29ubmVjdGlvbkZvcklkZW50aWZpZXIod29ya2VyLT5jb250ZXh0Q29ubmVjdGlv
bklkZW50aWZpZXIoKSk7CisgICAgaWYgKCFjb25uZWN0aW9uKSB7CisgICAgICAgIExPR19FUlJP
UigiUmVxdWVzdCB0byBmaXJlIGluc3RhbGwgZXZlbnQgb24gYSB3b3JrZXIgd2hvc2UgY29udGV4
dCBjb25uZWN0aW9uIGRvZXMgbm90IGV4aXN0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBjb25uZWN0aW9uLT5maXJlQWN0aXZhdGVFdmVudChzZXJ2aWNlV29ya2VySWRlbnRpZmll
cik7CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OnRhc2tUaHJlYWRFbnRyeVBvaW50KCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCBmMGM4
YzJjMWNmNS4uZWY1NmU0MWRmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJTZXJ2
aWNlV29ya2VySm9iLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEu
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgiCisjaW5jbHVkZSAi
U2VydmljZVdvcmtlclR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkUXVldWUuaD4K
ICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRUYXNrLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KQEAgLTQ1LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTV1NlcnZl
ckpvYlF1ZXVlOwogY2xhc3MgU1dTZXJ2ZXJSZWdpc3RyYXRpb247CitjbGFzcyBTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb247CiBlbnVtIGNsYXNzIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25T
dGF0ZTsKIGVudW0gY2xhc3MgU2VydmljZVdvcmtlclN0YXRlOwogc3RydWN0IEV4Y2VwdGlvbkRh
dGE7CkBAIC01OSwxMSArNjEsNiBAQCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIH5Db25uZWN0aW9uKCk7CiAKLSAgICAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSk7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NyaXB0Q29udGV4dFN0YXJ0ZWQo
Y29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKTsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRGaW5pc2hJbnN0YWxsKGNvbnN0
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
Ym9vbCB3YXNTdWNjZXNzZnVsKTsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRGaW5p
c2hBY3RpdmF0aW9uKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNl
V29ya2VySWRlbnRpZmllcik7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2Vydmlj
ZVdvcmtlckhhc1BlbmRpbmdFdmVudHMoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgaGFz
UGVuZGluZ0V2ZW50cyk7CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkUmVzb2x2ZVJl
Z2lzdHJhdGlvblByb21pc2UoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYpOwog
ICAgICAgICBjb25zdCBTV1NlcnZlclJlZ2lzdHJhdGlvbiogZG9SZWdpc3RyYXRpb25NYXRjaGlu
Zyhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRV
UkwpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyLmRvUmVnaXN0cmF0aW9uTWF0Y2hpbmcodG9wT3Jp
Z2luLCBjbGllbnRVUkwpOyB9CiAKQEAgLTg4LDExICs4NSw2IEBAIHB1YmxpYzoKICAgICAgICAg
dmlydHVhbCB2b2lkIHJlc29sdmVVbnJlZ2lzdHJhdGlvbkpvYkluQ2xpZW50KHVpbnQ2NF90IGpv
YklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBib29sIHJl
Z2lzdHJhdGlvblJlc3VsdCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRTY3JpcHRG
ZXRjaEluQ2xpZW50KHVpbnQ2NF90IGpvYklkZW50aWZpZXIpID0gMDsKIAotICAgICAgICAvLyBN
ZXNzYWdlcyB0byB0aGUgU1cgaG9zdCBXZWJQcm9jZXNzCi0gICAgICAgIHZpcnR1YWwgdm9pZCBp
bnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRh
JikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZmlyZUluc3RhbGxFdmVudChTZXJ2aWNlV29y
a2VySWRlbnRpZmllcikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZmlyZUFjdGl2YXRlRXZl
bnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKLQogICAgICAgICBTV1NlcnZlciYgbV9z
ZXJ2ZXI7CiAgICAgfTsKIApAQCAtMTE0LDEzICsxMDYsMjIgQEAgcHVibGljOgogICAgIHZvaWQg
cG9zdFRhc2soQ3Jvc3NUaHJlYWRUYXNrJiYpOwogICAgIHZvaWQgcG9zdFRhc2tSZXBseShDcm9z
c1RocmVhZFRhc2smJik7CiAKLSAgICBSZWY8U1dTZXJ2ZXJXb3JrZXI+IHVwZGF0ZVdvcmtlcihD
b25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXb3JrZXJUeXBlKTsKLSAgICB2b2lkIGZpcmVJbnN0
YWxsRXZlbnQoQ29ubmVjdGlvbiYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICB2b2lk
IGZpcmVBY3RpdmF0ZUV2ZW50KENvbm5lY3Rpb24mLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7
CisgICAgdm9pZCB1cGRhdGVXb3JrZXIoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgV29ya2Vy
VHlwZSk7CisgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KTsKKyAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsK
ICAgICBTV1NlcnZlcldvcmtlciogd29ya2VyQnlJRChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBp
ZGVudGlmaWVyKSBjb25zdCB7IHJldHVybiBtX3dvcmtlcnNCeUlELmdldChpZGVudGlmaWVyKTsg
fQogICAgIAogICAgIENvbm5lY3Rpb24qIGdldENvbm5lY3Rpb24odWludDY0X3QgaWRlbnRpZmll
cikgeyByZXR1cm4gbV9jb25uZWN0aW9ucy5nZXQoaWRlbnRpZmllcik7IH0KIAorICAgIHZvaWQg
c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoU1dTZXJ2ZXJXb3JrZXImLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpOworICAgIHZvaWQgc2NyaXB0Q29udGV4dFN0YXJ0ZWQoU1dTZXJ2ZXJXb3JrZXIm
KTsKKyAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoU1dTZXJ2ZXJXb3JrZXImLCBib29sIHdhc1N1
Y2Nlc3NmdWwpOworICAgIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbihTV1NlcnZlcldvcmtlciYp
OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uQ3Jl
YXRlZCgpOworICAgIAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBIYXNoU2V0PFNXU2VydmVy
Kj4mIGFsbFNlcnZlcnMoKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyQ29ubmVjdGlv
bihDb25uZWN0aW9uJik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyQ29ubmVjdGlvbihDb25uZWN0aW9u
Jik7CkBAIC0xMjksMTEgKzEzMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVUYXNrUmVw
bGllc09uTWFpblRocmVhZCgpOwogCiAgICAgdm9pZCBzY3JpcHRGZXRjaEZpbmlzaGVkKENvbm5l
Y3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKTsKLSAgICB2b2lkIHNjcmlw
dENvbnRleHRGYWlsZWRUb1N0YXJ0KENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSk7Ci0gICAgdm9pZCBzY3JpcHRDb250ZXh0U3RhcnRlZChDb25uZWN0aW9uJiwgY29uc3Qg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsK
LSAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNj
ZXNzZnVsKTsKLSAgICB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oQ29ubmVjdGlvbiYsIGNvbnN0
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7
Ci0gICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhDb25uZWN0aW9uJiwg
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgaGFzUGVuZGluZ0V2ZW50cyk7CisKICAgICB2
b2lkIGRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7CiAKICAgICB2b2lkIGFkZENsaWVudFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb24oQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkmLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CkBAIC0xNDEs
NiArMTM4LDggQEAgcHJpdmF0ZToKIAogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFNXU2VydmVy
UmVnaXN0cmF0aW9uKiBkb1JlZ2lzdHJhdGlvbk1hdGNoaW5nKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCkgY29uc3Q7CiAKKyAgICB2b2lk
IGluc3RhbGxDb250ZXh0RGF0YShjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmKTsKKwog
ICAgIEhhc2hNYXA8dWludDY0X3QsIENvbm5lY3Rpb24qPiBtX2Nvbm5lY3Rpb25zOwogICAgIEhh
c2hNYXA8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSwgc3RkOjp1bmlxdWVfcHRyPFNXU2Vy
dmVyUmVnaXN0cmF0aW9uPj4gbV9yZWdpc3RyYXRpb25zOwogICAgIEhhc2hNYXA8U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleSwgc3RkOjp1bmlxdWVfcHRyPFNXU2VydmVySm9iUXVldWU+PiBt
X2pvYlF1ZXVlczsKQEAgLTE1NSw2ICsxNTQsOCBAQCBwcml2YXRlOgogCiAgICAgTG9jayBtX21h
aW5UaHJlYWRSZXBseUxvY2s7CiAgICAgYm9vbCBtX21haW5UaHJlYWRSZXBseVNjaGVkdWxlZCB7
IGZhbHNlIH07CisKKyAgICBEZXF1ZTxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IG1fcGVuZGlu
Z0NvbnRleHREYXRhczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVl
dWUuY3BwCmluZGV4IGU2OWZlNTdlY2IzLi43MDA5Y2Q1YThkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUu
Y3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hG
aW5pc2hlZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uCiB9CiAKIC8vIGh0
dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyN1cGRhdGUtYWxnb3JpdGhtCi12b2lk
IFNXU2VydmVySm9iUXVldWU6OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KFNXU2VydmVyOjpD
b25uZWN0aW9uJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICAvLyBJ
ZiBhbiB1bmNhdWdodCBydW50aW1lIHNjcmlwdCBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBhYm92
ZSBzdGVwLCB0aGVuOgogICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fc2VydmVyLmdldFJlZ2lz
dHJhdGlvbihtX3JlZ2lzdHJhdGlvbktleSk7CkBAIC0xMDEsMTYgKzEwMSwxNiBAQCB2b2lkIFNX
U2VydmVySm9iUXVldWU6OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KFNXU2VydmVyOjpDb25u
ZWN0aW9uJiwgU2VydmljZQogICAgIGZpbmlzaEN1cnJlbnRKb2IoKTsKIH0KIAotdm9pZCBTV1Nl
cnZlckpvYlF1ZXVlOjpzY3JpcHRDb250ZXh0U3RhcnRlZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgU1dT
ZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgaWRlbnRpZmllcikKIHsKICAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBtX3NlcnZlci5nZXRS
ZWdpc3RyYXRpb24obV9yZWdpc3RyYXRpb25LZXkpOwogICAgIEFTU0VSVChyZWdpc3RyYXRpb24p
OwogCi0gICAgaW5zdGFsbCgqcmVnaXN0cmF0aW9uLCBjb25uZWN0aW9uLCBpZGVudGlmaWVyKTsK
KyAgICBpbnN0YWxsKCpyZWdpc3RyYXRpb24sIGlkZW50aWZpZXIpOwogfQogCiAvLyBodHRwczov
L3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jaW5zdGFsbAotdm9pZCBTV1NlcnZlckpvYlF1
ZXVlOjppbnN0YWxsKFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIFNXU2VydmVy
OjpDb25uZWN0aW9uJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaW5zdGFsbGluZ1dvcmtlcikK
K3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6aW5zdGFsbChTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVn
aXN0cmF0aW9uLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpbnN0YWxsaW5nV29ya2VyKQogewog
ICAgIC8vIFRoZSBJbnN0YWxsIGFsZ29yaXRobSBzaG91bGQgbmV2ZXIgYmUgaW52b2tlZCB3aXRo
IGEgbnVsbCB3b3JrZXIuCiAgICAgYXV0byogd29ya2VyID0gbV9zZXJ2ZXIud29ya2VyQnlJRChp
bnN0YWxsaW5nV29ya2VyKTsKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIFNXU2VydmVySm9iUXVl
dWU6Omluc3RhbGwoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgU1dTZXJ2ZXI6
OkNvbgogfQogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jaW5zdGFs
bCAoYWZ0ZXIgcmVzb2x2aW5nIHByb21pc2UpLgotdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpkaWRS
ZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShTV1NlcnZlcjo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
bikKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2Uo
KQogewogICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fc2VydmVyLmdldFJlZ2lzdHJhdGlvbiht
X3JlZ2lzdHJhdGlvbktleSk7CiAgICAgQVNTRVJUKHJlZ2lzdHJhdGlvbik7CkBAIC0xMzUsMTEg
KzEzNSwxMSBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OmRpZFJlc29sdmVSZWdpc3RyYXRpb25Q
cm9taXNlKFNXU2VydmVyOjpDb25uZWN0aW9uJiBjb25uZQogICAgIHJlZ2lzdHJhdGlvbi0+Zmly
ZVVwZGF0ZUZvdW5kRXZlbnQoKTsKIAogICAgIC8vIFF1ZXVlIGEgdGFzayB0byBmaXJlIHRoZSBJ
bnN0YWxsRXZlbnQuCi0gICAgbV9zZXJ2ZXIuZmlyZUluc3RhbGxFdmVudChjb25uZWN0aW9uLCBy
ZWdpc3RyYXRpb24tPmluc3RhbGxpbmdXb3JrZXIoKS0+aWRlbnRpZmllcigpKTsKKyAgICBtX3Nl
cnZlci5maXJlSW5zdGFsbEV2ZW50KHJlZ2lzdHJhdGlvbi0+aW5zdGFsbGluZ1dvcmtlcigpLT5p
ZGVudGlmaWVyKCkpOwogfQogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtl
ci8jaW5zdGFsbAotdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpkaWRGaW5pc2hJbnN0YWxsKFNXU2Vy
dmVyOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCit2b2lkIFNXU2VydmVySm9iUXVldWU6OmRpZEZp
bmlzaEluc3RhbGwoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCB3YXNT
dWNjZXNzZnVsKQogewogICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fc2VydmVyLmdldFJlZ2lz
dHJhdGlvbihtX3JlZ2lzdHJhdGlvbktleSk7CiAgICAgQVNTRVJUKHJlZ2lzdHJhdGlvbik7CkBA
IC0xNzYsMTEgKzE3NiwxMSBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OmRpZEZpbmlzaEluc3Rh
bGwoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNlcnZpYwogICAgIGZpbmlzaEN1
cnJlbnRKb2IoKTsKIAogICAgIC8vIEZJWE1FOiBXYWl0IGZvciBhbGwgdGhlIHRhc2tzIHF1ZXVl
ZCBieSBVcGRhdGUgV29ya2VyIFN0YXRlIGludm9rZWQgaW4gdGhpcyBhbGdvcml0aG0gaGF2ZSBl
eGVjdXRlZC4KLSAgICB0cnlBY3RpdmF0ZShtX3NlcnZlciwgY29ubmVjdGlvbiwgKnJlZ2lzdHJh
dGlvbik7CisgICAgdHJ5QWN0aXZhdGUobV9zZXJ2ZXIsICpyZWdpc3RyYXRpb24pOwogfQogCiAv
LyBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jdHJ5LWFjdGl2YXRlLWFsZ29y
aXRobQotdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjp0cnlBY3RpdmF0ZShTV1NlcnZlciYgc2VydmVy
LCBTV1NlcnZlcjo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24m
IHJlZ2lzdHJhdGlvbikKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6dHJ5QWN0aXZhdGUoU1dTZXJ2
ZXImIHNlcnZlciwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbikKIHsKICAgICAv
LyBJZiByZWdpc3RyYXRpb24ncyB3YWl0aW5nIHdvcmtlciBpcyBudWxsLCByZXR1cm4uCiAgICAg
aWYgKCFyZWdpc3RyYXRpb24ud2FpdGluZ1dvcmtlcigpKQpAQCAtMTk1LDExICsxOTUsMTEgQEAg
dm9pZCBTV1NlcnZlckpvYlF1ZXVlOjp0cnlBY3RpdmF0ZShTV1NlcnZlciYgc2VydmVyLCBTV1Nl
cnZlcjo6Q29ubmVjdGlvbiYgY29ubmUKICAgICAvLyAgIGFuZCBubyBzZXJ2aWNlIHdvcmtlciBj
bGllbnQgaXMgdXNpbmcgcmVnaXN0cmF0aW9uCiAgICAgLy8gRklYTUU6IENoZWNrIGZvciB0aGUg
c2tpcCB3YWl0aW5nIGZsYWcuCiAgICAgaWYgKCFyZWdpc3RyYXRpb24uYWN0aXZlV29ya2VyKCkg
fHwgIXJlZ2lzdHJhdGlvbi5hY3RpdmVXb3JrZXIoKS0+aGFzUGVuZGluZ0V2ZW50cygpKQotICAg
ICAgICBhY3RpdmF0ZShzZXJ2ZXIsIGNvbm5lY3Rpb24sIHJlZ2lzdHJhdGlvbik7CisgICAgICAg
IGFjdGl2YXRlKHNlcnZlciwgcmVnaXN0cmF0aW9uKTsKIH0KIAogLy8gaHR0cHM6Ly93M2MuZ2l0
aHViLmlvL1NlcnZpY2VXb3JrZXIvI2FjdGl2YXRlCi12b2lkIFNXU2VydmVySm9iUXVldWU6OmFj
dGl2YXRlKFNXU2VydmVyJiBzZXJ2ZXIsIFNXU2VydmVyOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uKQordm9pZCBTV1NlcnZlckpvYlF1
ZXVlOjphY3RpdmF0ZShTV1NlcnZlciYgc2VydmVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVn
aXN0cmF0aW9uKQogewogICAgIC8vIElmIHJlZ2lzdHJhdGlvbidzIHdhaXRpbmcgd29ya2VyIGlz
IG51bGwsIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgIGlmICghcmVnaXN0cmF0aW9uLndhaXRpbmdX
b3JrZXIoKSkKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OmFjdGl2
YXRlKFNXU2VydmVyJiBzZXJ2ZXIsIFNXU2VydmVyOjpDb25uZWN0aW9uJiBjb25uZWN0aQogICAg
IC8vIEZJWE1FOiBJbnZva2UgUnVuIFNlcnZpY2UgV29ya2VyIGFsZ29yaXRobSB3aXRoIGFjdGl2
ZVdvcmtlciBhcyB0aGUgYXJndW1lbnQuCiAKICAgICAvLyBRdWV1ZSBhIHRhc2sgdG8gZmlyZSB0
aGUgYWN0aXZhdGUgZXZlbnQuCi0gICAgc2VydmVyLmZpcmVBY3RpdmF0ZUV2ZW50KGNvbm5lY3Rp
b24sIHJlZ2lzdHJhdGlvbi5hY3RpdmVXb3JrZXIoKS0+aWRlbnRpZmllcigpKTsKKyAgICBzZXJ2
ZXIuZmlyZUFjdGl2YXRlRXZlbnQocmVnaXN0cmF0aW9uLmFjdGl2ZVdvcmtlcigpLT5pZGVudGlm
aWVyKCkpOwogfQogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jYWN0
aXZhdGUgKHBvc3QgYWN0aXZhdGUgZXZlbnQgc3RlcHMpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuaAppbmRleCAy
Zjc3YjA5N2YyMS4uMzEwZDE4YjNiMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5oCkBAIC00OCwxMSArNDgs
MTEgQEAgcHVibGljOgogICAgIHZvaWQgcnVuTmV4dEpvYigpOwogCiAgICAgdm9pZCBzY3JpcHRG
ZXRjaEZpbmlzaGVkKFNXU2VydmVyOjpDb25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlckZl
dGNoUmVzdWx0Jik7Ci0gICAgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChTV1NlcnZl
cjo6Q29ubmVjdGlvbiYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpOwotICAgIHZvaWQgc2NyaXB0Q29udGV4dFN0YXJ0ZWQoU1dTZXJ2ZXI6OkNvbm5lY3Rp
b24mLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgdm9pZCBkaWRGaW5pc2hJbnN0YWxs
KFNXU2VydmVyOjpDb25uZWN0aW9uJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2Fz
U3VjY2Vzc2Z1bCk7CisgICAgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIHNjcmlw
dENvbnRleHRTdGFydGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICB2b2lkIGRpZEZp
bmlzaEluc3RhbGwoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCk7
CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbihTV1NlcnZlclJlZ2lzdHJhdGlv
biYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZFJlc29sdmVSZWdpc3Ry
YXRpb25Qcm9taXNlKFNXU2VydmVyOjpDb25uZWN0aW9uJik7CisgICAgdm9pZCBkaWRSZXNvbHZl
UmVnaXN0cmF0aW9uUHJvbWlzZSgpOwogCiBwcml2YXRlOgogICAgIHZvaWQgam9iVGltZXJGaXJl
ZCgpOwpAQCAtNjYsOSArNjYsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB0cnlDbGVhclJlZ2lz
dHJhdGlvbihTV1NlcnZlclJlZ2lzdHJhdGlvbiYpOwogICAgIHZvaWQgY2xlYXJSZWdpc3RyYXRp
b24oU1dTZXJ2ZXJSZWdpc3RyYXRpb24mKTsKLSAgICB2b2lkIGluc3RhbGwoU1dTZXJ2ZXJSZWdp
c3RyYXRpb24mLCBTV1NlcnZlcjo6Q29ubmVjdGlvbiYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KTsKLSAgICBzdGF0aWMgdm9pZCB0cnlBY3RpdmF0ZShTV1NlcnZlciYsIFNXU2VydmVyOjpDb25u
ZWN0aW9uJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mKTsKLSAgICBzdGF0aWMgdm9pZCBhY3RpdmF0
ZShTV1NlcnZlciYsIFNXU2VydmVyOjpDb25uZWN0aW9uJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24m
KTsKKyAgICB2b2lkIGluc3RhbGwoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcik7CisgICAgc3RhdGljIHZvaWQgdHJ5QWN0aXZhdGUoU1dTZXJ2ZXImLCBTV1Nl
cnZlclJlZ2lzdHJhdGlvbiYpOworICAgIHN0YXRpYyB2b2lkIGFjdGl2YXRlKFNXU2VydmVyJiwg
U1dTZXJ2ZXJSZWdpc3RyYXRpb24mKTsKIAogICAgIERlcXVlPFNlcnZpY2VXb3JrZXJKb2JEYXRh
PiBtX2pvYlF1ZXVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IGY3M2JlZmVj
YjQzLi43MzI3Nzk3YjgwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTM3LDgg
KzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXIgZ2VuZXJhdGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
ZmllcigpCiB7Ci0gICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZpZXIgPSAwOwotICAgIHJldHVy
biBtYWtlT2JqZWN0SWRlbnRpZmllcjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
clR5cGU+KCsraWRlbnRpZmllcik7CisgICAgcmV0dXJuIGdlbmVyYXRlT2JqZWN0SWRlbnRpZmll
cjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllclR5cGU+KCk7CiB9CiAKIFNXU2Vy
dmVyUmVnaXN0cmF0aW9uOjpTV1NlcnZlclJlZ2lzdHJhdGlvbihTV1NlcnZlciYgc2VydmVyLCBj
b25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXksIFNlcnZpY2VXb3JrZXJVcGRh
dGVWaWFDYWNoZSB1cGRhdGVWaWFDYWNoZSwgY29uc3QgVVJMJiBzY29wZVVSTCwgY29uc3QgVVJM
JiBzY3JpcHRVUkwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjViNjA5YzQxMzlhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSAiU1dTZXJ2ZXIu
aCIKKyNpbmNsdWRlICJTV1NlcnZlcldvcmtlci5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25JZGVudGlmaWVyIGdlbmVyYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklk
ZW50aWZpZXIoKQoreworICAgIHJldHVybiBnZW5lcmF0ZU9iamVjdElkZW50aWZpZXI8U1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllclR5cGU+KCk7Cit9CisKK3N0YXRpYyBIYXNo
TWFwPFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIsIFNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbio+JiBhbGxDb25uZWN0aW9ucygpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEhhc2hNYXA8U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciwgU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4+IGNvbm5lY3Rpb25zOworICAgIHJldHVybiBjb25u
ZWN0aW9uczsKK30KKworU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24oKQorICAgIDogbV9pZGVudGlmaWVyKGdlbmVyYXRlU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIoKSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IGFsbENvbm5l
Y3Rpb25zKCkuYWRkKG1faWRlbnRpZmllciwgdGhpcyk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKK30KKworU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Ojp+U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkKK3sKKyAgICBhdXRvIHRha2VuID0gYWxs
Q29ubmVjdGlvbnMoKS50YWtlKG1faWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRCh0YWtl
biwgdGFrZW4gPSB0aGlzKTsKK30KKworU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Gb3JJZGVudGlmaWVyKFNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4g
YWxsQ29ubmVjdGlvbnMoKS5nZXQoaWRlbnRpZmllcik7Cit9CisKK1NXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbiogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpnbG9iYWxTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKCkKK3sKKyAgICBpZiAoYWxsQ29ubmVjdGlvbnMoKS5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIEFTU0VSVChhbGxDb25uZWN0aW9u
cygpLnNpemUoKSA9PSAxKTsKKyAgICByZXR1cm4gYWxsQ29ubmVjdGlvbnMoKS5iZWdpbigpLT52
YWx1ZTsKK30KKwordm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNjcmlwdENvbnRl
eHRGYWlsZWRUb1N0YXJ0KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgaWYgKGF1dG8qIHdvcmtlciA9
IFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoc2VydmljZVdvcmtl
cklkZW50aWZpZXIpKQorICAgICAgICB3b3JrZXItPnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0
KG1lc3NhZ2UpOworfQorCit2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2NyaXB0
Q29udGV4dFN0YXJ0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50
aWZpZXIpCit7CisgICAgaWYgKGF1dG8qIHdvcmtlciA9IFNXU2VydmVyV29ya2VyOjpleGlzdGlu
Z1dvcmtlckZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKQorICAgICAgICB3
b3JrZXItPnNjcmlwdENvbnRleHRTdGFydGVkKCk7Cit9CisgICAgCit2b2lkIFNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6ZGlkRmluaXNoSW5zdGFsbChTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKQoreworICAgIGlm
IChhdXRvKiB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlm
aWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkKKyAgICAgICAgd29ya2VyLT5kaWRGaW5pc2hJ
bnN0YWxsKHdhc1N1Y2Nlc3NmdWwpOworfQorCit2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6ZGlkRmluaXNoQWN0aXZhdGlvbihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNl
V29ya2VySWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byogd29ya2VyID0gU1dTZXJ2ZXJXb3Jr
ZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikp
CisgICAgICAgIHdvcmtlci0+ZGlkRmluaXNoQWN0aXZhdGlvbigpOworfQorCit2b2lkIFNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHMo
U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgaGFz
UGVuZGluZ0V2ZW50cykKK3sKKyAgICBpZiAoYXV0byogd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6
OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpCisg
ICAgICAgIHdvcmtlci0+c2V0SGFzUGVuZGluZ0V2ZW50cyhoYXNQZW5kaW5nRXZlbnRzKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjI0YTU0NmNkYWRiCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VySWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBlcy5oIgorI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFNXU2VydmVyOworc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKKworY2xhc3MgU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4geworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgflNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOworCisgICAgU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4g
bV9pZGVudGlmaWVyOyB9CisKKyAgICAvLyBNZXNzYWdlcyB0byB0aGUgU1cgaG9zdCBwcm9jZXNz
CisgICAgdmlydHVhbCB2b2lkIGluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZpcmVJbnN0YWxs
RXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmly
ZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKKworICAgIC8vIE1l
c3NhZ2VzIGJhY2sgZnJvbSB0aGUgU1cgaG9zdCBwcm9jZXNzCisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcmlwdENv
bnRleHRTdGFydGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRpZEZpbmlzaEluc3RhbGwoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2Fz
U3VjY2Vzc2Z1bCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRGaW5pc2hBY3RpdmF0aW9u
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNl
cnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29s
IGhhc1BlbmRpbmdFdmVudHMpOworCisgICAgc3RhdGljIFNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbiogY29ubmVjdGlvbkZvcklkZW50aWZpZXIoU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
SWRlbnRpZmllcik7CisKKyAgICAvLyBGSVhNRTogV2hpbGUgd2Ugb25seSBldmVyIGhhdmUgb25l
IFNXIGNvbnRleHQgcHJvY2VzcyB0aGlzIG1ldGhvZCBtYWtlcyBzZW5zZS4KKyAgICAvLyBPbmNl
IHdlIGhhdmUgbXVsdGlwbGUgb25lcyB0aGlzIG1ldGhvZCBzaG91bGQgZ28gYXdheSBmb3JjaW5n
IHVzZSBvZiBjb25uZWN0aW9uRm9ySWRlbnRpZmllcigpCisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogZ2xvYmFsU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbigpOworCitwcm90ZWN0ZWQ6CisgICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKCk7CisKK3ByaXZhdGU6CisgICAgU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uSWRlbnRpZmllciBtX2lkZW50aWZpZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCmlu
ZGV4IDEyNWEyNjRmNTdjLi41YmIyMzBjZmYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKQEAgLTI4LDI0
ICsyOCw2NSBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1dTZXJ2ZXJXb3Jr
ZXI6OlNXU2VydmVyV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJl
Z2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXb3Jr
ZXJUeXBlIHR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCi0gICAgOiBt
X3JlZ2lzdHJhdGlvbktleShyZWdpc3RyYXRpb25LZXkpCitzdGF0aWMgSGFzaE1hcDxTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgU1dTZXJ2ZXJXb3JrZXIqPiYgYWxsV29ya2VycygpCit7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNX
U2VydmVyV29ya2VyKj4+IHdvcmtlcnM7CisgICAgcmV0dXJuIHdvcmtlcnM7Cit9CisKK1NXU2Vy
dmVyV29ya2VyKiBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIGFsbFdvcmtl
cnMoKS5nZXQoaWRlbnRpZmllcik7Cit9CisKK1NXU2VydmVyV29ya2VyOjpTV1NlcnZlcldvcmtl
cihTV1NlcnZlciYgc2VydmVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBy
ZWdpc3RyYXRpb25LZXksIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgY29u
dGV4dENvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBz
Y3JpcHQsIFdvcmtlclR5cGUgdHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmll
cikKKyAgICA6IG1fc2VydmVyKHNlcnZlcikKKyAgICAsIG1fcmVnaXN0cmF0aW9uS2V5KHJlZ2lz
dHJhdGlvbktleSkKKyAgICAsIG1fY29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKGNvbnRleHRD
b25uZWN0aW9uSWRlbnRpZmllcikKICAgICAsIG1fc2NyaXB0VVJMKHVybCkKICAgICAsIG1fc2Ny
aXB0KHNjcmlwdCkKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV90eXBl
KHR5cGUpCiB7CisgICAgYXV0byByZXN1bHQgPSBhbGxXb3JrZXJzKCkuYWRkKGlkZW50aWZpZXIs
IHRoaXMpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9
CiAKLVNXU2VydmVyV29ya2VyOjp+U1dTZXJ2ZXJXb3JrZXIoKSA9IGRlZmF1bHQ7CitTV1NlcnZl
cldvcmtlcjo6flNXU2VydmVyV29ya2VyKCkKK3sKKyAgICBhdXRvIHRha2VuID0gYWxsV29ya2Vy
cygpLnRha2UobV9pZGVudGlmaWVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHRha2VuLCB0YWtlbiA9
PSB0aGlzKTsKK30KIAogdm9pZCBTV1NlcnZlcldvcmtlcjo6dGVybWluYXRlKCkKIHsKICAgICAv
LyBGSVhNRTogSW1wbGVtZW50CiB9CiAKK3ZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnNjcmlwdENvbnRl
eHRGYWlsZWRUb1N0YXJ0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBtX3NlcnZlci5z
Y3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydCgqdGhpcywgbWVzc2FnZSk7Cit9CisKK3ZvaWQgU1dT
ZXJ2ZXJXb3JrZXI6OnNjcmlwdENvbnRleHRTdGFydGVkKCkKK3sKKyAgICBtX3NlcnZlci5zY3Jp
cHRDb250ZXh0U3RhcnRlZCgqdGhpcyk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXJXb3JrZXI6OmRpZEZp
bmlzaEluc3RhbGwoYm9vbCB3YXNTdWNjZXNzZnVsKQoreworICAgIG1fc2VydmVyLmRpZEZpbmlz
aEluc3RhbGwoKnRoaXMsIHdhc1N1Y2Nlc3NmdWwpOworfQorCit2b2lkIFNXU2VydmVyV29ya2Vy
OjpkaWRGaW5pc2hBY3RpdmF0aW9uKCkKK3sKKyAgICBtX3NlcnZlci5kaWRGaW5pc2hBY3RpdmF0
aW9uKCp0aGlzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCmluZGV4IDFhNjgxZWIyOWNlLi4zOGIwYjQ3
YWNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlcldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJXb3JrZXIuaApAQCAtMzUsMTMgKzM1LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgU1dTZXJ2ZXI7CiBlbnVtIGNsYXNzIFdvcmtlclR5cGU7CiAKIGNsYXNz
IFNXU2VydmVyV29ya2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNXU2VydmVyV29y
a2VyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTV1NlcnZlcldvcmtlcj4gY3JlYXRlKGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXb3JrZXJUeXBlIHR5cGUsIFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFy
Z3M+IHN0YXRpYyBSZWY8U1dTZXJ2ZXJXb3JrZXI+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNXU2VydmVyV29ya2VyKHJlZ2lzdHJh
dGlvbktleSwgdXJsLCBzY3JpcHQsIHR5cGUsIGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU1dTZXJ2ZXJXb3JrZXIoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4u
KSk7CiAgICAgfQogICAgIAogICAgIFNXU2VydmVyV29ya2VyKGNvbnN0IFNXU2VydmVyV29ya2Vy
JikgPSBkZWxldGU7CkBAIC00OSwxMSArNTAsMTQgQEAgcHVibGljOgogCiAgICAgdm9pZCB0ZXJt
aW5hdGUoKTsKIAorICAgIFNXU2VydmVyJiBzZXJ2ZXIoKTsKKyAgICBjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkoKSBjb25zdCB7IHJldHVybiBtX3Jl
Z2lzdHJhdGlvbktleTsgfQogICAgIGNvbnN0IFVSTCYgc2NyaXB0VVJMKCkgY29uc3QgeyByZXR1
cm4gbV9zY3JpcHRVUkw7IH0KICAgICBjb25zdCBTdHJpbmcmIHNjcmlwdCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2NyaXB0OyB9CiAgICAgV29ya2VyVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlOyB9CiAKICAgICBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
SWRlbnRpZmllciBjb250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcjsgfQogCiAgICAgU2VydmljZVdvcmtlclN0YXRl
IHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQogICAgIHZvaWQgc2V0U3RhdGUoU2Vy
dmljZVdvcmtlclN0YXRlIHN0YXRlKSB7IG1fc3RhdGUgPSBzdGF0ZTsgfQpAQCAtNjEsMTAgKzY1
LDE5IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1BlbmRpbmdFdmVudHMoKSBjb25zdCB7IHJldHVy
biBtX2hhc1BlbmRpbmdFdmVudHM7IH0KICAgICB2b2lkIHNldEhhc1BlbmRpbmdFdmVudHMoYm9v
bCB2YWx1ZSkgeyBtX2hhc1BlbmRpbmdFdmVudHMgPSB2YWx1ZTsgfQogCisgICAgdm9pZCBzY3Jp
cHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQg
c2NyaXB0Q29udGV4dFN0YXJ0ZWQoKTsKKyAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoYm9vbCB3
YXNTdWNjZXNzZnVsKTsKKyAgICB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oKTsKKworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBTV1NlcnZlcldvcmtlciogZXhpc3RpbmdXb3JrZXJGb3JJZGVu
dGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKwogcHJpdmF0ZToKLSAgICBTV1NlcnZl
cldvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiBzY3JpcHQsIFdvcmtlclR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KTsKKyAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkmLCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgV29ya2VyVHlwZSwgU2VydmljZVdvcmtlcklk
ZW50aWZpZXIpOwogCisgICAgU1dTZXJ2ZXImIG1fc2VydmVyOwogICAgIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkgbV9yZWdpc3RyYXRpb25LZXk7CisgICAgU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uSWRlbnRpZmllciBtX2NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBV
UkwgbV9zY3JpcHRVUkw7CiAgICAgU3RyaW5nIG1fc2NyaXB0OwogICAgIFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA0
MzliMWVlOGY4OS4uZDcyMWMwYjE4Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAg
LTE2NCw2ICsxNjQsNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBXZWJTV0NsaWVudENv
bm5lY3Rpb24gXAogICAgIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIFwKICAgICBXZWJT
V1NlcnZlckNvbm5lY3Rpb24gXAorICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBc
CiAgICAgUGxheWJhY2tTZXNzaW9uTWFuYWdlciBcCiAgICAgUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5IFwKICAgICBXZWJQcm9jZXNzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggOThkOTdhZGZjODQuLmU5OWNiNmRkODFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNDIsNiArNDIs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1N0b3JlZENyZWRlbnRpYWxzUG9saWN5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Xb3JrZXJUeXBl
Lmg+CiAKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTW9ub3RvbmljVGltZTsKQEAgLTc5Nyw2ICs3
OTgsMTQgQEAgdGVtcGxhdGUgPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3k+IHsKICAgICA+OwogfTsKIAordGVtcGxhdGUgPD4gc3RydWN0IEVudW1U
cmFpdHM8V2ViQ29yZTo6V29ya2VyVHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1
ZXM8CisgICAgICAgIFdlYkNvcmU6OldvcmtlclR5cGUsCisgICAgICAgIFdlYkNvcmU6Oldvcmtl
clR5cGU6OkNsYXNzaWMsCisgICAgICAgIFdlYkNvcmU6OldvcmtlclR5cGU6Ok1vZHVsZQorICAg
ID47Cit9OworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogdGVtcGxhdGUgPD4gc3RydWN0
IEVudW1UcmFpdHM8V2ViQ29yZTo6U2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlPiB7CiAgICAg
dXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3Rv
cmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5jcHAKaW5kZXggNmJjNTg5YTk1NzIuLjZmYWZmNDgxNGI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV09y
aWdpblN0b3JlLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJX
ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0
aW9uRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KQEAgLTExMSwy
NCArMTEyLDYgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnVwZGF0ZVdvcmtlclN0YXRl
SW5DbGllbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgd28KICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJTV0NsaWVudENvbm5lY3Rpb246OlVwZGF0ZVdvcmtlclN0YXRlKHdvcmtlciwgc3RhdGUpKTsK
IH0KIAotdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29ya2VyQ29u
dGV4dChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEpCi17Ci0gICAgaWYgKHNl
bmRUb0NvbnRleHRQcm9jZXNzKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6SW5zdGFsbFNlcnZpY2VXb3JrZXIoaWRlbnRpZmllcigpLCBkYXRhKSkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIG1fcGVuZGluZ0NvbnRleHREYXRhcy5hcHBlbmQoZGF0YSk7Ci19Ci0KLXZv
aWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpmaXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQotewotICAgIHNlbmRUb0NvbnRleHRQ
cm9jZXNzKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6RmlyZUluc3Rh
bGxFdmVudChpZGVudGlmaWVyKCksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSk7Ci19Ci0KLXZv
aWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKLXsKLSAgICBzZW5kVG9Db250ZXh0
UHJvY2VzcyhNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkZpcmVBY3Rp
dmF0ZUV2ZW50KGlkZW50aWZpZXIoKSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIpKTsKLX0KLQog
dm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2godWludDY0X3QgZmV0Y2hJZGVu
dGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyPiBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBGZXRj
aE9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgc2VuZFRvQ29udGV4dFByb2Nlc3MoTWVzc2FnZXM6
OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTdGFydEZldGNoKGlkZW50aWZpZXIoKSwg
ZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9u
cykpOwpAQCAtMTc5LDI1ICsxNjIsMTIgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246Om1h
dGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdEkKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJTV0NsaWVudENvbm5lY3Rpb246OkRpZE1hdGNoUmVnaXN0cmF0aW9u
IHsgcmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpudWxsb3B0IH0pOwog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2Vu
ZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1lc3NhZ2UpCit0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lk
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2VuZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1lc3NhZ2Up
CiB7Ci0gICAgaWYgKCFtX2NvbnRleHRDb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICByZXR1cm4gbV9jb250ZXh0Q29ubmVjdGlvbi0+c2VuZDxVPihXVEZNb3ZlKG1lc3Nh
Z2UpLCAwKTsKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IFN0b3JhZ2VQcm9jZXNzOjpzaW5n
bGV0b24oKS5nbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkpCisgICAgICAgIGNvbm5l
Y3Rpb24tPnNlbmQoV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjpzZXRDb250ZXh0Q29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24p
Ci17Ci0gICAgbV9jb250ZXh0Q29ubmVjdGlvbiA9IGNvbm5lY3Rpb247Ci0KLSAgICAvLyBXZSBj
YW4gbm93IHN0YXJ0IGFueSBwZW5kaW5nIHNlcnZpY2Ugd29ya2VyIHVwZGF0ZXMuCi0gICAgZm9y
IChhdXRvJiBwZW5kaW5nQ29udGV4dERhdGEgOiBtX3BlbmRpbmdDb250ZXh0RGF0YXMpCi0gICAg
ICAgIGluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChwZW5kaW5nQ29udGV4dERhdGEpOwotICAg
IAotICAgIG1fcGVuZGluZ0NvbnRleHREYXRhcy5jbGVhcigpOwotfQotICAgIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggN2YxY2Q1MWVjZjEuLmI4MGIzYmZkNDdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCkBAIC00Niw3ICs0Niw2IEBA
IHB1YmxpYzoKICAgICB+V2ViU1dTZXJ2ZXJDb25uZWN0aW9uKCkgZmluYWw7CiAKICAgICB2b2lk
IGRpc2Nvbm5lY3RlZEZyb21XZWJQcm9jZXNzKCk7Ci0gICAgdm9pZCBzZXRDb250ZXh0Q29ubmVj
dGlvbihJUEM6OkNvbm5lY3Rpb24qKTsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCiAgICAgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KQEAgLTc1LDIyICs3NCwx
NSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBtYXRjaFJlZ2lzdHJhdGlvbih1aW50NjRfdCByZWdp
c3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpVUkwmIGNsaWVudFVSTCk7CiAKLSAgICAvLyBNZXNz
YWdlcyB0byB0aGUgU1cgY29udGV4dCBXZWJQcm9jZXNzCi0gICAgdm9pZCBpbnN0YWxsU2Vydmlj
ZVdvcmtlckNvbnRleHQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJikg
ZmluYWw7Ci0gICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKLQogICAgIElQQzo6Q29ubmVjdGlvbiogbWVz
c2FnZVNlbmRlckNvbm5lY3Rpb24oKSBmaW5hbCB7IHJldHVybiBtX2NvbnRlbnRDb25uZWN0aW9u
LnB0cigpOyB9CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBmaW5h
bCB7IHJldHVybiBpZGVudGlmaWVyKCk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJv
b2wgc2VuZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1lc3NhZ2UpOwogICAgIAorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFU+IHZvaWQgc2VuZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1lc3NhZ2UpOworCiAg
ICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9u
PiBtX2NvbnRlbnRDb25uZWN0aW9uOwogICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29u
dGV4dENvbm5lY3Rpb247Ci0gICAgCi0gICAgRGVxdWU8V2ViQ29yZTo6U2VydmljZVdvcmtlckNv
bnRleHREYXRhPiBtX3BlbmRpbmdDb250ZXh0RGF0YXM7CiB9OyAvLyBjbGFzcyBXZWJTV1NlcnZl
ckNvbm5lY3Rpb24KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi5hOGM1OWVlOTk5MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCisK
KyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCisgICAg
OiBtX2lwY0Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKK3sKK30KKworSVBDOjpDb25u
ZWN0aW9uKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uKCkKK3sKKyAgICByZXR1cm4gbV9pcGNDb25uZWN0aW9uLnB0cigpOworfQorCit1aW50
NjRfdCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJEZXN0aW5h
dGlvbklEKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OmNvbm5lY3Rpb25DbG9zZWQoKQoreworICAgIC8vIEZJWE1FOiBEbyB3aGF0
IGhlcmUuLi4/Cit9CisKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjppbnN0
YWxsU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBk
YXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpJbnN0YWxsU2VydmljZVdvcmtlcihkYXRhKSk7Cit9CisKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpmaXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpGaXJlSW5zdGFsbEV2ZW50KHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKSk7Cit9CisKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaXJl
QWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6RmlyZUFjdGl2YXRlRXZlbnQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjMwYmQ4Mzg0YjJhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIDogcHVibGljIFdl
YkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2FnZVNl
bmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoKTsKKwor
ICAgIElQQzo6Q29ubmVjdGlvbiogaXBjQ29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXBj
Q29ubmVjdGlvbi5wdHIoKTsgfQorCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZp
bmFsOworCitwcml2YXRlOgorICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihSZWY8
SVBDOjpDb25uZWN0aW9uPiYmKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlcgorICAgIElQ
Qzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBmaW5hbDsKKyAgICB1aW50
NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGZpbmFsOworCisgICAgLy8gTWVzc2Fn
ZXMgdG8gdGhlIFNXIGhvc3QgV2ViUHJvY2VzcworICAgIHZvaWQgaW5zdGFsbFNlcnZpY2VXb3Jr
ZXJDb250ZXh0KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpIGZpbmFs
OworICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllcikgZmluYWw7CisgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllcikgZmluYWw7CisgICAgCisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4g
bV9pcGNDb25uZWN0aW9uOworICAgIAorfTsgLy8gY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uOWRjOGMxNjNiNDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworbWVzc2Fn
ZXMgLT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIHsKKyAgICAjIFdoZW4gcG9zc2li
bGUsIHRoZXNlIG1lc3NhZ2VzIGNhbiBiZSBpbXBsZW1lbnRlZCBkaXJlY3RseSBieSBXZWJDb3Jl
OjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24KKworICAgIFNjcmlwdENvbnRleHRGYWlsZWRU
b1N0YXJ0KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cmlu
ZyBtZXNzYWdlKTsKKyAgICBTY3JpcHRDb250ZXh0U3RhcnRlZChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBpZGVudGlmaWVyKTsKKyAgICBEaWRGaW5pc2hJbnN0YWxsKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCk7
CisgICAgRGlkRmluaXNoQWN0aXZhdGlvbihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBpZGVudGlmaWVyKTsKKyAgICBTZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9v
bCBoYXNQZW5kaW5nRXZlbnRzKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAK
aW5kZXggMTllN2QwMGNhNWEuLjFlNGExYWViMGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcApAQCAtMzMsMTAgKzMzLDEzIEBACiAjaW5j
bHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViU1dPcmlnaW5TdG9y
ZS5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lEQktleURhdGEu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9TV1NlcnZlcldvcmtlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KQEAgLTc5LDggKzgyLDkgQEAgYm9vbCBTdG9y
YWdlUHJvY2Vzczo6c2hvdWxkVGVybWluYXRlKCkKIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZENs
b3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCi0gICAgaWYgKG1fd29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uID09ICZjb25u
ZWN0aW9uKSB7Ci0gICAgICAgIG1fd29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uID0gbnVs
bHB0cjsKKyAgICBpZiAobV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uICYmIG1fc2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi0+aXBjQ29ubmVjdGlvbigpID09ICZjb25uZWN0aW9uKSB7CisgICAg
ICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+Y29ubmVjdGlvbkNsb3NlZCgpOworICAg
ICAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwogICAgICAgICByZXR1
cm47CiAgICAgfQogI2Vsc2UKQEAgLTk4LDYgKzEwMiwxNCBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNz
OjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlcgogICAgICAgICBkaWRSZWNlaXZlU3RvcmFnZVByb2Nlc3NNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVz
c2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBpZiAoYXV0byogc3dDb25u
ZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpnbG9iYWxTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uKCkpIHsKKyAgICAgICAgICAgIGF1dG8qIHdlYlNXQ29ubmVjdGlvbiA9IHN0
YXRpY19jYXN0PFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbio+KHN3Q29ubmVjdGlvbik7
CisgICAgICAgICAgICB3ZWJTV0Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rp
b24sIGRlY29kZXIpOworICAgICAgICAgICAgcmV0dXJuOyAgICAgICAgCisgICAgICAgIH0KKyAg
ICB9CiB9CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKQEAgLTM1MSwxNyArMzYzLDE3
IEBAIFNXU2VydmVyJiBTdG9yYWdlUHJvY2Vzczo6c3dTZXJ2ZXJGb3JTZXNzaW9uKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkKICAgICByZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiB9
CiAKLUlQQzo6Q29ubmVjdGlvbiogU3RvcmFnZVByb2Nlc3M6OndvcmtlckNvbnRleHRQcm9jZXNz
Q29ubmVjdGlvbigpCitXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIFN0b3JhZ2VQcm9j
ZXNzOjpnbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkKIHsKLSAgICByZXR1cm4gbV93
b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24uZ2V0KCk7CisgICAgcmV0dXJuIG1fc2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5nZXQoKTsKIH0KIAotdm9pZCBTdG9yYWdlUHJvY2Vzczo6Y3Jl
YXRlV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKCkKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6
OmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQogewotICAgIGlmIChtX3dhaXRpbmdG
b3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pCisgICAgaWYgKG1fd2FpdGluZ0ZvclNl
cnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAgICAgCi0g
ICAgbV93YWl0aW5nRm9yV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uID0gdHJ1ZTsKKyAg
ICBtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9IHRydWU7CiAg
ICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nl
c3NQcm94eTo6R2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKCksIDApOwogfQogCkBA
IC0zODIsOCArMzk0LDggQEAgV2ViU1dPcmlnaW5TdG9yZSogU3RvcmFnZVByb2Nlc3M6OnN3T3Jp
Z2luU3RvcmVGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb24KIAogdm9pZCBTdG9yYWdl
UHJvY2Vzczo6ZGlkR2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKElQQzo6QXR0YWNo
bWVudCYmIGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBBU1NFUlQobV93YWl0
aW5nRm9yV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKTsKLSAgICBtX3dhaXRpbmdGb3JX
b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPSBmYWxzZTsKKyAgICBBU1NFUlQobV93YWl0
aW5nRm9yU2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pOworICAgIG1fd2FpdGluZ0Zv
clNlcnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uID0gZmFsc2U7CiAKICNpZiBVU0UoVU5J
WF9ET01BSU5fU09DS0VUUykKICAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVj
dGlvbklkZW50aWZpZXIgPSBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIucmVsZWFzZUZpbGVE
ZXNjcmlwdG9yKCk7CkBAIC0zOTgsMjUgKzQxMCwxNCBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpk
aWRHZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50JiYgZW5j
bwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV93b3JrZXJDb250ZXh0UHJvY2Vzc0Nv
bm5lY3Rpb24gPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZUNsaWVudENvbm5lY3Rpb24oY29ubmVj
dGlvbklkZW50aWZpZXIsICp0aGlzKTsKLSAgICBtX3dvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVj
dGlvbi0+b3BlbigpOworICAgIGF1dG8gaXBjQ29ubmVjdGlvbiA9IElQQzo6Q29ubmVjdGlvbjo6
Y3JlYXRlQ2xpZW50Q29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwgKnRoaXMpOworICAg
IGlwY0Nvbm5lY3Rpb24tPm9wZW4oKTsKKyAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24g
PSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNyZWF0ZShXVEZNb3ZlKGlwY0Nvbm5l
Y3Rpb24pKTsKICAgICAKICAgICBmb3IgKGF1dG8mIGNvbm5lY3Rpb24gOiBtX3N0b3JhZ2VUb1dl
YlByb2Nlc3NDb25uZWN0aW9ucykKICAgICAgICAgY29ubmVjdGlvbi0+d29ya2VyQ29udGV4dFBy
b2Nlc3NDb25uZWN0aW9uQ3JlYXRlZCgpOwogfQogCi12b2lkIFN0b3JhZ2VQcm9jZXNzOjpzZXJ2
aWNlV29ya2VyQ29udGV4dEZhaWxlZFRvU3RhcnQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlv
bktleSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1fc3dT
ZXJ2ZXJDb25uZWN0aW9ucy5nZXQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKQotICAgICAg
ICBjb25uZWN0aW9uLT5zY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChyZWdpc3RyYXRpb25LZXks
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBtZXNzYWdlKTsKLX0KLQotdm9pZCBTdG9yYWdlUHJv
Y2Vzczo6c2VydmljZVdvcmtlckNvbnRleHRTdGFydGVkKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3Ry
YXRpb25LZXksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KQotewotICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbV9zd1NlcnZlckNvbm5lY3Rpb25zLmdl
dChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpCi0gICAgICAgIGNvbm5lY3Rpb24tPnNjcmlw
dENvbnRleHRTdGFydGVkKHJlZ2lzdHJhdGlvbktleSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIp
OwotfQotCiB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaWRGYWlsRmV0Y2godWludDY0X3Qgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcikKIHsKICAgICBp
ZiAoYXV0byogY29ubmVjdGlvbiA9IG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5nZXQoc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIpKQpAQCAtNDUzLDI1ICs0NTQsNiBAQCB2b2lkIFN0b3JhZ2VQcm9j
ZXNzOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZXJ2aWNlV29ya2Vy
Q2xpZW50SQogICAgICAgICBjb25uZWN0aW9uLT5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNs
aWVudChkZXN0aW5hdGlvbklkZW50aWZpZXIuc2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXIsIG1lc3NhZ2UsIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbik7CiB9CiAKLXZvaWQg
U3RvcmFnZVByb2Nlc3M6OmRpZEZpbmlzaFNlcnZpY2VXb3JrZXJJbnN0YWxsKHVpbnQ2NF90IHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5JiByZWdpc3RyYXRpb25LZXksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCi17Ci0gICAgaWYgKGF1dG8qIGNvbm5l
Y3Rpb24gPSBtX3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyKSkKLSAgICAgICAgY29ubmVjdGlvbi0+ZGlkRmluaXNoSW5zdGFsbChyZWdpc3RyYXRpb25L
ZXksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCB3YXNTdWNjZXNzZnVsKTsKLX0KLQotdm9pZCBT
dG9yYWdlUHJvY2Vzczo6ZGlkRmluaXNoU2VydmljZVdvcmtlckFjdGl2YXRpb24odWludDY0X3Qg
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmIHJlZ2lzdHJhdGlvbktleSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdv
cmtlcklkZW50aWZpZXIpCi17Ci0gICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBtX3N3U2VydmVy
Q29ubmVjdGlvbnMuZ2V0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKLSAgICAgICAgY29u
bmVjdGlvbi0+ZGlkRmluaXNoQWN0aXZhdGlvbihyZWdpc3RyYXRpb25LZXksIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKTsKLX0KLQotCi12b2lkIFN0b3JhZ2VQcm9jZXNzOjpzZXRTZXJ2aWNlV29y
a2VySGFzUGVuZGluZ0V2ZW50cyh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgaGFz
UGVuZGluZ0V2ZW50cykKLXsKLSAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1fc3dTZXJ2ZXJD
b25uZWN0aW9ucy5nZXQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKQotICAgICAgICBjb25u
ZWN0aW9uLT5zZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgaGFzUGVuZGluZ0V2ZW50cyk7Ci19Ci0KIHZvaWQgU3RvcmFnZVByb2Nlc3M6OnJl
Z2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgY29ubmVjdGlv
bikKIHsKICAgICBBU1NFUlQoIW1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0
aW9uLmlkZW50aWZpZXIoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TdG9yYWdlUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9y
YWdlUHJvY2Vzcy5oCmluZGV4IGVhNTUwMzQ1NGI5Li45ODlmMTEwMDViOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaApAQCAtNDYsNiArNDYsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b247CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CitjbGFzcyBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb247CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZTsKIHN0cnVjdCBTdG9y
YWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIApAQCAtODAsOCArODEsMTAgQEAgcHVibGlj
OgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgSVBDOjpDb25uZWN0
aW9uKiB3b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKLSAgICB2b2lkIGNyZWF0ZVdv
cmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbigpOworICAgIC8vIEZvciBub3cgd2UganVzdCBo
YXZlIG9uZSBnbG9iYWwgY29ubmVjdGlvbiB0byBzZXJ2aWNlIHdvcmtlciBjb250ZXh0IHByb2Nl
c3Nlcy4KKyAgICAvLyBUaGlzIHdpbGwgY2hhbmdlIGluIHRoZSBmdXR1cmUuCisgICAgV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBnbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
KCk7CisgICAgdm9pZCBjcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7CiAKICAgICBX
ZWJTV09yaWdpblN0b3JlJiBlbnN1cmVTV09yaWdpblN0b3JlRm9yU2Vzc2lvbihQQUw6OlNlc3Np
b25JRCk7CiAgICAgV2ViU1dPcmlnaW5TdG9yZSogc3dPcmlnaW5TdG9yZUZvclNlc3Npb24oUEFM
OjpTZXNzaW9uSUQpIGNvbnN0OwpAQCAtMTE5LDggKzEyMiw2IEBAIHByaXZhdGU6CiAjZW5kaWYK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBkaWRHZXRXb3JrZXJDb250ZXh0
UHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50JiYgZW5jb2RlZENvbm5lY3Rpb25JZGVu
dGlmaWVyKTsKLSAgICB2b2lkIHNlcnZpY2VXb3JrZXJDb250ZXh0RmFpbGVkVG9TdGFydCh1aW50
NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleSYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgIHZvaWQgc2VydmljZVdvcmtlckNvbnRleHRTdGFy
dGVkKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSh1aW50NjRfdCBzZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlRmV0Y2hEYXRh
KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50
aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5n
dGgpOwpAQCAtMTI4LDkgKzEyOSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGYWlsRmV0Y2go
dWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRp
Zmllcik7CiAgICAgdm9pZCBkaWROb3RIYW5kbGVGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKTsKIAotICAgIHZvaWQgZGlk
RmluaXNoU2VydmljZVdvcmtlckluc3RhbGwodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKTsKLSAgICB2
b2lkIGRpZEZpbmlzaFNlcnZpY2VXb3JrZXJBY3RpdmF0aW9uKHVpbnQ2NF90IHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5JiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAgIHZvaWQgc2V0U2Vy
dmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHModWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIGhhc1BlbmRpbmdF
dmVudHMpOwogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3Qg
V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRp
ZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9y
aWdpbik7CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKQEAgLTE1OCw4ICsx
NTYsOCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGRp
ZENyZWF0ZVdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBJUEM6OkF0dGFjaG1l
bnQmKTsKIAotICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fd29ya2VyQ29udGV4dFByb2Nl
c3NDb25uZWN0aW9uOwotICAgIGJvb2wgbV93YWl0aW5nRm9yV29ya2VyQ29udGV4dFByb2Nlc3ND
b25uZWN0aW9uIHsgZmFsc2UgfTsKKyAgICBSZWZQdHI8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uPiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CisgICAgYm9vbCBtX3dhaXRpbmdG
b3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNlIH07CiAgICAgSGFzaE1h
cDxQQUw6OlNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNXU2VydmVyPj4gbV9z
d1NlcnZlcnM7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uKj4g
bV9zd1NlcnZlckNvbm5lY3Rpb25zOwogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIHN0ZDo6
dW5pcXVlX3B0cjxXZWJTV09yaWdpblN0b3JlPj4gbV9zd09yaWdpblN0b3JlczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2Vz
LmluCmluZGV4IDNiNmQzMzkzNmU4Li4wNTc0OTAyMzNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0z
OCwxMiArMzgsNiBAQCBtZXNzYWdlcyAtPiBTdG9yYWdlUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIERpZEdldFdvcmtlckNvbnRleHRQcm9j
ZXNzQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbkhhbmRsZSkKIAotICAgIFNl
cnZpY2VXb3JrZXJDb250ZXh0RmFpbGVkVG9TdGFydCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSByZWdpc3Ry
YXRpb25LZXksIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBTdHJpbmcgbWVzc2FnZSkKLSAgICBTZXJ2aWNlV29ya2VyQ29udGV4dFN0YXJ0
ZWQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkgcmVnaXN0cmF0aW9uS2V5LCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKLSAgICBEaWRGaW5pc2hTZXJ2
aWNlV29ya2VySW5zdGFsbCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2Vi
Q29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSByZWdpc3RyYXRpb25LZXksIFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29s
IHdhc1N1Y2Nlc3NmdWwpOwotICAgIERpZEZpbmlzaFNlcnZpY2VXb3JrZXJBY3RpdmF0aW9uKHVp
bnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlvbktleSwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAgIFNldFNlcnZpY2VXb3JrZXJI
YXNQZW5kaW5nRXZlbnRzKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9v
bCBoYXNQZW5kaW5nRXZlbnRzKTsKLQogICAgIERpZE5vdEhhbmRsZUZldGNoKHVpbnQ2NF90IHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpCiAgICAg
RGlkRmFpbEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRf
dCBmZXRjaElkZW50aWZpZXIpCiAgICAgRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UodWludDY0X3Qg
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5j
cHAKaW5kZXggNDU0NWJjNGEyNTIuLmZlNDNmMTc0NjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0
aW9uLmNwcApAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgIldlYklEQkNvbm5lY3Rpb25Ub0Ns
aWVudE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgiCiAjaW5j
bHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBQQUw7CkBAIC04NSw2ICs4NywxMSBAQCB2b2lkIFN0b3JhZ2VUb1dlYlByb2Nl
c3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
bwogICAgICAgICAgICAgaXRlcmF0b3ItPnZhbHVlLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgU3RvcmFnZVByb2Nl
c3M6OnNpbmdsZXRvbigpLmdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKS0+ZGlkUmVj
ZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CiAjZW5kaWYKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTQ4LDEwICsxNTUsOCBA
QCB2b2lkIFN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjplc3RhYmxpc2hTV1NlcnZlckNv
bm5lY3Rpb24oU2Vzc2lvbklEIHNlc3NpbwogCiAgICAgU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRv
bigpLnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKCooY29ubmVjdGlvblJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUpKTsKIAotICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gU3RvcmFnZVByb2Nlc3M6
OnNpbmdsZXRvbigpLndvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbigpKQotICAgICAgICBj
b25uZWN0aW9uUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+c2V0Q29udGV4dENvbm5lY3Rpb24oY29u
bmVjdGlvbik7Ci0gICAgZWxzZQotICAgICAgICBTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCku
Y3JlYXRlV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKCk7CisgICAgaWYgKCFTdG9yYWdl
UHJvY2Vzczo6c2luZ2xldG9uKCkuZ2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpKQor
ICAgICAgICBTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkuY3JlYXRlU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbigpOwogfQogCiB2b2lkIFN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjpy
ZW1vdmVTV1NlcnZlckNvbm5lY3Rpb24odWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIpCkBAIC0xNjUsMTEgKzE3MCw4IEBAIHZvaWQgU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b246OnJlbW92ZVNXU2VydmVyQ29ubmVjdGlvbih1aW50NjRfdCBzZXJ2ZXJDb25uCiAKIHZvaWQg
U3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OndvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVj
dGlvbkNyZWF0ZWQoKQogewotICAgIGF1dG8qIGlwY0Nvbm5lY3Rpb24gPSBTdG9yYWdlUHJvY2Vz
czo6c2luZ2xldG9uKCkud29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKCk7Ci0gICAgQVNT
RVJUKGlwY0Nvbm5lY3Rpb24pOwotCi0gICAgZm9yIChhdXRvJiBzd0Nvbm5lY3Rpb24gOiBtX3N3
Q29ubmVjdGlvbnMudmFsdWVzKCkpCi0gICAgICAgIHN3Q29ubmVjdGlvbi0+c2V0Q29udGV4dENv
bm5lY3Rpb24oaXBjQ29ubmVjdGlvbik7CisgICAgZm9yIChhdXRvKiBzZXJ2ZXIgOiBTV1NlcnZl
cjo6YWxsU2VydmVycygpKQorICAgICAgICBzZXJ2ZXItPnNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b25DcmVhdGVkKCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTNjZmI3ZmEzZmEuLjBlNzc4YTBhMGRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEw
MTksNiArMTAxOSw4IEBACiAJCTUxNEJERUQzMTZDOThFREQwMEU0RTI1RSAvKiBTdGF0aXN0aWNz
UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE0QkRFRDIxNkM5OEVERDAwRTRFMjVFIC8qIFN0YXRpc3RpY3NSZXF1ZXN0LmggKi87IH07CiAJ
CTUxNEQ5RjU3MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEQ5RjU1MTkxMTlEMzUw
MDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIuaCAqLzsgfTsKIAkJNTE0RDlGNTgxOTExOUQz
NTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEQ5RjU2MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2
aWNlc0NvbnRyb2xsZXIubW0gKi87IH07CisJCTUxNTI2MkJDMUZCOTUxNUQwMDcwRTU3OSAvKiBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1MjYyQkIxRkI5NTEzMTAwNzBFNTc5IC8q
IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmggKi87IH07CisJCTUxNTI2
MkJEMUZCOTUxNjEwMDcwRTU3OSAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE1MjYyQkExRkI5NTEzMTAwNzBFNTc5IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUxNTc4QjgzMTIwOUVDRUYwMEEz
N0M0QSAvKiBBUElEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTU3OEI4MjEyMDlFQ0VGMDBBMzdDNEEgLyogQVBJRGF0YS5oICovOyB9OwogCQk1
MTVCRTE3NzFENTNGRTg3MDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJFMTczMUQ1M0ZEREMw
MEREN0M2OCAvKiBXZWJHYW1lcGFkUHJvdmlkZXIuY3BwICovOyB9OwogCQk1MTVCRTE3OTFENTNG
RThGMDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVCRTE3NDFENTNGRERDMDBERDdDNjggLyogV2Vi
R2FtZXBhZFByb3ZpZGVyLmggKi87IH07CkBAIC0xMDU4LDYgKzEwNjAsNyBAQAogCQk1MTdERDVC
RTE4MERBN0QzMDA4MTY2MEIgLyogU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdERDVCQzE4MERBN0QzMDA4MTY2
MEIgLyogU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAgKi87IH07CiAJCTUxN0RENUJGMTgwREE3RDMw
MDgxNjYwQiAvKiBTdG9yYWdlUHJvY2Vzc1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdERDVCRDE4MERBN0QzMDA4MTY2MEIgLyogU3RvcmFn
ZVByb2Nlc3NQcm94eS5oICovOyB9OwogCQk1MTgzRERFQzE2MzBCREZDMDA4QkU1QzcgLyogTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMDVCMEQ0MTYyRjdBN0EwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwICovOyB9OworCQk1MTg1NDMwRTFGQjY4MTYxMDA0NzhGOTUgLyogV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODU0MzBEMUZCNjgwRkEwMDQ3OEY5NSAvKiBXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwICovOyB9OwogCQk1MTg3MUI1QjEyN0NCODlEMDBG
NzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE4NzFCNTkxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRN
ZW51LmNwcCAqLzsgfTsKIAkJNTE4NzFCNUMxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRN
ZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg3
MUI1QTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuaCAqLzsgfTsKIAkJNTE4QUNB
RUExMkFFRTZCQjAwQjA0QjgzIC8qIFdLUHJvdGVjdGlvblNwYWNlVHlwZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxOEFDQUU5MTJBRUU2QkIwMEIw
NEI4MyAvKiBXS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMzNTksNiArMzM2Miw5IEBACiAJCTUxNEJERUQy
MTZDOThFREQwMEU0RTI1RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdGF0aXN0aWNzUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTREOUY1NTE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VzQ29udHJvbGxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTREOUY1NjE5MTE5RDM1MDAwMDYzQTcg
LyogU2VydmljZXNDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gU2VydmljZXNDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MTUyNjJCOTFGQjk1MDM1MDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTE1MjYyQkExRkI5NTEzMTAwNzBFNTc5IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTUyNjJCQjFGQjk1MTMxMDA3MEU1NzkgLyog
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1NzhCODIxMjA5RUNFRjAwQTM3QzRB
IC8qIEFQSURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRGF0YS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVCRTE3MzFENTNGRERDMDBERDdDNjgg
LyogV2ViR2FtZXBhZFByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYkdhbWVwYWRQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxNUJFMTc0MUQ1M0ZEREMwMEREN0M2OCAvKiBXZWJHYW1lcGFkUHJvdmlkZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR2FtZXBhZFByb3ZpZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMzk2LDYgKzM0MDIsOCBAQAogCQk1MTdERDVCQzE4
MERBN0QzMDA4MTY2MEIgLyogU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3REQ1QkQxODBEQTdEMzAwODE2NjBCIC8qIFN0b3JhZ2VQ
cm9jZXNzUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZVBy
b2Nlc3NQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTgzQjM5MzEzNzlG
ODVDMDBFODc1NEUgLyogU2hpbS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBh
dGggPSBTaGltLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTg1NDMw
QzFGQjY4MEY5MDA0NzhGOTUgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTg1NDMwRDFGQjY4MEZBMDA0
NzhGOTUgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODcxQjU5MTI3Q0I4OUQwMEY3NjIz
MiAvKiBXZWJDb250ZXh0TWVudS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJDb250ZXh0TWVudS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
ODcxQjVBMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0TWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MThBQ0FFOTEyQUVFNkJCMDBCMDRCODMgLyogV0tQcm90ZWN0aW9uU3BhY2VU
eXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1Byb3RlY3Rpb25TcGFj
ZVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MzgxLDYgKzYzODksOSBA
QAogCQkJCTUxN0E1MzA5MUY0NzlFMzEwMERDREMwQSAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb24u
Y3BwICovLAogCQkJCTUxN0E1MzA3MUY0NzlFMzEwMERDREMwQSAvKiBXZWJTV1NlcnZlckNvbm5l
Y3Rpb24uaCAqLywKIAkJCQk1MTdBNTMwODFGNDc5RTMxMDBEQ0RDMEEgLyogV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLm1lc3NhZ2VzLmluICovLAorCQkJCTUxODU0MzBEMUZCNjgwRkEwMDQ3OEY5NSAv
KiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwICovLAorCQkJCTUxODU0MzBDMUZC
NjgwRjkwMDQ3OEY5NSAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCAqLywKKwkJ
CQk1MTUyNjJCOTFGQjk1MDM1MDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLm1lc3NhZ2VzLmluICovLAogCQkJKTsKIAkJCXBhdGggPSBTZXJ2aWNlV29ya2VyOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTgyMDAsNiArODIxMSw4IEBACiAJCQkJNDYwRjQ4
OEUxRjk5NkY2QzAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2Fn
ZXMuaCAqLywKIAkJCQk1MTdBNTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQk1MTdBNTJENjFGNDNBOUI2MDBEQ0RD
MEEgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCAqLywKKwkJCQk1MTUyNjJCQTFG
Qjk1MTMxMDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLywKKwkJCQk1MTUyNjJCQjFGQjk1MTMxMDA3MEU1NzkgLyogV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCAqLywKIAkJCQkxQUFGMDhCNTE5MjY5RTZE
MDBCNjM5MEMgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LywKIAkJCQkxQUFGMDhCNjE5MjY5RTZEMDBCNjM5MEMgLyogV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyTWVzc2FnZXMuaCAqLywKIAkJCQk3QzM2MUQ3NjE5MjgwM0JEMDAzNkE1OUQgLyogV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtOTA1OSw2
ICs5MDcyLDcgQEAKIAkJCQlCQzdCNjI1MjEyQTQzQzk2MDBEMTc0QTQgLyogV2ViUGFnZUdyb3Vw
RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3QjYyMTUxMkE0MjE5QTAwRDE3NEE0IC8qIFdl
YlBhZ2VHcm91cFByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDlFQTMwRjFBOTZDQkZGMDAy
RDI4MDcgLyogV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1MTUyNjJCQzFGQjk1MTVEMDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMwQ0U3MkExMTI0N0U3MUQwMEJDMEVD
NCAvKiBXZWJQYWdlTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENUM5RDA2MTlDODFE
OEYwMEIzQzVDMSAvKiBXZWJQYWdlT3ZlcmxheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMzJE
RDExMEY0Mzg5RjAwNThDMTVBIC8qIFdlYlBhZ2VQcm94eS5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
MDg1OCw2ICsxMDg3Miw3IEBACiAJCQkJOUZCNUYzOTQxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29u
dGV4dFByaXZhdGVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMzA5MzQ1QTEzMTVCOTk4MDA5
N0E3QkMgLyogV0tDb29raWVNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExRkI2ODI1
MUY2RTUxODIwMEM0M0Y5RiAvKiBXS0NyYXNoUmVwb3J0ZXIubW0gaW4gU291cmNlcyAqLywKKwkJ
CQk1MTUyNjJCRDFGQjk1MTYxMDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMkY1OEY5MTJBODhB
NTQwMDYyOTUzMCAvKiBXS0NyZWRlbnRpYWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0MDc1
RjcxMjRGRjAyNzAwNjhGMjBBIC8qIFdLRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUZG
NDkwMDE4MzNERTc4MDA5QUIxNUEgLyogV0tEZXByZWNhdGVkRnVuY3Rpb25zLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMTA5MjYsNiArMTA5NDEsNyBAQAogCQkJCTM3QzRDMDkzMTgxNEIzQUYwMDM2
ODhCOSAvKiBXS05TQXJyYXkubW0gaW4gU291cmNlcyAqLywKIAkJCQkzNzNDRUFENTE4NTQxN0FF
MDA4QzM2M0QgLyogV0tOU0RhdGEubW0gaW4gU291cmNlcyAqLywKIAkJCQkzNzFBMTk0MTE4MjRE
MjkzMDBGMzJBNUUgLyogV0tOU0RpY3Rpb25hcnkubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTg1
NDMwRTFGQjY4MTYxMDA0NzhGOTUgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTM3MkNBRjBDMTgzM0ZEOTEwMDQwQUMyNyAvKiBXS05TRXJy
b3IubW0gaW4gU291cmNlcyAqLywKIAkJCQkzNzVFMEUxMzFENjY0MzI3MDBFRkVDMkMgLyogV0tO
U051bWJlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3OEUxQTQ5MTgyMDhDRDYwMDMxMDA3QSAv
KiBXS05TU3RyaW5nLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHAKaW5kZXggZWRiMjQ1NDczOTkuLmRmZGM2MmY4NmQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiV2ViUHJl
ZmVyZW5jZXNLZXlzLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
aCIKICNpbmNsdWRlICJXZWJTb2NrZXRQcm92aWRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRWRp
dG9yQ2xpZW50Lmg+CkBAIC05NSw4ICs5NiwxMCBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJgog
ICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0RmV0Y2hBUElF
bmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6ZmV0Y2hB
UElFbmFibGVkS2V5KCkpKTsKIH0KIAotdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKK3ZvaWQgV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29ya2VyKGNvbnN0IFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKIHsKKyAgICBMT0coU2VydmljZVdvcmtlciwgIldlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlciBmb3Igd29ya2Vy
ICVzIiwgZGF0YS5zZXJ2aWNlV29ya2VySWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CisKICAgICAvLyBGSVhNRTogUHJvdmlkZSBhIHNlbnNpY2FsIHNlc3Npb24gSUQu
CiAgICAgYXV0byBzZXNzaW9uSUQgPSBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgp
OwogCkBAIC0xMTMsNyArMTE2LDcgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIodWludDY0X3Qgc2VydmVyQ29ubmVjdGkKICAgICBhdXRv
IGZyYW1lTG9hZGVyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VyRnJhbWVM
b2FkZXJDbGllbnQ+KHNlc3Npb25JRCwgbV9wYWdlSUQsICsrbV9wcmV2aW91c1NlcnZpY2VXb3Jr
ZXJJRCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lID0g
ZnJhbWVMb2FkZXJDbGllbnQucmVsZWFzZSgpOwogCi0gICAgYXV0byBzZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkgPSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZShXVEZNb3ZlKHBhZ2VD
b25maWd1cmF0aW9uKSwgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGRhdGEsIHNlc3Npb25J
RCwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FjaGVTdG9yYWdlUHJvdmlkZXIoKSk7CisgICAg
YXV0byBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgPSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6
OmNyZWF0ZShXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSwgZGF0YSwgc2Vzc2lvbklELCBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZVN0b3JhZ2VQcm92aWRlcigpKTsKICAgICBTV0NvbnRl
eHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5yZWdpc3RlclNlcnZpY2VXb3JrZXJUaHJlYWRGb3JJbnN0
YWxsKFdURk1vdmUoc2VydmljZVdvcmtlclRocmVhZFByb3h5KSk7CiAKICAgICBMT0coU2Vydmlj
ZVdvcmtlciwgIkNvbnRleHQgcHJvY2VzcyBQSUQ6ICVpIGNyZWF0ZWQgd29ya2VyIHRocmVhZFxu
IiwgZ2V0cGlkKCkpOwpAQCAtMTIxLDE1ICsxMjQsMTAgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIodWludDY0X3Qgc2VydmVyQ29ubmVj
dGkKIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c2VydmljZVdvcmtlclN0
YXJ0ZWRXaXRoTWVzc2FnZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBleGNlcHRpb25NZXNzYWdlKQogewotICAgIGF1dG8qIHRo
cmVhZFByb3h5ID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlclRo
cmVhZFByb3h5KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICBBU1NFUlQodGhyZWFkUHJv
eHkpOwotICAgIAotICAgIGF1dG8mIGRhdGEgPSB0aHJlYWRQcm94eS0+dGhyZWFkKCkuY29udGV4
dERhdGEoKTsKLSAgICAKICAgICBpZiAoZXhjZXB0aW9uTWVzc2FnZS5pc0VtcHR5KCkpCi0gICAg
ICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQ
cm9jZXNzOjpTZXJ2aWNlV29ya2VyQ29udGV4dFN0YXJ0ZWQodGhyZWFkUHJveHktPnRocmVhZCgp
LnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCksIGRhdGEucmVnaXN0cmF0aW9uS2V5LCBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciksIDApOworICAgICAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQ
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlNj
cmlwdENvbnRleHRTdGFydGVkKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSwgMCk7CiAgICAgZWxz
ZQotICAgICAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpT
dG9yYWdlUHJvY2Vzczo6U2VydmljZVdvcmtlckNvbnRleHRGYWlsZWRUb1N0YXJ0KHRocmVhZFBy
b3h5LT50aHJlYWQoKS5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpLCBkYXRhLnJlZ2lzdHJh
dGlvbktleSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGV4Y2VwdGlvbk1lc3NhZ2UpLCAwKTsK
KyAgICAgICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZXhjZXB0aW9uTWVzc2FnZSksIDApOwogfQogCiB2b2lk
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHN0ZDo6b3B0
aW9uYWw8U2VydmljZVdvcmtlcklkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zKQpAQCAtMTQ5
LDE1ICsxNDcsMTMgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6cG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShTZXJ2aWMKICAgICBTV0NvbnRleHRNYW5h
Z2VyOjpzaW5nbGV0b24oKS5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKGRl
c3RpbmF0aW9uSWRlbnRpZmllciwgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChtZXNzYWdl
LnZlY3RvcigpKSwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2luKTsKIH0KIAotdm9pZCBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZmlyZUluc3RhbGxFdmVudCh1aW50NjRfdCBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllcikKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpcmVJbnN0YWxsRXZl
bnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBVTlVTRURfUEFS
QU0oc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpOwogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpLmZpcmVJbnN0YWxsRXZlbnQoaWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpcmVBY3RpdmF0ZUV2ZW50KHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVy
KQordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZmlyZUFjdGl2YXRlRXZlbnQo
U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBVTlVTRURfUEFSQU0o
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpOwogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmds
ZXRvbigpLmZpcmVBY3RpdmF0ZUV2ZW50KGlkZW50aWZpZXIpOwogfQogCkBAIC0xNjgsMjggKzE2
NCwxNyBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZXJ2aQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpkaWRGaW5pc2hJbnN0YWxsKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCiB7Ci0gICAgYXV0byog
dGhyZWFkUHJveHkgPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAgIEFTU0VSVCh0aHJlYWRQ
cm94eSk7Ci0KLSAgICBhdXRvJiBkYXRhID0gdGhyZWFkUHJveHktPnRocmVhZCgpLmNvbnRleHRE
YXRhKCk7Ci0gICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
U3RvcmFnZVByb2Nlc3M6OkRpZEZpbmlzaFNlcnZpY2VXb3JrZXJJbnN0YWxsKHRocmVhZFByb3h5
LT50aHJlYWQoKS5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpLCBkYXRhLnJlZ2lzdHJhdGlv
bktleSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHdhc1N1Y2Nlc3NmdWwpLCAwKTsKKyAgICBt
X2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246OkRpZEZpbmlzaEluc3RhbGwoc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIHdhc1N1Y2Nlc3NmdWwpLCAwKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6ZGlkRmluaXNoQWN0aXZhdGlvbihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2
aWNlV29ya2VySWRlbnRpZmllcikKIHsKLSAgICBhdXRvKiB0aHJlYWRQcm94eSA9IFNXQ29udGV4
dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShzZXJ2aWNlV29y
a2VySWRlbnRpZmllcik7Ci0gICAgQVNTRVJUKHRocmVhZFByb3h5KTsKLQotICAgIGF1dG8mIGRh
dGEgPSB0aHJlYWRQcm94eS0+dGhyZWFkKCkuY29udGV4dERhdGEoKTsKLSAgICBtX2Nvbm5lY3Rp
b25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6RGlkRmlu
aXNoU2VydmljZVdvcmtlckFjdGl2YXRpb24odGhyZWFkUHJveHktPnRocmVhZCgpLnNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyKCksIGRhdGEucmVnaXN0cmF0aW9uS2V5LCBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciksIDApOworICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6RGlkRmluaXNoQWN0aXZh
dGlvbihzZXJ2aWNlV29ya2VySWRlbnRpZmllciksIDApOwogfQogCiB2b2lkIFdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBoYXNQZW5k
aW5nRXZlbnRzKQogewotICAgIGF1dG8qIHRocmVhZFByb3h5ID0gU1dDb250ZXh0TWFuYWdlcjo6
c2luZ2xldG9uKCkuc2VydmljZVdvcmtlclRocmVhZFByb3h5KHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKTsKLSAgICBBU1NFUlQodGhyZWFkUHJveHkpOwotCi0gICAgbV9jb25uZWN0aW9uVG9TdG9y
YWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OlNldFNlcnZpY2VXb3Jr
ZXJIYXNQZW5kaW5nRXZlbnRzKHRocmVhZFByb3h5LT50aHJlYWQoKS5zZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllcigpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgaGFzUGVuZGluZ0V2ZW50cyks
IDApOworICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6U2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdF
dmVudHMoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGhhc1BlbmRpbmdFdmVudHMpLCAwKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgK
aW5kZXggOGRhNmE1ZDZlYWQuLmZhMmFjODM5MmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmgKQEAgLTU4LDExICs1OCwxMSBAQCBwcml2YXRlOgogCiAgICAgLy8gSVBDIG1lc3Nh
Z2VzLgogICAgIHZvaWQgc2VydmljZVdvcmtlclN0YXJ0ZWRXaXRoTWVzc2FnZShXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBleGNlcHRpb25NZXNzYWdlKSBm
aW5hbDsKLSAgICB2b2lkIGluc3RhbGxTZXJ2aWNlV29ya2VyKHVpbnQ2NF90IHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEm
KTsKKyAgICB2b2lkIGluc3RhbGxTZXJ2aWNlV29ya2VyKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSYpOwogICAgIHZvaWQgc3RhcnRGZXRjaCh1aW50NjRfdCBzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyPiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmKTsKICAgICB2b2lkIHBvc3RNZXNzYWdl
VG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3Nh
Z2UsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBzb3VyY2VJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7Ci0gICAgdm9pZCBmaXJlSW5z
dGFsbEV2ZW50KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudCh1aW50
NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIpOworICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllcik7CisgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllcik7CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5l
Y3Rpb25Ub1N0b3JhZ2VQcm9jZXNzOwogICAgIHVpbnQ2NF90IG1fcGFnZUlEIHsgMCB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCA1ZDI1
NTVhZGNjOS4uMTQ5OGQyNzIxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0yMywxMSArMjMsMTEgQEAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAKIG1lc3NhZ2VzIC0+IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIHsK
LSAgICBJbnN0YWxsU2VydmljZVdvcmtlcih1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
Zmllciwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBjb250ZXh0RGF0
YSkKKyAgICBJbnN0YWxsU2VydmljZVdvcmtlcihzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNvbnRleHREYXRhIGNvbnRleHREYXRhKQogICAgIFN0YXJ0RmV0Y2godWludDY0X3Qgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcj4gc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6
RmV0Y2hPcHRpb25zIG9wdGlvbnMpCiAgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbklkZW50
aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdlLCBzdHJ1Y3QgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNsaWVudElkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgU3RyaW5nIHNvdXJjZU9y
aWdpbikKLSAgICBGaXJlSW5zdGFsbEV2ZW50KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQotICAg
IEZpcmVBY3RpdmF0ZUV2ZW50KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIEZpcmVJbnN0
YWxsRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKKyAg
ICBGaXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVu
dGlmaWVyKQogfQogCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326800</attachid>
            <date>2017-11-13 14:23:31 -0800</date>
            <delta_ts>2017-11-13 15:05:35 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>104745</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaCBiL1NvdXJjZS9X
VEYvd3RmL09iamVjdElkZW50aWZpZXIuaAppbmRleCBlZjM3MTU0YTMxZS4uNjdkZWUwMjZiNWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgog
I2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gZnJpZW5kIE9iamVj
dElkZW50aWZpZXI8VT4gbWFrZU9iamVjdElkZW50aWZpZXIodWludDY0X3QpOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFU+IGZyaWVuZCBPYmplY3RJZGVudGlmaWVyPFU+IGdlbmVyYXRlT2JqZWN0
SWRlbnRpZmllcigpOwogICAgIGZyaWVuZCBzdHJ1Y3QgSGFzaFRyYWl0czxPYmplY3RJZGVudGlm
aWVyPjsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBmcmllbmQgc3RydWN0IE9iamVjdElkZW50
aWZpZXJIYXNoOwogCkBAIC04MywxMiArODMsMTQgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB1
aW50NjRfdCBtX2lkZW50aWZpZXIgeyAwIH07CisgICAgc3RhdGljIHVpbnQ2NF90IHNfY3VycmVu
dElkZW50aWZpZXI7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgT2JqZWN0SWRl
bnRpZmllcjxUPiBtYWtlT2JqZWN0SWRlbnRpZmllcih1aW50NjRfdCBpZGVudGlmaWVyKQordGVt
cGxhdGU8dHlwZW5hbWUgVD4gdWludDY0X3QgT2JqZWN0SWRlbnRpZmllcjxUPjo6c19jdXJyZW50
SWRlbnRpZmllcjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIE9iamVjdElkZW50aWZp
ZXI8VD4gZ2VuZXJhdGVPYmplY3RJZGVudGlmaWVyKCkKIHsKLSAgICBBU1NFUlQoT2JqZWN0SWRl
bnRpZmllcjxUPjo6aXNWYWxpZElkZW50aWZpZXIoaWRlbnRpZmllcikpOwotICAgIHJldHVybiBP
YmplY3RJZGVudGlmaWVyPFQ+IHsgaWRlbnRpZmllciB9OworICAgIHJldHVybiBPYmplY3RJZGVu
dGlmaWVyPFQ+IHsgKytPYmplY3RJZGVudGlmaWVyPFQ+OjpzX2N1cnJlbnRJZGVudGlmaWVyIH07
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBPYmplY3RJZGVudGlmaWVySGFzaCB7
CkBAIC0xMDYsNCArMTA4LDQgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRI
YXNoPE9iamVjdElkZW50aWZpZXI8VD4+IHsKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBX
VEY6Ok9iamVjdElkZW50aWZpZXI7Ci11c2luZyBXVEY6Om1ha2VPYmplY3RJZGVudGlmaWVyOwor
dXNpbmcgV1RGOjpnZW5lcmF0ZU9iamVjdElkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDIz
OWQ2OTllNjA1Li42NzQ5N2Y0MWExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIxOTEsNiArMjE5MSw3
IEBAIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmNwcAogd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJKb2JRdWV1ZS5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3Ry
YXRpb24uY3BwCit3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCiAKIHht
bC9ET01QYXJzZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggYmRlYjA0MGJiYmYuLjcwZmZmMTkxYmE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzU0
LDYgKzEzNTQsNyBAQAogCQk1MTgyQzI1ODFGMzE0M0NEMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29y
a2VyQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTgyQzI1NDFGMzE0MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyQ29udGFpbmVy
LmggKi87IH07CiAJCTUxODJDMjVBMUYzMTQzQ0QwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE4MkMyNEQxRjMxNDI1MDAwNTlCQTdDIC8qIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LmggKi87IH07CiAJCTUxODJDMjVDMUYzMTQzQ0QwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxODJDMjUwMUYzMTQyNTAwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b24uaCAqLzsgfTsKKwkJNTE4NTQzMEIxRkI2Nzg0NTAwNDc4Rjk1IC8qIFNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE4NTQzMDkxRkI2NzgzRTAwNDc4Rjk1IC8qIFNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTUxODVGQzc1MUJCNEM0RTgwMDEyODk4RiAvKiBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDcxOTZEMTgx
MTA2REYwMDE2REM1MSAvKiBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuaCAqLzsgfTsKIAkJNTE4
NUZDN0IxQkI0QzRFODAwMTI4OThGIC8qIElEQkN1cnNvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2NDVCNDExQjlGODg5QjAwRjc4OUNFIC8qIElE
QkN1cnNvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTUxODVGQzdFMUJCNEM0RTgwMDEyODk4RiAvKiBJREJDdXJzb3JXaXRoVmFsdWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjQ1QjQzMUI5Rjg4
OUIwMEY3ODlDRSAvKiBJREJDdXJzb3JXaXRoVmFsdWUuaCAqLzsgfTsKQEAgLTE0MjUsNyArMTQy
Niw3IEBACiAJCTUxRTY4MjEwMTYzODczMDIwMDNCQkYzQyAvKiBMb2FkZXJTdHJhdGVneS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFNjgyMEYxNjM4
NzMwMjAwM0JCRjNDIC8qIExvYWRlclN0cmF0ZWd5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFRTdCMzgxQUE1MEIwNTAwRjkyQjIxIC8qIFJl
c291cmNlTG9hZEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRUU3QjM3MUFBNTBCMDUwMEY5MkIyMSAvKiBSZXNvdXJjZUxvYWRJbmZvLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFRUFBNzQx
QkVGRkFCMTAwMjE4MDA4IC8qIEluZGV4VmFsdWVFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFRUFBNzIxQkVGRkE3OTAwMjE4MDA4IC8qIElu
ZGV4VmFsdWVFbnRyeS5oICovOyB9OwotCQk1MUYxNzRGRTFGMzU4OTkyMDBDNzQ5NTAgLyogV29y
a2VyVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFGMTc0RkMxRjM1ODk4ODAwQzc0OTUwIC8qIFdvcmtlclR5cGUuaCAqLzsgfTsKKwkJNTFGMTc0
RkUxRjM1ODk5MjAwQzc0OTUwIC8qIFdvcmtlclR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjE3NEZDMUYzNTg5ODgwMEM3NDk1MCAvKiBXb3Jr
ZXJUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTFGMTc1MDMxRjM1OEIzQjAwQzc0OTUwIC8qIEpTU2VydmljZVdvcmtlclVwZGF0ZVZpYUNh
Y2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYx
NzUwMTFGMzU4QjM2MDBDNzQ5NTAgLyogSlNTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUuaCAq
LzsgfTsKIAkJNTFGMTc1MDYxRjM1OEJGNzAwQzc0OTUwIC8qIEpTV29ya2VyVHlwZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMTc1MDUxRjM1OEJE
RTAwQzc0OTUwIC8qIEpTV29ya2VyVHlwZS5oICovOyB9OwogCQk1MUYxNzU1RDFGM0VCQzgzMDBD
NzQ5NTAgLyogU2VydmljZVdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFGMTc1NUExRjNFQkMwQzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXIu
aCAqLzsgfTsKQEAgLTc3MDYsNiArNzcwNyw4IEBACiAJCTUxODJDMjUyMUYzMTQyNTAwMDU5QkE3
QyAvKiBKU1NlcnZpY2VXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTZXJ2aWNlV29ya2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODJDMjUzMUYzMTQyNTAwMDU5QkE3QyAv
KiBKU1NlcnZpY2VXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4MkMyNTQxRjMxNDI1MDAwNTlC
QTdDIC8qIEpTU2VydmljZVdvcmtlckNvbnRhaW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NlcnZp
Y2VXb3JrZXJDb250YWluZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4NTQz
MDkxRkI2NzgzRTAwNDc4Rjk1IC8qIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4NTQzMEExRkI2NzgzRjAwNDc4Rjk1
IC8qIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTg1RkNCQzFCQjVDQjc3MDAxMjg5OEYgLyogSURCQ29u
bmVjdGlvblRvU2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IElEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxODVGQ0JEMUJCNUNCNzcwMDEyODk4RiAvKiBJREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJDb25uZWN0aW9uVG9TZXJ2
ZXJEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTg4NjRERTFCQkFG
MzBGMDBFNTQwQzkgLyogVW5pcXVlSURCRGF0YWJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVW5pcXVlSURCRGF0YWJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTcxMzEsNiArMTcxMzQsOCBAQAogCQkJCTgzMTFDMDAyMUZBQTJFODkw
MEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggKi8sCiAJCQkJNTFGNjQ1OTUxRjRBNjg2MTAw
QjU0REVEIC8qIFNXU2VydmVyUmVnaXN0cmF0aW9uLmNwcCAqLywKIAkJCQk1MUY2NDU5NDFGNEE2
ODRGMDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCAqLywKKwkJCQk1MTg1NDMwQTFG
QjY3ODNGMDA0NzhGOTUgLyogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCAqLywKKwkJ
CQk1MTg1NDMwOTFGQjY3ODNFMDA0NzhGOTUgLyogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmggKi8sCiAJCQkJNTE3QTUzNDMxRjUwQzE2MTAwRENEQzBBIC8qIFNXU2VydmVyV29ya2VyLmNw
cCAqLywKIAkJCQk1MTdBNTM0MjFGNTBDMTYxMDBEQ0RDMEEgLyogU1dTZXJ2ZXJXb3JrZXIuaCAq
LywKIAkJCSk7CkBAIC0yNzQxNSw2ICsyNzQyMCw3IEBACiAJCQkJN0M4RTM0QjkxRTRBMzNCMDAw
NTRDRTIzIC8qIEpTRE9NQ29udmVydEpTT04uaCBpbiBIZWFkZXJzICovLAogCQkJCTdDOEUzNEJB
MUU0QTMzQjAwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnROdWxsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QzhFMzRCQjFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252ZXJ0TnVsbGFibGUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTUxODU0MzBCMUZCNjc4NDUwMDQ3OEY5NSAvKiBTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTdDOEUzNEJEMUU0QTMzQjAwMDU0
Q0UyMyAvKiBKU0RPTUNvbnZlcnROdW1iZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzhFMzRC
RTFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252ZXJ0T2JqZWN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMzIzQ0ZGQTFFNUFGNkFGMDBGMEI0QTAgLyogSlNET01Db252ZXJ0UHJvbWlzZS5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwCmluZGV4IDRkMzM1MDFjNmRhLi5mMGVj
NzY2ZTM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgU2VydmljZVdvcmtlckNv
bnRleHREYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogewotICAgIHJldHVybiB7IHJlZ2lzdHJh
dGlvbktleS5pc29sYXRlZENvcHkoKSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHNjcmlwdC5p
c29sYXRlZENvcHkoKSwgc2NyaXB0VVJMLmlzb2xhdGVkQ29weSgpIH07CisgICAgcmV0dXJuIHsg
cmVnaXN0cmF0aW9uS2V5Lmlzb2xhdGVkQ29weSgpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
c2NyaXB0Lmlzb2xhdGVkQ29weSgpLCBzY3JpcHRVUkwuaXNvbGF0ZWRDb3B5KCksIHdvcmtlclR5
cGUgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCmluZGV4
IDA4YzMxYmM5NTQwLi43YTBiNDQzY2IzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaApAQCAtMjgsNiAr
MjgsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIgogI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1
ZGUgIldvcmtlclR5cGUuaCIKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIApAQCAtMzgs
NiArMzksNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcjsKICAgICBTdHJpbmcgc2Ny
aXB0OwogICAgIFVSTCBzY3JpcHRVUkw7CisgICAgV29ya2VyVHlwZSB3b3JrZXJUeXBlOwogICAg
IAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGE+IGRlY29kZShEZWNvZGVyJik7CkBAIC00OSw2ICs1MSw3IEBA
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCByZWdpc3Ry
YXRpb25LZXkgPDwgc2VydmljZVdvcmtlcklkZW50aWZpZXIgPDwgc2NyaXB0IDw8IHNjcmlwdFVS
TDsKKyAgICBlbmNvZGVyLmVuY29kZUVudW0od29ya2VyVHlwZSk7CiB9CiAKIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+CkBAIC02OSw4ICs3MiwxMiBAQCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNvZGUoRGVjb2Rlcgog
ICAgIFVSTCBzY3JpcHRVUkw7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzY3JpcHRVUkwpKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoKnJl
Z2lzdHJhdGlvbktleSksIFdURk1vdmUoKnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSwgV1RGTW92
ZShzY3JpcHQpLCBXVEZNb3ZlKHNjcmlwdFVSTCkgfX07CisgICAgCisgICAgV29ya2VyVHlwZSB3
b3JrZXJUeXBlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHdvcmtlclR5cGUpKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIAorICAgIHJldHVybiB7eyBXVEZNb3ZlKCpy
ZWdpc3RyYXRpb25LZXkpLCBXVEZNb3ZlKCpzZXJ2aWNlV29ya2VySWRlbnRpZmllciksIFdURk1v
dmUoc2NyaXB0KSwgV1RGTW92ZShzY3JpcHRVUkwpLCB3b3JrZXJUeXBlIH19OwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDRiZjE5ZDg1YjIy
Li4zYTIwYjNhOWQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTMzLDkgKzMzLDggQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OlNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
Y29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09u
bGluZSwgU2VydmljZVdvcmtlclRocmVhZCYgdGhyZWFkLCBib29sIHNob3VsZEJ5cGFzc01haW5X
b3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdp
biwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94
eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKK1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6U2VydmljZVdv
cmtlckdsb2JhbFNjb3BlKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1c2Vy
QWdlbnQsIGJvb2wgaXNPbmxpbmUsIFNlcnZpY2VXb3JrZXJUaHJlYWQmIHRocmVhZCwgYm9vbCBz
aG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZjxTZWN1cml0eU9y
aWdpbj4mJiB0b3BPcmlnaW4sIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgSURCQ2xpZW50OjpJ
REJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tl
dFByb3ZpZGVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgOiBXb3JrZXJHbG9iYWxT
Y29wZSh1cmwsIGlkZW50aWZpZXIsIHVzZXJBZ2VudCwgaXNPbmxpbmUsIHRocmVhZCwgc2hvdWxk
QnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBXVEZNb3ZlKHRvcE9yaWdpbiks
IHRpbWVPcmlnaW4sIGNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIHNlc3Npb25JRCkK
LSAgICAsIG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIpCiAgICAgLCBtX2NvbnRleHREYXRhKGNyb3NzVGhyZWFkQ29weShkYXRhKSkKICAgICAs
IG1fY2xpZW50cyhTZXJ2aWNlV29ya2VyQ2xpZW50czo6Y3JlYXRlKCp0aGlzKSkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUuaAppbmRleCBlZTQ5NTg2OTI0MC4uOTAwMTUxN2RkZjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLmgKQEAgLTUxLDggKzUxLDYgQEAgcHVibGljOgogICAgIFNlcnZpY2VXb3JrZXJDbGllbnRz
JiBjbGllbnRzKCkgeyByZXR1cm4gbV9jbGllbnRzLmdldCgpOyB9CiAgICAgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbiogcmVnaXN0cmF0aW9uKCk7CiAgICAgCi0gICAgdWludDY0X3Qgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyOyB9Ci0KICAgICB2b2lkIHNraXBXYWl0aW5nKFJlZjxEZWZlcnJlZFByb21pc2U+
JiYpOwogCiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdCBmaW5hbDsKQEAgLTYwLDkgKzU4LDggQEAgcHVibGljOgogICAgIFNlcnZpY2VXb3JrZXJU
aHJlYWQmIHRocmVhZCgpOwogCiBwcml2YXRlOgotICAgIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgU2VydmljZVdvcmtlclRocmVhZCYs
IGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBSZWY8U2Vj
dXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIElEQkNs
aWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqLCBQQUw6OlNlc3Npb25J
RCk7CisgICAgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YSYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUsIFNlcnZpY2VXb3JrZXJUaHJlYWQmLCBib29s
IHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgUmVmPFNlY3VyaXR5
T3JpZ2luPiYmIHRvcE9yaWdpbiwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBJREJDbGllbnQ6
OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKiwgUEFMOjpTZXNzaW9uSUQpOwog
Ci0gICAgdWludDY0X3QgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEgbV9jb250ZXh0RGF0YTsKICAgICBSZWY8U2VydmljZVdvcmtlckNs
aWVudHM+IG1fY2xpZW50czsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlclR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlclR5cGVzLmgKaW5kZXggYTNjNmMzZTYxNzguLmM3MGFlMDhhYTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
clR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJUeXBlcy5oCkBAIC01MCw2ICs1MCw5IEBAIGVudW0gY2xhc3MgU2hvdWxkTm90aWZ5V2hlblJl
c29sdmVkIHsgTm8sIFllcyB9OwogZW51bSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
ZmllclR5cGUgeyB9OwogdXNpbmcgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIg
PSBPYmplY3RJZGVudGlmaWVyPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyVHlw
ZT47CiAKK2VudW0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllclR5cGUgeyB9
OwordXNpbmcgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciA9IE9iamVjdElk
ZW50aWZpZXI8U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllclR5cGU+OworCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IDYzMzhlNGU3NTVlLi4yM2M2YmI2Zjhl
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTczLDkgKzczLDggQEAgcHJpdmF0
ZToKIC8vIEZJWE1FOiBVc2UgYSB2YWxpZCBpc09ubGluZSBmbGFnCiAvLyBGSVhNRTogVXNlIHZh
bGlkIHJ1bnRpbWUgZmxhZ3MKIAotU2VydmljZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRo
cmVhZCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdv
cmtlckNvbnRleHREYXRhJiBkYXRhLCBQQUw6OlNlc3Npb25JRCwgV29ya2VyTG9hZGVyUHJveHkm
IGxvYWRlclByb3h5LCBXb3JrZXJEZWJ1Z2dlclByb3h5JiBkZWJ1Z2dlclByb3h5KQorU2Vydmlj
ZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZChjb25zdCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEmIGRhdGEsIFBBTDo6U2Vzc2lvbklELCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVy
UHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkmIGRlYnVnZ2VyUHJveHkpCiAgICAgOiBXb3JrZXJU
aHJlYWQoZGF0YS5zY3JpcHRVUkwsICJzZXJ2aWNld29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50
aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpLCBBU0NJSUxpdGVyYWwoIldvcmtlclVz
ZXJBZ2VudCIpLCAvKiBpc09ubGluZSAqLyBmYWxzZSwgZGF0YS5zY3JpcHQsIGxvYWRlclByb3h5
LCBkZWJ1Z2dlclByb3h5LCBEdW1teVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2hhcmVkKCks
IFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnMgeyB9LCBmYWxzZSwgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShkYXRhLnNjcmlw
dFVSTCkuZ2V0KCksIE1vbm90b25pY1RpbWU6Om5vdygpLCBudWxscHRyLCBudWxscHRyLCBKU0M6
OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpLCBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNz
aW9uSUQoKSkKLSAgICAsIG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIpCiAgICAgLCBtX2RhdGEoZGF0YS5pc29sYXRlZENvcHkoKSkKICAgICAs
IG1fd29ya2VyT2JqZWN0UHJveHkoRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJl
ZCgpKQogewpAQCAtODYsNyArODUsNyBAQCBTZXJ2aWNlV29ya2VyVGhyZWFkOjp+U2VydmljZVdv
cmtlclRocmVhZCgpID0gZGVmYXVsdDsKIAogUmVmPFdvcmtlckdsb2JhbFNjb3BlPiBTZXJ2aWNl
V29ya2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09u
bGluZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBz
aG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZjxTZWN1cml0eU9y
aWdpbj4mJiB0b3BPcmlnaW4sIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKQogewotICAgIHJldHVybiBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmNy
ZWF0ZShtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBtX2RhdGEsIHVybCwgaWRlbnRpZmll
ciwgdXNlckFnZW50LCBpc09ubGluZSwgKnRoaXMsIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRl
bnRTZWN1cml0eVBvbGljeSwgV1RGTW92ZSh0b3BPcmlnaW4pLCB0aW1lT3JpZ2luLCBpZGJDb25u
ZWN0aW9uUHJveHkoKSwgc29ja2V0UHJvdmlkZXIoKSwgc2Vzc2lvbklEKTsKKyAgICByZXR1cm4g
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUobV9kYXRhLCB1cmwsIGlkZW50aWZpZXIs
IHVzZXJBZ2VudCwgaXNPbmxpbmUsICp0aGlzLCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50
U2VjdXJpdHlQb2xpY3ksIFdURk1vdmUodG9wT3JpZ2luKSwgdGltZU9yaWdpbiwgaWRiQ29ubmVj
dGlvblByb3h5KCksIHNvY2tldFByb3ZpZGVyKCksIHNlc3Npb25JRCk7CiB9CiAKIHZvaWQgU2Vy
dmljZVdvcmtlclRocmVhZDo6cnVuRXZlbnRMb29wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaApp
bmRleCA3M2RlY2Q1MDM5MC4uODRhOGUzYjQ3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgK
QEAgLTYwLDcgKzYwLDYgQEAgcHVibGljOgogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudCgpOwog
ICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoKTsKIAotICAgIHVpbnQ2NF90IHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllcjsgfQogICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgY29udGV4dERhdGEo
KSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KIAogICAgIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuc2VydmljZVdvcmtlcklkZW50aWZp
ZXI7IH0KQEAgLTcwLDEyICs2OSwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBydW5FdmVudExv
b3AoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBTZXJ2aWNlV29y
a2VyVGhyZWFkKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEmLCBQQUw6OlNlc3Npb25JRCwgV29ya2VyTG9hZGVyUHJveHkm
LCBXb3JrZXJEZWJ1Z2dlclByb3h5Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgU2VydmljZVdvcmtl
clRocmVhZChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBQQUw6OlNlc3Npb25JRCwg
V29ya2VyTG9hZGVyUHJveHkmLCBXb3JrZXJEZWJ1Z2dlclByb3h5Jik7CiAKICAgICB2b2lkIHVw
ZGF0ZUV4dGVuZGVkRXZlbnRzU2V0KEV4dGVuZGFibGVFdmVudCogbmV3RXZlbnQgPSBudWxscHRy
KTsKICAgICBib29sIGhhc1BlbmRpbmdFdmVudHMoKSBjb25zdCB7IHJldHVybiAhbV9leHRlbmRl
ZEV2ZW50cy5pc0VtcHR5KCk7IH0KIAotICAgIHVpbnQ2NF90IG1fc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXI7CiAgICAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIG1fZGF0YTsKICAgICBXb3Jr
ZXJPYmplY3RQcm94eSYgbV93b3JrZXJPYmplY3RQcm94eTsKICAgICBWZWN0b3I8UmVmPEV4dGVu
ZGFibGVFdmVudD4+IG1fZXh0ZW5kZWRFdmVudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZFByb3h5LmNwcAppbmRleCAxNTcwY2YwZjBiYS4uZTdkYmQ0MDllODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5LmNwcApAQCAtMzYsMTEgKzM2LDYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1SZWY8U2VydmljZVdvcmtlclRocmVhZFByb3h5PiBTZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHk6OmNyZWF0ZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0aW9u
LCB1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhJiBkYXRhLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENhY2hlU3RvcmFn
ZVByb3ZpZGVyJiBjYWNoZVN0b3JhZ2VQcm92aWRlcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgeyBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9u
KSwgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGRhdGEsIHNlc3Npb25JRCwgY2FjaGVTdG9y
YWdlUHJvdmlkZXIgfSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgVW5pcXVlUmVmPFBhZ2U+IGNyZWF0
ZVBhZ2VGb3JTZXJ2aWNlV29ya2VyKFBhZ2VDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbiwg
Y29uc3QgVVJMJiB1cmwpCiB7CiAgICAgYXV0byBwYWdlID0gbWFrZVVuaXF1ZVJlZjxQYWdlPihX
VEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKQEAgLTUyLDEwICs0NywxMCBAQCBzdGF0aWMgaW5saW5l
IFVuaXF1ZVJlZjxQYWdlPiBjcmVhdGVQYWdlRm9yU2VydmljZVdvcmtlcihQYWdlQ29uZmlndXJh
dGlvbiYmIGNvbgogICAgIHJldHVybiBwYWdlOwogfQogCi1TZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHk6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25m
aWd1cmF0aW9uLCB1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENh
Y2hlU3RvcmFnZVByb3ZpZGVyJiBjYWNoZVN0b3JhZ2VQcm92aWRlcikKK1NlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5KFBhZ2VDb25maWd1cmF0aW9uJiYg
cGFnZUNvbmZpZ3VyYXRpb24sIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSwg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDYWNoZVN0b3JhZ2VQcm92aWRlciYgY2FjaGVTdG9y
YWdlUHJvdmlkZXIpCiAgICAgOiBtX3BhZ2UoY3JlYXRlUGFnZUZvclNlcnZpY2VXb3JrZXIoV1RG
TW92ZShwYWdlQ29uZmlndXJhdGlvbiksIGRhdGEuc2NyaXB0VVJMKSkKICAgICAsIG1fZG9jdW1l
bnQoKm1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKLSAgICAsIG1fc2VydmljZVdvcmtl
clRocmVhZChTZXJ2aWNlV29ya2VyVGhyZWFkOjpjcmVhdGUoc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIGRhdGEsIHNlc3Npb25JRCwgKnRoaXMsICp0aGlzKSkKKyAgICAsIG1fc2VydmljZVdv
cmtlclRocmVhZChTZXJ2aWNlV29ya2VyVGhyZWFkOjpjcmVhdGUoZGF0YSwgc2Vzc2lvbklELCAq
dGhpcywgKnRoaXMpKQogICAgICwgbV9jYWNoZVN0b3JhZ2VQcm92aWRlcihjYWNoZVN0b3JhZ2VQ
cm92aWRlcikKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1faW5zcGVjdG9y
UHJveHkoKnRoaXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCmluZGV4IDQxMGIw
ZWFlMWMxLi5hOWM1OTdlNmY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgK
QEAgLTQ3LDE0ICs0NywxNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOwogCiBj
bGFzcyBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8U2VydmljZVdvcmtlclRocmVhZFByb3h5PiwgcHVibGljIFdvcmtlckxvYWRlclBy
b3h5LCBwdWJsaWMgV29ya2VyRGVidWdnZXJQcm94eSB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk+IGNyZWF0ZShQYWdlQ29u
ZmlndXJhdGlvbiYmLCB1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3Qg
U2VydmljZVdvcmtlckNvbnRleHREYXRhJiwgUEFMOjpTZXNzaW9uSUQsIENhY2hlU3RvcmFnZVBy
b3ZpZGVyJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxTZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHk+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShzdGQ6OmZv
cndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICB9CiAKICAgICBTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyVGhyZWFkLT5p
ZGVudGlmaWVyKCk7IH0KICAgICBTZXJ2aWNlV29ya2VyVGhyZWFkJiB0aHJlYWQoKSB7IHJldHVy
biBtX3NlcnZpY2VXb3JrZXJUaHJlYWQuZ2V0KCk7IH0KICAgICBTZXJ2aWNlV29ya2VySW5zcGVj
dG9yUHJveHkmIGluc3BlY3RvclByb3h5KCkgeyByZXR1cm4gbV9pbnNwZWN0b3JQcm94eTsgfQog
CiBwcml2YXRlOgotICAgIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShQYWdlQ29uZmlndXJhdGlv
biYmLCB1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdv
cmtlckNvbnRleHREYXRhJiwgUEFMOjpTZXNzaW9uSUQsIENhY2hlU3RvcmFnZVByb3ZpZGVyJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgU2VydmljZVdvcmtlclRocmVhZFByb3h5KFBhZ2VDb25maWd1
cmF0aW9uJiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYsIFBBTDo6U2Vzc2lvbklE
LCBDYWNoZVN0b3JhZ2VQcm92aWRlciYpOwogCiAgICAgLy8gV29ya2VyTG9hZGVyUHJveHkKICAg
ICBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzayYmLCBjb25zdCBTdHJpbmcmIG1vZGUpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCA1ZWE1
NDRmZTM2Mi4uMDc5YjVlN2IwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0zMywxOSArMzMsMjAgQEAKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU1dTZXJ2ZXJKb2JRdWV1ZS5oIgogI2luY2x1ZGUgIlNX
U2VydmVyUmVnaXN0cmF0aW9uLmgiCisjaW5jbHVkZSAiU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmgiCiAjaW5jbHVkZSAiU1dTZXJ2ZXJXb3JrZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9y
aWdpbi5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIgogI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2JE
YXRhLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIGdlbmVyYXRlU2VydmljZVdvcmtlcklkZW50aWZpZXIoKQogewotICAg
IHN0YXRpYyB1aW50NjRfdCBpZGVudGlmaWVyID0gMDsKLSAgICByZXR1cm4gbWFrZU9iamVjdElk
ZW50aWZpZXI8U2VydmljZVdvcmtlcklkZW50aWZpZXJUeXBlPigrK2lkZW50aWZpZXIpOworICAg
IHJldHVybiBnZW5lcmF0ZU9iamVjdElkZW50aWZpZXI8U2VydmljZVdvcmtlcklkZW50aWZpZXJU
eXBlPigpOwogfQogCiBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbihTV1NlcnZlciYg
c2VydmVyLCB1aW50NjRfdCBpZGVudGlmaWVyKQpAQCAtNjAsNiArNjEsMTIgQEAgU1dTZXJ2ZXI6
OkNvbm5lY3Rpb246On5Db25uZWN0aW9uKCkKICAgICBtX3NlcnZlci51bnJlZ2lzdGVyQ29ubmVj
dGlvbigqdGhpcyk7CiB9CiAKK0hhc2hTZXQ8U1dTZXJ2ZXIqPiYgU1dTZXJ2ZXI6OmFsbFNlcnZl
cnMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFNXU2VydmVyKj4+IHNl
cnZlcnM7CisgICAgcmV0dXJuIHNlcnZlcnM7Cit9CisKIFNXU2VydmVyOjp+U1dTZXJ2ZXIoKQog
ewogICAgIFJFTEVBU0VfQVNTRVJUKG1fY29ubmVjdGlvbnMuaXNFbXB0eSgpKTsKQEAgLTc0LDYg
KzgxLDggQEAgU1dTZXJ2ZXI6On5TV1NlcnZlcigpCiAgICAgLy8gQnV0IG9uY2UgaXQgZG9lcyBz
dGFydCBoYXBwZW5pbmcsIHRoaXMgQVNTRVJUIHdpbGwgY2F0Y2ggdXMgZG9pbmcgaXQgd3Jvbmcu
CiAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX3Rhc2tUaHJlYWRMb2NrKTsKICAgICBBU1NFUlQo
IW1fdGFza1RocmVhZCk7CisgICAgCisgICAgYWxsU2VydmVycygpLnJlbW92ZSh0aGlzKTsKIH0K
IAogU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIFNXU2VydmVyOjpnZXRSZWdpc3RyYXRpb24oY29uc3Qg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQpAQCAtMTEyLDIx
ICsxMjEsNiBAQCB2b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpmaW5pc2hGZXRjaGluZ1Njcmlw
dEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaAogICAgIG1fc2VydmVyLnNjcmlwdEZl
dGNoRmluaXNoZWQoKnRoaXMsIHJlc3VsdCk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rp
b246OmRpZEZpbmlzaEluc3RhbGwoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYg
a2V5LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9v
bCB3YXNTdWNjZXNzZnVsKQotewotICAgIG1fc2VydmVyLmRpZEZpbmlzaEluc3RhbGwoKnRoaXMs
IGtleSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHdhc1N1Y2Nlc3NmdWwpOwotfQotCi12b2lk
IFNXU2VydmVyOjpDb25uZWN0aW9uOjpkaWRGaW5pc2hBY3RpdmF0aW9uKGNvbnN0IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkmIGtleSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIpCi17Ci0gICAgbV9zZXJ2ZXIuZGlkRmluaXNoQWN0aXZhdGlvbigq
dGhpcywga2V5LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXI6
OkNvbm5lY3Rpb246OnNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIGhhc1BlbmRpbmdFdmVu
dHMpCi17Ci0gICAgbV9zZXJ2ZXIuc2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHMoKnRo
aXMsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBoYXNQZW5kaW5nRXZlbnRzKTsKLX0KLQogdm9p
ZCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoY29u
c3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYga2V5KQogewogICAgIG1fc2VydmVyLmRp
ZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKCp0aGlzLCBrZXkpOwpAQCAtMTQyLDE4ICsxMzYs
OSBAQCB2b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpyZW1vdmVTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSW5TZXJ2ZXIoY29uc3QgU2VydmljZQogICAgIG1fc2VydmVyLnJlbW92ZUNsaWVudFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oKnRoaXMsIGtleSwgaWRlbnRpZmllcik7CiB9CiAKLXZv
aWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgU2VydmljZVdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAg
IG1fc2VydmVyLnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KCp0aGlzLCByZWdpc3RyYXRpb25L
ZXksIGlkZW50aWZpZXIsIG1lc3NhZ2UpOwotfQotCi12b2lkIFNXU2VydmVyOjpDb25uZWN0aW9u
OjpzY3JpcHRDb250ZXh0U3RhcnRlZChjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
JiByZWdpc3RyYXRpb25LZXksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCi17
Ci0gICAgbV9zZXJ2ZXIuc2NyaXB0Q29udGV4dFN0YXJ0ZWQoKnRoaXMsIHJlZ2lzdHJhdGlvbktl
eSwgaWRlbnRpZmllcik7Ci19Ci0KIFNXU2VydmVyOjpTV1NlcnZlcigpCiB7CisgICAgYWxsU2Vy
dmVycygpLmFkZCh0aGlzKTsKICAgICBtX3Rhc2tUaHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZShBU0NJ
SUxpdGVyYWwoIlNlcnZpY2VXb3JrZXIgVGFzayBUaHJlYWQiKSwgW3RoaXNdIHsKICAgICAgICAg
dGFza1RocmVhZEVudHJ5UG9pbnQoKTsKICAgICB9KTsKQEAgLTIyOCw1MiArMjEzLDM2IEBAIHZv
aWQgU1dTZXJ2ZXI6OnNjcmlwdEZldGNoRmluaXNoZWQoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
Y29uc3QgU2VydmljZVdvcmtlckZlCiAgICAgam9iUXVldWUtPnNjcmlwdEZldGNoRmluaXNoZWQo
Y29ubmVjdGlvbiwgcmVzdWx0KTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6c2NyaXB0Q29udGV4dEZh
aWxlZFRvU3RhcnQoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIFNXU2VydmVyOjpzY3JpcHRD
b250ZXh0RmFpbGVkVG9TdGFydChTV1NlcnZlcldvcmtlciYgd29ya2VyLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCiB7Ci0gICAgQVNTRVJUKG1fY29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlv
bi5pZGVudGlmaWVyKCkpKTsKLSAgICAKLSAgICBpZiAoYXV0byogam9iUXVldWUgPSBtX2pvYlF1
ZXVlcy5nZXQocmVnaXN0cmF0aW9uS2V5KSkKLSAgICAgICAgam9iUXVldWUtPnNjcmlwdENvbnRl
eHRGYWlsZWRUb1N0YXJ0KGNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIG1lc3NhZ2UpOworICAgIGlm
IChhdXRvKiBqb2JRdWV1ZSA9IG1fam9iUXVldWVzLmdldCh3b3JrZXIucmVnaXN0cmF0aW9uS2V5
KCkpKQorICAgICAgICBqb2JRdWV1ZS0+c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQod29ya2Vy
LmlkZW50aWZpZXIoKSwgbWVzc2FnZSk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OnNjcmlwdENvbnRl
eHRTdGFydGVkKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRl
bnRpZmllcikKK3ZvaWQgU1dTZXJ2ZXI6OnNjcmlwdENvbnRleHRTdGFydGVkKFNXU2VydmVyV29y
a2VyJiB3b3JrZXIpCiB7Ci0gICAgQVNTRVJUKG1fY29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVj
dGlvbi5pZGVudGlmaWVyKCkpKTsKLQotICAgIGlmIChhdXRvKiBqb2JRdWV1ZSA9IG1fam9iUXVl
dWVzLmdldChyZWdpc3RyYXRpb25LZXkpKQotICAgICAgICBqb2JRdWV1ZS0+c2NyaXB0Q29udGV4
dFN0YXJ0ZWQoY29ubmVjdGlvbiwgaWRlbnRpZmllcik7CisgICAgaWYgKGF1dG8qIGpvYlF1ZXVl
ID0gbV9qb2JRdWV1ZXMuZ2V0KHdvcmtlci5yZWdpc3RyYXRpb25LZXkoKSkpCisgICAgICAgIGpv
YlF1ZXVlLT5zY3JpcHRDb250ZXh0U3RhcnRlZCh3b3JrZXIuaWRlbnRpZmllcigpKTsKIH0KIAot
dm9pZCBTV1NlcnZlcjo6ZGlkRmluaXNoSW5zdGFsbChDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBj
b25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nl
c3NmdWwpCit2b2lkIFNXU2VydmVyOjpkaWRGaW5pc2hJbnN0YWxsKFNXU2VydmVyV29ya2VyJiB3
b3JrZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkKIHsKLSAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5j
b250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOwotCi0gICAgaWYgKGF1dG8qIGpvYlF1
ZXVlID0gbV9qb2JRdWV1ZXMuZ2V0KHJlZ2lzdHJhdGlvbktleSkpCi0gICAgICAgIGpvYlF1ZXVl
LT5kaWRGaW5pc2hJbnN0YWxsKGNvbm5lY3Rpb24sIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCB3
YXNTdWNjZXNzZnVsKTsKKyAgICBpZiAoYXV0byogam9iUXVldWUgPSBtX2pvYlF1ZXVlcy5nZXQo
d29ya2VyLnJlZ2lzdHJhdGlvbktleSgpKSkKKyAgICAgICAgam9iUXVldWUtPmRpZEZpbmlzaElu
c3RhbGwod29ya2VyLmlkZW50aWZpZXIoKSwgd2FzU3VjY2Vzc2Z1bCk7CiB9CiAKLXZvaWQgU1dT
ZXJ2ZXI6OmRpZEZpbmlzaEFjdGl2YXRpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3Qg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKK3ZvaWQgU1dTZXJ2ZXI6OmRp
ZEZpbmlzaEFjdGl2YXRpb24oU1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikKIHsKLSAgICBBU1NFUlRf
VU5VU0VEKGNvbm5lY3Rpb24sIG1fY29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVu
dGlmaWVyKCkpKTsKLQotICAgIGlmIChhdXRvKiByZWdpc3RyYXRpb24gPSBnZXRSZWdpc3RyYXRp
b24ocmVnaXN0cmF0aW9uS2V5KSkKLSAgICAgICAgU1dTZXJ2ZXJKb2JRdWV1ZTo6ZGlkRmluaXNo
QWN0aXZhdGlvbigqcmVnaXN0cmF0aW9uLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci19Ci0K
LXZvaWQgU1dTZXJ2ZXI6OnNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKENvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBib29sIGhhc1BlbmRpbmdFdmVudHMpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChjb25u
ZWN0aW9uLCBtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKSk7
Ci0KLSAgICBpZiAoYXV0byogc2VydmljZVdvcmtlciA9IG1fd29ya2Vyc0J5SUQuZ2V0KHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKSkKLSAgICAgICAgc2VydmljZVdvcmtlci0+c2V0SGFzUGVuZGlu
Z0V2ZW50cyhoYXNQZW5kaW5nRXZlbnRzKTsKKyAgICBpZiAoYXV0byogcmVnaXN0cmF0aW9uID0g
Z2V0UmVnaXN0cmF0aW9uKHdvcmtlci5yZWdpc3RyYXRpb25LZXkoKSkpCisgICAgICAgIFNXU2Vy
dmVySm9iUXVldWU6OmRpZEZpbmlzaEFjdGl2YXRpb24oKnJlZ2lzdHJhdGlvbiwgd29ya2VyLmlk
ZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OmRpZFJlc29sdmVSZWdpc3RyYXRpb25Q
cm9taXNlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKIHsKLSAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5j
b250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOworICAgIEFTU0VSVF9VTlVTRUQoY29u
bmVjdGlvbiwgbV9jb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkp
OwogCiAgICAgaWYgKGF1dG8qIGpvYlF1ZXVlID0gbV9qb2JRdWV1ZXMuZ2V0KHJlZ2lzdHJhdGlv
bktleSkpCi0gICAgICAgIGpvYlF1ZXVlLT5kaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShj
b25uZWN0aW9uKTsKKyAgICAgICAgam9iUXVldWUtPmRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9t
aXNlKCk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OmFkZENsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSYga2V5LCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlm
aWVyKQpAQCAtMzA0LDI2ICsyNzMsNzUgQEAgdm9pZCBTV1NlcnZlcjo6cmVtb3ZlQ2xpZW50U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb24KICAgICBy
ZWdpc3RyYXRpb24tPnJlbW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oY29ubmVj
dGlvbi5pZGVudGlmaWVyKCkpOwogfQogCi1SZWY8U1dTZXJ2ZXJXb3JrZXI+IFNXU2VydmVyOjp1
cGRhdGVXb3JrZXIoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBzY3JpcHQsIFdvcmtlclR5cGUgdHlwZSkKK3ZvaWQgU1dTZXJ2ZXI6OnVwZGF0ZVdvcmtl
cihDb25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0
cmF0aW9uS2V5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIFdvcmtlclR5
cGUgdHlwZSkKIHsKICAgICBhdXRvIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gZ2VuZXJhdGVT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcigpOwogCi0gICAgYXV0byByZXN1bHQgPSBtX3dvcmtlcnNC
eUlELmFkZChzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU1dTZXJ2ZXJXb3JrZXI6OmNyZWF0ZShy
ZWdpc3RyYXRpb25LZXksIHVybCwgc2NyaXB0LCB0eXBlLCBzZXJ2aWNlV29ya2VySWRlbnRpZmll
cikpOwotICAgIEFTU0VSVChyZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgU2VydmljZVdvcmtlckNv
bnRleHREYXRhIGRhdGEgPSB7IHJlZ2lzdHJhdGlvbktleSwgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIHNjcmlwdCwgdXJsLCB0eXBlIH07CisKKyAgICAvLyBSaWdodCBub3cgd2Ugb25seSBldmVy
IGtlZXAgdXAgdG8gb25lIGNvbm5lY3Rpb24gdG8gb25lIFNXIGNvbnRleHQgcHJvY2Vzcy4KKyAg
ICAvLyBBbmQgaXQgc2hvdWxkIGFsd2F5cyBleGlzdCBpZiB3ZSdyZSBjYWxsaW5nIHVwZGF0ZVdv
cmtlcgorICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
Omdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24p
IHsKKyAgICAgICAgbV9wZW5kaW5nQ29udGV4dERhdGFzLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpbnN0YWxsQ29udGV4dERhdGEoZGF0
YSk7Cit9CiAKLSAgICBjb25uZWN0aW9uLmluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dCh7IHJl
Z2lzdHJhdGlvbktleSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHNjcmlwdCwgdXJsIH0pOwor
dm9pZCBTV1NlcnZlcjo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoKQoreworICAg
IEFTU0VSVChTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24oKSk7CisgICAgZm9yIChhdXRvJiBkYXRhIDogbV9wZW5kaW5nQ29udGV4dERh
dGFzKQorICAgICAgICBpbnN0YWxsQ29udGV4dERhdGEoZGF0YSk7CiAgICAgCi0gICAgcmV0dXJu
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisgICAgbV9wZW5kaW5nQ29udGV4dERhdGFz
LmNsZWFyKCk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXI6Omluc3RhbGxDb250ZXh0RGF0YShjb25zdCBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEpCit7CisgICAgYXV0byogY29ubmVjdGlvbiA9
IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Z2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbigpOworICAgIEFTU0VSVChjb25uZWN0aW9uKTsKKworICAgIGF1dG8gcmVzdWx0ID0gbV93
b3JrZXJzQnlJRC5hZGQoZGF0YS5zZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU1dTZXJ2ZXJXb3Jr
ZXI6OmNyZWF0ZSgqdGhpcywgZGF0YS5yZWdpc3RyYXRpb25LZXksIGNvbm5lY3Rpb24tPmlkZW50
aWZpZXIoKSwgZGF0YS5zY3JpcHRVUkwsIGRhdGEuc2NyaXB0LCBkYXRhLndvcmtlclR5cGUsIGRh
dGEuc2VydmljZVdvcmtlcklkZW50aWZpZXIpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgY29ubmVjdGlvbi0+aW5zdGFsbFNlcnZpY2VXb3Jr
ZXJDb250ZXh0KGRhdGEpOwogfQogCi12b2lkIFNXU2VydmVyOjpmaXJlSW5zdGFsbEV2ZW50KENv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKQordm9pZCBTV1NlcnZlcjo6ZmlyZUluc3RhbGxFdmVudChTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKIHsKLSAgICBjb25uZWN0aW9u
LmZpcmVJbnN0YWxsRXZlbnQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIGF1dG8qIHdv
cmtlciA9IG1fd29ya2Vyc0J5SUQuZ2V0KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBp
ZiAoIXdvcmtlcikgeworICAgICAgICBMT0dfRVJST1IoIlJlcXVlc3QgdG8gZmlyZSBpbnN0YWxs
IGV2ZW50IG9uIGEgd29ya2VyIHRoYXQgY2Fubm90IGJlIGZvdW5kIGluIHRoZSBzZXJ2ZXIiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Gb3JJZGVudGlmaWVyKHdvcmtlci0+Y29u
dGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKCkpOworICAgIGlmICghY29ubmVjdGlvbikgeworICAg
ICAgICBMT0dfRVJST1IoIlJlcXVlc3QgdG8gZmlyZSBpbnN0YWxsIGV2ZW50IG9uIGEgd29ya2Vy
IHdob3NlIGNvbnRleHQgY29ubmVjdGlvbiBkb2VzIG5vdCBleGlzdCIpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgY29ubmVjdGlvbi0+ZmlyZUluc3RhbGxFdmVudChzZXJ2aWNlV29y
a2VySWRlbnRpZmllcik7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OmZpcmVBY3RpdmF0ZUV2ZW50KENv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKQordm9pZCBTV1NlcnZlcjo6ZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdv
cmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCiB7Ci0gICAgY29ubmVjdGlv
bi5maXJlQWN0aXZhdGVFdmVudChzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisgICAgYXV0byog
d29ya2VyID0gbV93b3JrZXJzQnlJRC5nZXQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAg
IGlmICghd29ya2VyKSB7CisgICAgICAgIExPR19FUlJPUigiUmVxdWVzdCB0byBmaXJlIGluc3Rh
bGwgZXZlbnQgb24gYSB3b3JrZXIgdGhhdCBjYW5ub3QgYmUgZm91bmQgaW4gdGhlIHNlcnZlciIp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byogY29ubmVjdGlvbiA9IFNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvcklkZW50aWZpZXIod29ya2VyLT5j
b250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIoKSk7CisgICAgaWYgKCFjb25uZWN0aW9uKSB7Cisg
ICAgICAgIExPR19FUlJPUigiUmVxdWVzdCB0byBmaXJlIGluc3RhbGwgZXZlbnQgb24gYSB3b3Jr
ZXIgd2hvc2UgY29udGV4dCBjb25uZWN0aW9uIGRvZXMgbm90IGV4aXN0Iik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBjb25uZWN0aW9uLT5maXJlQWN0aXZhdGVFdmVudChzZXJ2aWNl
V29ya2VySWRlbnRpZmllcik7CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OnRhc2tUaHJlYWRFbnRyeVBv
aW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuaAppbmRleCBmMGM4YzJjMWNmNS4uZWY1NmU0MWRmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
LmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0Nyb3Nz
VGhyZWFkUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRUYXNrLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTQ1LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBTV1NlcnZlckpvYlF1ZXVlOwogY2xhc3MgU1dTZXJ2ZXJSZWdpc3RyYXRpb247Citj
bGFzcyBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CiBlbnVtIGNsYXNzIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25TdGF0ZTsKIGVudW0gY2xhc3MgU2VydmljZVdvcmtlclN0YXRlOwogc3Ry
dWN0IEV4Y2VwdGlvbkRhdGE7CkBAIC01OSwxMSArNjEsNiBAQCBwdWJsaWM6CiAgICAgcHVibGlj
OgogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5Db25uZWN0aW9uKCk7CiAKLSAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NyaXB0
Q29udGV4dFN0YXJ0ZWQoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRGaW5p
c2hJbnN0YWxsKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKTsKLSAgICAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBkaWRGaW5pc2hBY3RpdmF0aW9uKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHMoU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGJvb2wgaGFzUGVuZGluZ0V2ZW50cyk7CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoY29uc3QgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleSYpOwogICAgICAgICBjb25zdCBTV1NlcnZlclJlZ2lzdHJhdGlvbiogZG9SZWdp
c3RyYXRpb25NYXRjaGluZyhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29u
c3QgVVJMJiBjbGllbnRVUkwpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyLmRvUmVnaXN0cmF0aW9u
TWF0Y2hpbmcodG9wT3JpZ2luLCBjbGllbnRVUkwpOyB9CiAKQEAgLTg4LDExICs4NSw2IEBAIHB1
YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIHJlc29sdmVVbnJlZ2lzdHJhdGlvbkpvYkluQ2xp
ZW50KHVpbnQ2NF90IGpvYklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmLCBib29sIHJlZ2lzdHJhdGlvblJlc3VsdCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgc3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50KHVpbnQ2NF90IGpvYklkZW50aWZpZXIpID0gMDsK
IAotICAgICAgICAvLyBNZXNzYWdlcyB0byB0aGUgU1cgaG9zdCBXZWJQcm9jZXNzCi0gICAgICAg
IHZpcnR1YWwgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgU2VydmljZVdv
cmtlckNvbnRleHREYXRhJikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZmlyZUluc3RhbGxF
dmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQg
ZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKLQogICAgICAg
ICBTV1NlcnZlciYgbV9zZXJ2ZXI7CiAgICAgfTsKIApAQCAtMTE0LDEzICsxMDYsMjIgQEAgcHVi
bGljOgogICAgIHZvaWQgcG9zdFRhc2soQ3Jvc3NUaHJlYWRUYXNrJiYpOwogICAgIHZvaWQgcG9z
dFRhc2tSZXBseShDcm9zc1RocmVhZFRhc2smJik7CiAKLSAgICBSZWY8U1dTZXJ2ZXJXb3JrZXI+
IHVwZGF0ZVdvcmtlcihDb25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXb3JrZXJUeXBlKTsKLSAg
ICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoQ29ubmVjdGlvbiYsIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKTsKLSAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KENvbm5lY3Rpb24mLCBTZXJ2aWNlV29y
a2VySWRlbnRpZmllcik7CisgICAgdm9pZCB1cGRhdGVXb3JrZXIoQ29ubmVjdGlvbiYsIGNvbnN0
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IHNjcmlwdCwgV29ya2VyVHlwZSk7CisgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKTsKKyAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKTsKICAgICBTV1NlcnZlcldvcmtlciogd29ya2VyQnlJRChTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBpZGVudGlmaWVyKSBjb25zdCB7IHJldHVybiBtX3dvcmtlcnNCeUlELmdl
dChpZGVudGlmaWVyKTsgfQogICAgIAogICAgIENvbm5lY3Rpb24qIGdldENvbm5lY3Rpb24odWlu
dDY0X3QgaWRlbnRpZmllcikgeyByZXR1cm4gbV9jb25uZWN0aW9ucy5nZXQoaWRlbnRpZmllcik7
IH0KIAorICAgIHZvaWQgc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoU1dTZXJ2ZXJXb3JrZXIm
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgc2NyaXB0Q29udGV4dFN0YXJ0ZWQo
U1dTZXJ2ZXJXb3JrZXImKTsKKyAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoU1dTZXJ2ZXJXb3Jr
ZXImLCBib29sIHdhc1N1Y2Nlc3NmdWwpOworICAgIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbihT
V1NlcnZlcldvcmtlciYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uQ3JlYXRlZCgpOworICAgIAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBI
YXNoU2V0PFNXU2VydmVyKj4mIGFsbFNlcnZlcnMoKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHJl
Z2lzdGVyQ29ubmVjdGlvbihDb25uZWN0aW9uJik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyQ29ubmVj
dGlvbihDb25uZWN0aW9uJik7CkBAIC0xMjksMTEgKzEzMCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBoYW5kbGVUYXNrUmVwbGllc09uTWFpblRocmVhZCgpOwogCiAgICAgdm9pZCBzY3JpcHRGZXRj
aEZpbmlzaGVkKENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKTsK
LSAgICB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KENvbm5lY3Rpb24mLCBjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgdm9pZCBzY3JpcHRDb250ZXh0U3RhcnRlZChDb25u
ZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoQ29ubmVjdGlvbiYsIGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgYm9vbCB3YXNTdWNjZXNzZnVsKTsKLSAgICB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oQ29u
bmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29y
a2VySWRlbnRpZmllcik7Ci0gICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50
cyhDb25uZWN0aW9uJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgaGFzUGVuZGluZ0V2
ZW50cyk7CisKICAgICB2b2lkIGRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKENvbm5lY3Rp
b24mLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7CiAKICAgICB2b2lkIGFk
ZENsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
Zmllcik7CkBAIC0xNDEsNiArMTM4LDggQEAgcHJpdmF0ZToKIAogICAgIFdFQkNPUkVfRVhQT1JU
IGNvbnN0IFNXU2VydmVyUmVnaXN0cmF0aW9uKiBkb1JlZ2lzdHJhdGlvbk1hdGNoaW5nKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCkgY29u
c3Q7CiAKKyAgICB2b2lkIGluc3RhbGxDb250ZXh0RGF0YShjb25zdCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEmKTsKKwogICAgIEhhc2hNYXA8dWludDY0X3QsIENvbm5lY3Rpb24qPiBtX2Nvbm5l
Y3Rpb25zOwogICAgIEhhc2hNYXA8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSwgc3RkOjp1
bmlxdWVfcHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPj4gbV9yZWdpc3RyYXRpb25zOwogICAgIEhh
c2hNYXA8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSwgc3RkOjp1bmlxdWVfcHRyPFNXU2Vy
dmVySm9iUXVldWU+PiBtX2pvYlF1ZXVlczsKQEAgLTE1NSw2ICsxNTQsOCBAQCBwcml2YXRlOgog
CiAgICAgTG9jayBtX21haW5UaHJlYWRSZXBseUxvY2s7CiAgICAgYm9vbCBtX21haW5UaHJlYWRS
ZXBseVNjaGVkdWxlZCB7IGZhbHNlIH07CisKKyAgICBEZXF1ZTxTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE+IG1fcGVuZGluZ0NvbnRleHREYXRhczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJKb2JRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVySm9iUXVldWUuY3BwCmluZGV4IGU2OWZlNTdlY2IzLi43MDA5Y2Q1YThkZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpv
YlF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVySm9iUXVldWUuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1
ZTo6c2NyaXB0RmV0Y2hGaW5pc2hlZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
Y29uCiB9CiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyN1cGRhdGUt
YWxnb3JpdGhtCi12b2lkIFNXU2VydmVySm9iUXVldWU6OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0
YXJ0KFNXU2VydmVyOjpDb25uZWN0aW9uJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0Q29udGV4dEZh
aWxlZFRvU3RhcnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKIHsKICAgICAvLyBJZiBhbiB1bmNhdWdodCBydW50aW1lIHNjcmlwdCBlcnJvciBvY2N1cnMg
ZHVyaW5nIHRoZSBhYm92ZSBzdGVwLCB0aGVuOgogICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1f
c2VydmVyLmdldFJlZ2lzdHJhdGlvbihtX3JlZ2lzdHJhdGlvbktleSk7CkBAIC0xMDEsMTYgKzEw
MSwxNiBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0
KFNXU2VydmVyOjpDb25uZWN0aW9uJiwgU2VydmljZQogICAgIGZpbmlzaEN1cnJlbnRKb2IoKTsK
IH0KIAotdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRDb250ZXh0U3RhcnRlZChTV1NlcnZl
cjo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllcikKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQoU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBhdXRvKiByZWdpc3RyYXRpb24g
PSBtX3NlcnZlci5nZXRSZWdpc3RyYXRpb24obV9yZWdpc3RyYXRpb25LZXkpOwogICAgIEFTU0VS
VChyZWdpc3RyYXRpb24pOwogCi0gICAgaW5zdGFsbCgqcmVnaXN0cmF0aW9uLCBjb25uZWN0aW9u
LCBpZGVudGlmaWVyKTsKKyAgICBpbnN0YWxsKCpyZWdpc3RyYXRpb24sIGlkZW50aWZpZXIpOwog
fQogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jaW5zdGFsbAotdm9p
ZCBTV1NlcnZlckpvYlF1ZXVlOjppbnN0YWxsKFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3Ry
YXRpb24sIFNXU2VydmVyOjpDb25uZWN0aW9uJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaW5z
dGFsbGluZ1dvcmtlcikKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6aW5zdGFsbChTV1NlcnZlclJl
Z2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpbnN0YWxs
aW5nV29ya2VyKQogewogICAgIC8vIFRoZSBJbnN0YWxsIGFsZ29yaXRobSBzaG91bGQgbmV2ZXIg
YmUgaW52b2tlZCB3aXRoIGEgbnVsbCB3b3JrZXIuCiAgICAgYXV0byogd29ya2VyID0gbV9zZXJ2
ZXIud29ya2VyQnlJRChpbnN0YWxsaW5nV29ya2VyKTsKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lk
IFNXU2VydmVySm9iUXVldWU6Omluc3RhbGwoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJh
dGlvbiwgU1dTZXJ2ZXI6OkNvbgogfQogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8vU2Vydmlj
ZVdvcmtlci8jaW5zdGFsbCAoYWZ0ZXIgcmVzb2x2aW5nIHByb21pc2UpLgotdm9pZCBTV1NlcnZl
ckpvYlF1ZXVlOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShTV1NlcnZlcjo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbikKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6ZGlkUmVzb2x2ZVJlZ2lz
dHJhdGlvblByb21pc2UoKQogewogICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fc2VydmVyLmdl
dFJlZ2lzdHJhdGlvbihtX3JlZ2lzdHJhdGlvbktleSk7CiAgICAgQVNTRVJUKHJlZ2lzdHJhdGlv
bik7CkBAIC0xMzUsMTEgKzEzNSwxMSBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OmRpZFJlc29s
dmVSZWdpc3RyYXRpb25Qcm9taXNlKFNXU2VydmVyOjpDb25uZWN0aW9uJiBjb25uZQogICAgIHJl
Z2lzdHJhdGlvbi0+ZmlyZVVwZGF0ZUZvdW5kRXZlbnQoKTsKIAogICAgIC8vIFF1ZXVlIGEgdGFz
ayB0byBmaXJlIHRoZSBJbnN0YWxsRXZlbnQuCi0gICAgbV9zZXJ2ZXIuZmlyZUluc3RhbGxFdmVu
dChjb25uZWN0aW9uLCByZWdpc3RyYXRpb24tPmluc3RhbGxpbmdXb3JrZXIoKS0+aWRlbnRpZmll
cigpKTsKKyAgICBtX3NlcnZlci5maXJlSW5zdGFsbEV2ZW50KHJlZ2lzdHJhdGlvbi0+aW5zdGFs
bGluZ1dvcmtlcigpLT5pZGVudGlmaWVyKCkpOwogfQogCiAvLyBodHRwczovL3czYy5naXRodWIu
aW8vU2VydmljZVdvcmtlci8jaW5zdGFsbAotdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpkaWRGaW5p
c2hJbnN0YWxsKFNXU2VydmVyOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCit2b2lkIFNXU2VydmVy
Sm9iUXVldWU6OmRpZEZpbmlzaEluc3RhbGwoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKQogewogICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1f
c2VydmVyLmdldFJlZ2lzdHJhdGlvbihtX3JlZ2lzdHJhdGlvbktleSk7CiAgICAgQVNTRVJUKHJl
Z2lzdHJhdGlvbik7CkBAIC0xNzYsMTEgKzE3NiwxMSBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6
OmRpZEZpbmlzaEluc3RhbGwoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNlcnZp
YwogICAgIGZpbmlzaEN1cnJlbnRKb2IoKTsKIAogICAgIC8vIEZJWE1FOiBXYWl0IGZvciBhbGwg
dGhlIHRhc2tzIHF1ZXVlZCBieSBVcGRhdGUgV29ya2VyIFN0YXRlIGludm9rZWQgaW4gdGhpcyBh
bGdvcml0aG0gaGF2ZSBleGVjdXRlZC4KLSAgICB0cnlBY3RpdmF0ZShtX3NlcnZlciwgY29ubmVj
dGlvbiwgKnJlZ2lzdHJhdGlvbik7CisgICAgdHJ5QWN0aXZhdGUobV9zZXJ2ZXIsICpyZWdpc3Ry
YXRpb24pOwogfQogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jdHJ5
LWFjdGl2YXRlLWFsZ29yaXRobQotdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjp0cnlBY3RpdmF0ZShT
V1NlcnZlciYgc2VydmVyLCBTV1NlcnZlcjo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU1dTZXJ2
ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbikKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6dHJ5
QWN0aXZhdGUoU1dTZXJ2ZXImIHNlcnZlciwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJh
dGlvbikKIHsKICAgICAvLyBJZiByZWdpc3RyYXRpb24ncyB3YWl0aW5nIHdvcmtlciBpcyBudWxs
LCByZXR1cm4uCiAgICAgaWYgKCFyZWdpc3RyYXRpb24ud2FpdGluZ1dvcmtlcigpKQpAQCAtMTk1
LDExICsxOTUsMTEgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjp0cnlBY3RpdmF0ZShTV1NlcnZl
ciYgc2VydmVyLCBTV1NlcnZlcjo6Q29ubmVjdGlvbiYgY29ubmUKICAgICAvLyAgIGFuZCBubyBz
ZXJ2aWNlIHdvcmtlciBjbGllbnQgaXMgdXNpbmcgcmVnaXN0cmF0aW9uCiAgICAgLy8gRklYTUU6
IENoZWNrIGZvciB0aGUgc2tpcCB3YWl0aW5nIGZsYWcuCiAgICAgaWYgKCFyZWdpc3RyYXRpb24u
YWN0aXZlV29ya2VyKCkgfHwgIXJlZ2lzdHJhdGlvbi5hY3RpdmVXb3JrZXIoKS0+aGFzUGVuZGlu
Z0V2ZW50cygpKQotICAgICAgICBhY3RpdmF0ZShzZXJ2ZXIsIGNvbm5lY3Rpb24sIHJlZ2lzdHJh
dGlvbik7CisgICAgICAgIGFjdGl2YXRlKHNlcnZlciwgcmVnaXN0cmF0aW9uKTsKIH0KIAogLy8g
aHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI2FjdGl2YXRlCi12b2lkIFNXU2Vy
dmVySm9iUXVldWU6OmFjdGl2YXRlKFNXU2VydmVyJiBzZXJ2ZXIsIFNXU2VydmVyOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uKQordm9p
ZCBTV1NlcnZlckpvYlF1ZXVlOjphY3RpdmF0ZShTV1NlcnZlciYgc2VydmVyLCBTV1NlcnZlclJl
Z2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uKQogewogICAgIC8vIElmIHJlZ2lzdHJhdGlvbidzIHdh
aXRpbmcgd29ya2VyIGlzIG51bGwsIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgIGlmICghcmVnaXN0
cmF0aW9uLndhaXRpbmdXb3JrZXIoKSkKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIFNXU2VydmVy
Sm9iUXVldWU6OmFjdGl2YXRlKFNXU2VydmVyJiBzZXJ2ZXIsIFNXU2VydmVyOjpDb25uZWN0aW9u
JiBjb25uZWN0aQogICAgIC8vIEZJWE1FOiBJbnZva2UgUnVuIFNlcnZpY2UgV29ya2VyIGFsZ29y
aXRobSB3aXRoIGFjdGl2ZVdvcmtlciBhcyB0aGUgYXJndW1lbnQuCiAKICAgICAvLyBRdWV1ZSBh
IHRhc2sgdG8gZmlyZSB0aGUgYWN0aXZhdGUgZXZlbnQuCi0gICAgc2VydmVyLmZpcmVBY3RpdmF0
ZUV2ZW50KGNvbm5lY3Rpb24sIHJlZ2lzdHJhdGlvbi5hY3RpdmVXb3JrZXIoKS0+aWRlbnRpZmll
cigpKTsKKyAgICBzZXJ2ZXIuZmlyZUFjdGl2YXRlRXZlbnQocmVnaXN0cmF0aW9uLmFjdGl2ZVdv
cmtlcigpLT5pZGVudGlmaWVyKCkpOwogfQogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8vU2Vy
dmljZVdvcmtlci8jYWN0aXZhdGUgKHBvc3QgYWN0aXZhdGUgZXZlbnQgc3RlcHMpLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1
ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9i
UXVldWUuaAppbmRleCAyZjc3YjA5N2YyMS4uMzEwZDE4YjNiMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5o
CkBAIC00OCwxMSArNDgsMTEgQEAgcHVibGljOgogICAgIHZvaWQgcnVuTmV4dEpvYigpOwogCiAg
ICAgdm9pZCBzY3JpcHRGZXRjaEZpbmlzaGVkKFNXU2VydmVyOjpDb25uZWN0aW9uJiwgY29uc3Qg
U2VydmljZVdvcmtlckZldGNoUmVzdWx0Jik7Ci0gICAgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVk
VG9TdGFydChTV1NlcnZlcjo6Q29ubmVjdGlvbiYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgIHZvaWQgc2NyaXB0Q29udGV4dFN0YXJ0ZWQoU1dT
ZXJ2ZXI6OkNvbm5lY3Rpb24mLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgdm9pZCBk
aWRGaW5pc2hJbnN0YWxsKFNXU2VydmVyOjpDb25uZWN0aW9uJiwgU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCk7CisgICAgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVk
VG9TdGFydChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsK
KyAgICB2b2lkIHNjcmlwdENvbnRleHRTdGFydGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsK
KyAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wg
d2FzU3VjY2Vzc2Z1bCk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbihTV1Nl
cnZlclJlZ2lzdHJhdGlvbiYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRp
ZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKFNXU2VydmVyOjpDb25uZWN0aW9uJik7CisgICAg
dm9pZCBkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZSgpOwogCiBwcml2YXRlOgogICAgIHZv
aWQgam9iVGltZXJGaXJlZCgpOwpAQCAtNjYsOSArNjYsOSBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCB0cnlDbGVhclJlZ2lzdHJhdGlvbihTV1NlcnZlclJlZ2lzdHJhdGlvbiYpOwogICAgIHZvaWQg
Y2xlYXJSZWdpc3RyYXRpb24oU1dTZXJ2ZXJSZWdpc3RyYXRpb24mKTsKLSAgICB2b2lkIGluc3Rh
bGwoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBTV1NlcnZlcjo6Q29ubmVjdGlvbiYsIFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgdm9pZCB0cnlBY3RpdmF0ZShTV1NlcnZlciYs
IFNXU2VydmVyOjpDb25uZWN0aW9uJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mKTsKLSAgICBzdGF0
aWMgdm9pZCBhY3RpdmF0ZShTV1NlcnZlciYsIFNXU2VydmVyOjpDb25uZWN0aW9uJiwgU1dTZXJ2
ZXJSZWdpc3RyYXRpb24mKTsKKyAgICB2b2lkIGluc3RhbGwoU1dTZXJ2ZXJSZWdpc3RyYXRpb24m
LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisgICAgc3RhdGljIHZvaWQgdHJ5QWN0aXZhdGUo
U1dTZXJ2ZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYpOworICAgIHN0YXRpYyB2b2lkIGFjdGl2
YXRlKFNXU2VydmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mKTsKIAogICAgIERlcXVlPFNlcnZp
Y2VXb3JrZXJKb2JEYXRhPiBtX2pvYlF1ZXVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3Bw
CmluZGV4IGY3M2JlZmVjYjQzLi43MzI3Nzk3YjgwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlv
bi5jcHAKQEAgLTM3LDggKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgZ2VuZXJhdGVTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllcigpCiB7Ci0gICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZpZXIg
PSAwOwotICAgIHJldHVybiBtYWtlT2JqZWN0SWRlbnRpZmllcjxTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllclR5cGU+KCsraWRlbnRpZmllcik7CisgICAgcmV0dXJuIGdlbmVyYXRl
T2JqZWN0SWRlbnRpZmllcjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllclR5cGU+
KCk7CiB9CiAKIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpTV1NlcnZlclJlZ2lzdHJhdGlvbihTV1Nl
cnZlciYgc2VydmVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXksIFNl
cnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZSB1cGRhdGVWaWFDYWNoZSwgY29uc3QgVVJMJiBzY29w
ZVVSTCwgY29uc3QgVVJMJiBzY3JpcHRVUkwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjViNjA5
YzQxMzlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTA3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5j
bHVkZSAiU1dTZXJ2ZXIuaCIKKyNpbmNsdWRlICJTV1NlcnZlcldvcmtlci5oIgorI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyIGdlbmVyYXRlU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIoKQoreworICAgIHJldHVybiBnZW5lcmF0ZU9iamVjdElk
ZW50aWZpZXI8U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllclR5cGU+KCk7Cit9
CisKK3N0YXRpYyBIYXNoTWFwPFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIs
IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbio+JiBhbGxDb25uZWN0aW9ucygpCit7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
SWRlbnRpZmllciwgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4+IGNvbm5lY3Rpb25zOwor
ICAgIHJldHVybiBjb25uZWN0aW9uczsKK30KKworU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQorICAgIDogbV9pZGVudGlmaWVyKGdlbmVy
YXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIoKSkKK3sKKyAgICBhdXRvIHJl
c3VsdCA9IGFsbENvbm5lY3Rpb25zKCkuYWRkKG1faWRlbnRpZmllciwgdGhpcyk7CisgICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKK30KKworU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjp+U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkKK3sKKyAgICBh
dXRvIHRha2VuID0gYWxsQ29ubmVjdGlvbnMoKS50YWtlKG1faWRlbnRpZmllcik7CisgICAgQVNT
RVJUX1VOVVNFRCh0YWtlbiwgdGFrZW4gPSB0aGlzKTsKK30KKworU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Gb3JJZGVu
dGlmaWVyKFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikK
K3sKKyAgICByZXR1cm4gYWxsQ29ubmVjdGlvbnMoKS5nZXQoaWRlbnRpZmllcik7Cit9CisKK1NX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpn
bG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkKK3sKKyAgICBpZiAoYWxsQ29ubmVjdGlv
bnMoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIEFTU0VS
VChhbGxDb25uZWN0aW9ucygpLnNpemUoKSA9PSAxKTsKKyAgICByZXR1cm4gYWxsQ29ubmVjdGlv
bnMoKS5iZWdpbigpLT52YWx1ZTsKK30KKwordm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgaWYg
KGF1dG8qIHdvcmtlciA9IFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZp
ZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKQorICAgICAgICB3b3JrZXItPnNjcmlwdENvbnRl
eHRGYWlsZWRUb1N0YXJ0KG1lc3NhZ2UpOworfQorCit2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8qIHdvcmtlciA9IFNXU2VydmVy
V29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZp
ZXIpKQorICAgICAgICB3b3JrZXItPnNjcmlwdENvbnRleHRTdGFydGVkKCk7Cit9CisgICAgCit2
b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZGlkRmluaXNoSW5zdGFsbChTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNz
ZnVsKQoreworICAgIGlmIChhdXRvKiB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdX
b3JrZXJGb3JJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkKKyAgICAgICAgd29y
a2VyLT5kaWRGaW5pc2hJbnN0YWxsKHdhc1N1Y2Nlc3NmdWwpOworfQorCit2b2lkIFNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6ZGlkRmluaXNoQWN0aXZhdGlvbihTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byogd29ya2Vy
ID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29y
a2VySWRlbnRpZmllcikpCisgICAgICAgIHdvcmtlci0+ZGlkRmluaXNoQWN0aXZhdGlvbigpOwor
fQorCit2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2V0U2VydmljZVdvcmtlckhh
c1BlbmRpbmdFdmVudHMoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGJvb2wgaGFzUGVuZGluZ0V2ZW50cykKK3sKKyAgICBpZiAoYXV0byogd29ya2VyID0g
U1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcikpCisgICAgICAgIHdvcmtlci0+c2V0SGFzUGVuZGluZ0V2ZW50cyhoYXNQZW5k
aW5nRXZlbnRzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjI0YTU0NmNkYWRiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VySWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBlcy5o
IgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFNXU2VydmVyOworc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YTsKKworY2xhc3MgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4geworcHVibGljOgorICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOwor
CisgICAgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKKyAgICAvLyBNZXNzYWdlcyB0byB0aGUg
U1cgaG9zdCBwcm9jZXNzCisgICAgdmlydHVhbCB2b2lkIGluc3RhbGxTZXJ2aWNlV29ya2VyQ29u
dGV4dChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGZpcmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0g
MDsKKworICAgIC8vIE1lc3NhZ2VzIGJhY2sgZnJvbSB0aGUgU1cgaG9zdCBwcm9jZXNzCisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNjcmlwdENvbnRleHRTdGFydGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEZpbmlzaEluc3RhbGwoU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRG
aW5pc2hBY3RpdmF0aW9uKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBib29sIGhhc1BlbmRpbmdFdmVudHMpOworCisgICAgc3RhdGljIFNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiogY29ubmVjdGlvbkZvcklkZW50aWZpZXIoU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uSWRlbnRpZmllcik7CisKKyAgICAvLyBGSVhNRTogV2hpbGUgd2Ugb25s
eSBldmVyIGhhdmUgb25lIFNXIGNvbnRleHQgcHJvY2VzcyB0aGlzIG1ldGhvZCBtYWtlcyBzZW5z
ZS4KKyAgICAvLyBPbmNlIHdlIGhhdmUgbXVsdGlwbGUgb25lcyB0aGlzIG1ldGhvZCBzaG91bGQg
Z28gYXdheSBmb3JjaW5nIHVzZSBvZiBjb25uZWN0aW9uRm9ySWRlbnRpZmllcigpCisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogZ2xvYmFsU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOworCitwcm90ZWN0ZWQ6CisgICAgV0VCQ09SRV9FWFBP
UlQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7CisKK3ByaXZhdGU6CisgICAgU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciBtX2lkZW50aWZpZXI7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
V29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuY3BwCmluZGV4IDEyNWEyNjRmNTdjLi41YmIyMzBjZmYwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtl
ci5jcHAKQEAgLTI4LDI0ICsyOCw2NSBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotU1dTZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0LCBXb3JrZXJUeXBlIHR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIpCi0gICAgOiBtX3JlZ2lzdHJhdGlvbktleShyZWdpc3RyYXRpb25LZXkpCitzdGF0aWMg
SGFzaE1hcDxTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU1dTZXJ2ZXJXb3JrZXIqPiYgYWxsV29y
a2VycygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8U2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFNXU2VydmVyV29ya2VyKj4+IHdvcmtlcnM7CisgICAgcmV0dXJuIHdvcmtl
cnM7Cit9CisKK1NXU2VydmVyV29ya2VyKiBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJG
b3JJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAg
cmV0dXJuIGFsbFdvcmtlcnMoKS5nZXQoaWRlbnRpZmllcik7Cit9CisKK1NXU2VydmVyV29ya2Vy
OjpTV1NlcnZlcldvcmtlcihTV1NlcnZlciYgc2VydmVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bklkZW50aWZpZXIgY29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBzY3JpcHQsIFdvcmtlclR5cGUgdHlwZSwgU2VydmljZVdvcmtlcklkZW50
aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IG1fc2VydmVyKHNlcnZlcikKKyAgICAsIG1fcmVnaXN0
cmF0aW9uS2V5KHJlZ2lzdHJhdGlvbktleSkKKyAgICAsIG1fY29udGV4dENvbm5lY3Rpb25JZGVu
dGlmaWVyKGNvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcikKICAgICAsIG1fc2NyaXB0VVJMKHVy
bCkKICAgICAsIG1fc2NyaXB0KHNjcmlwdCkKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQogICAgICwgbV90eXBlKHR5cGUpCiB7CisgICAgYXV0byByZXN1bHQgPSBhbGxXb3JrZXJzKCku
YWRkKGlkZW50aWZpZXIsIHRoaXMpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQu
aXNOZXdFbnRyeSk7CiB9CiAKLVNXU2VydmVyV29ya2VyOjp+U1dTZXJ2ZXJXb3JrZXIoKSA9IGRl
ZmF1bHQ7CitTV1NlcnZlcldvcmtlcjo6flNXU2VydmVyV29ya2VyKCkKK3sKKyAgICBhdXRvIHRh
a2VuID0gYWxsV29ya2VycygpLnRha2UobV9pZGVudGlmaWVyKTsKKyAgICBBU1NFUlRfVU5VU0VE
KHRha2VuLCB0YWtlbiA9PSB0aGlzKTsKK30KIAogdm9pZCBTV1NlcnZlcldvcmtlcjo6dGVybWlu
YXRlKCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50CiB9CiAKK3ZvaWQgU1dTZXJ2ZXJXb3Jr
ZXI6OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sK
KyAgICBtX3NlcnZlci5zY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydCgqdGhpcywgbWVzc2FnZSk7
Cit9CisKK3ZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnNjcmlwdENvbnRleHRTdGFydGVkKCkKK3sKKyAg
ICBtX3NlcnZlci5zY3JpcHRDb250ZXh0U3RhcnRlZCgqdGhpcyk7Cit9CisKK3ZvaWQgU1dTZXJ2
ZXJXb3JrZXI6OmRpZEZpbmlzaEluc3RhbGwoYm9vbCB3YXNTdWNjZXNzZnVsKQoreworICAgIG1f
c2VydmVyLmRpZEZpbmlzaEluc3RhbGwoKnRoaXMsIHdhc1N1Y2Nlc3NmdWwpOworfQorCit2b2lk
IFNXU2VydmVyV29ya2VyOjpkaWRGaW5pc2hBY3RpdmF0aW9uKCkKK3sKKyAgICBtX3NlcnZlci5k
aWRGaW5pc2hBY3RpdmF0aW9uKCp0aGlzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCmluZGV4IDFhNjgx
ZWIyOWNlLi4zOGIwYjQ3YWNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaApAQCAtMzUsMTMgKzM1LDE0IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU1dTZXJ2ZXI7CiBlbnVtIGNsYXNzIFdvcmtl
clR5cGU7CiAKIGNsYXNzIFNXU2VydmVyV29ya2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFNXU2VydmVyV29ya2VyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTV1NlcnZlcldv
cmtlcj4gY3JlYXRlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJh
dGlvbktleSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXb3JrZXJUeXBl
IHR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBSZWY8U1dTZXJ2ZXJXb3JrZXI+IGNyZWF0ZShBcmdz
JiYuLi4gYXJncykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNXU2VydmVy
V29ya2VyKHJlZ2lzdHJhdGlvbktleSwgdXJsLCBzY3JpcHQsIHR5cGUsIGlkZW50aWZpZXIpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1dTZXJ2ZXJXb3JrZXIoc3RkOjpmb3J3YXJk
PEFyZ3M+KGFyZ3MpLi4uKSk7CiAgICAgfQogICAgIAogICAgIFNXU2VydmVyV29ya2VyKGNvbnN0
IFNXU2VydmVyV29ya2VyJikgPSBkZWxldGU7CkBAIC00OSwxMSArNTAsMTQgQEAgcHVibGljOgog
CiAgICAgdm9pZCB0ZXJtaW5hdGUoKTsKIAorICAgIFNXU2VydmVyJiBzZXJ2ZXIoKTsKKyAgICBj
b25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkoKSBjb25z
dCB7IHJldHVybiBtX3JlZ2lzdHJhdGlvbktleTsgfQogICAgIGNvbnN0IFVSTCYgc2NyaXB0VVJM
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRVUkw7IH0KICAgICBjb25zdCBTdHJpbmcmIHNjcmlw
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0OyB9CiAgICAgV29ya2VyVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlOyB9CiAKICAgICBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uSWRlbnRpZmllciBjb250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX2NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcjsgfQogCiAgICAgU2Vy
dmljZVdvcmtlclN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQogICAgIHZv
aWQgc2V0U3RhdGUoU2VydmljZVdvcmtlclN0YXRlIHN0YXRlKSB7IG1fc3RhdGUgPSBzdGF0ZTsg
fQpAQCAtNjEsMTAgKzY1LDE5IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1BlbmRpbmdFdmVudHMo
KSBjb25zdCB7IHJldHVybiBtX2hhc1BlbmRpbmdFdmVudHM7IH0KICAgICB2b2lkIHNldEhhc1Bl
bmRpbmdFdmVudHMoYm9vbCB2YWx1ZSkgeyBtX2hhc1BlbmRpbmdFdmVudHMgPSB2YWx1ZTsgfQog
CisgICAgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpOworICAgIHZvaWQgc2NyaXB0Q29udGV4dFN0YXJ0ZWQoKTsKKyAgICB2b2lkIGRpZEZpbmlz
aEluc3RhbGwoYm9vbCB3YXNTdWNjZXNzZnVsKTsKKyAgICB2b2lkIGRpZEZpbmlzaEFjdGl2YXRp
b24oKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTV1NlcnZlcldvcmtlciogZXhpc3Rp
bmdXb3JrZXJGb3JJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKwogcHJpdmF0
ZToKLSAgICBTV1NlcnZlcldvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIFdvcmtlclR5cGUsIFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKTsKKyAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25J
ZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgV29ya2VyVHlwZSwg
U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogCisgICAgU1dTZXJ2ZXImIG1fc2VydmVyOwogICAg
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgbV9yZWdpc3RyYXRpb25LZXk7CisgICAgU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciBtX2NvbnRleHRDb25uZWN0aW9uSWRl
bnRpZmllcjsKICAgICBVUkwgbV9zY3JpcHRVUkw7CiAgICAgU3RyaW5nIG1fc2NyaXB0OwogICAg
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMubWFrZQppbmRleCA0MzliMWVlOGY4OS4uZDcyMWMwYjE4Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLm1ha2UKQEAgLTE2NCw2ICsxNjQsNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAg
ICBXZWJTV0NsaWVudENvbm5lY3Rpb24gXAogICAgIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uIFwKICAgICBXZWJTV1NlcnZlckNvbm5lY3Rpb24gXAorICAgIFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbiBcCiAgICAgUGxheWJhY2tTZXNzaW9uTWFuYWdlciBcCiAgICAgUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5IFwKICAgICBXZWJQcm9jZXNzIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggOThkOTdhZGZjODQuLmU5OWNi
NmRkODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1N0b3JlZENyZWRlbnRpYWxzUG9saWN5Lmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9Xb3JrZXJUeXBlLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTW9ub3RvbmljVGlt
ZTsKQEAgLTc5Nyw2ICs3OTgsMTQgQEAgdGVtcGxhdGUgPD4gc3RydWN0IEVudW1UcmFpdHM8V2Vi
Q29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k+IHsKICAgICA+OwogfTsKIAordGVtcGxhdGUg
PD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6V29ya2VyVHlwZT4geworICAgIHVzaW5nIHZh
bHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OldvcmtlclR5cGUsCisgICAgICAg
IFdlYkNvcmU6OldvcmtlclR5cGU6OkNsYXNzaWMsCisgICAgICAgIFdlYkNvcmU6OldvcmtlclR5
cGU6Ok1vZHVsZQorICAgID47Cit9OworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogdGVt
cGxhdGUgPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6U2VydmljZVdvcmtlclVwZGF0ZVZp
YUNhY2hlPiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNmJjNTg5YTk1NzIuLjZmYWZmNDgxNGI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtNDAsNiArNDAsNyBA
QAogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJTV09yaWdpblN0b3JlLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvRXhjZXB0aW9uRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50
ZWQuaD4KQEAgLTExMSwyNCArMTEyLDYgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnVw
ZGF0ZVdvcmtlclN0YXRlSW5DbGllbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgd28KICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJTV0NsaWVudENvbm5lY3Rpb246OlVwZGF0ZVdvcmtlclN0YXRlKHdv
cmtlciwgc3RhdGUpKTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246Omluc3RhbGxT
ZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEp
Ci17Ci0gICAgaWYgKHNlbmRUb0NvbnRleHRQcm9jZXNzKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6SW5zdGFsbFNlcnZpY2VXb3JrZXIoaWRlbnRpZmllcigpLCBkYXRh
KSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcGVuZGluZ0NvbnRleHREYXRhcy5hcHBlbmQo
ZGF0YSk7Ci19Ci0KLXZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpmaXJlSW5zdGFsbEV2ZW50
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQotewotICAg
IHNlbmRUb0NvbnRleHRQcm9jZXNzKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6RmlyZUluc3RhbGxFdmVudChpZGVudGlmaWVyKCksIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKSk7Ci19Ci0KLXZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpmaXJlQWN0aXZhdGVFdmVu
dChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKLXsKLSAg
ICBzZW5kVG9Db250ZXh0UHJvY2VzcyhNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OkZpcmVBY3RpdmF0ZUV2ZW50KGlkZW50aWZpZXIoKSwgc2VydmljZVdvcmtlcklkZW50
aWZpZXIpKTsKLX0KLQogdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2godWlu
dDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyPiBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgc2VuZFRvQ29udGV4dFBy
b2Nlc3MoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTdGFydEZldGNo
KGlkZW50aWZpZXIoKSwgZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
cmVxdWVzdCwgb3B0aW9ucykpOwpAQCAtMTc5LDI1ICsxNjIsMTIgQEAgdm9pZCBXZWJTV1NlcnZl
ckNvbm5lY3Rpb246Om1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNo
UmVxdWVzdEkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NsaWVudENvbm5lY3Rpb246OkRpZE1h
dGNoUmVnaXN0cmF0aW9uIHsgcmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwgc3Rk
OjpudWxsb3B0IH0pOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIFdlYlNXU2VydmVy
Q29ubmVjdGlvbjo6c2VuZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1lc3NhZ2UpCit0ZW1wbGF0ZTx0
eXBlbmFtZSBVPiB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2VuZFRvQ29udGV4dFByb2Nl
c3MoVSYmIG1lc3NhZ2UpCiB7Ci0gICAgaWYgKCFtX2NvbnRleHRDb25uZWN0aW9uKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gbV9jb250ZXh0Q29ubmVjdGlvbi0+c2VuZDxV
PihXVEZNb3ZlKG1lc3NhZ2UpLCAwKTsKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IFN0b3Jh
Z2VQcm9jZXNzOjpzaW5nbGV0b24oKS5nbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkp
CisgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKLXZvaWQg
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzZXRDb250ZXh0Q29ubmVjdGlvbihJUEM6OkNvbm5lY3Rp
b24qIGNvbm5lY3Rpb24pCi17Ci0gICAgbV9jb250ZXh0Q29ubmVjdGlvbiA9IGNvbm5lY3Rpb247
Ci0KLSAgICAvLyBXZSBjYW4gbm93IHN0YXJ0IGFueSBwZW5kaW5nIHNlcnZpY2Ugd29ya2VyIHVw
ZGF0ZXMuCi0gICAgZm9yIChhdXRvJiBwZW5kaW5nQ29udGV4dERhdGEgOiBtX3BlbmRpbmdDb250
ZXh0RGF0YXMpCi0gICAgICAgIGluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChwZW5kaW5nQ29u
dGV4dERhdGEpOwotICAgIAotICAgIG1fcGVuZGluZ0NvbnRleHREYXRhcy5jbGVhcigpOwotfQot
ICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggN2YxY2Q1MWVj
ZjEuLmI4MGIzYmZkNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCkBA
IC00Niw3ICs0Niw2IEBAIHB1YmxpYzoKICAgICB+V2ViU1dTZXJ2ZXJDb25uZWN0aW9uKCkgZmlu
YWw7CiAKICAgICB2b2lkIGRpc2Nvbm5lY3RlZEZyb21XZWJQcm9jZXNzKCk7Ci0gICAgdm9pZCBz
ZXRDb250ZXh0Q29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qKTsKICAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCiAgICAg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0K
QEAgLTc1LDIyICs3NCwxNSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBtYXRjaFJlZ2lzdHJhdGlv
bih1aW50NjRfdCByZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpVUkwmIGNsaWVudFVSTCk7
CiAKLSAgICAvLyBNZXNzYWdlcyB0byB0aGUgU1cgY29udGV4dCBXZWJQcm9jZXNzCi0gICAgdm9p
ZCBpbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNvbnRleHREYXRhJikgZmluYWw7Ci0gICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2
ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKLQogICAgIElQQzo6
Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBmaW5hbCB7IHJldHVybiBtX2Nv
bnRlbnRDb25uZWN0aW9uLnB0cigpOyB9CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3Rp
bmF0aW9uSUQoKSBmaW5hbCB7IHJldHVybiBpZGVudGlmaWVyKCk7IH0KLQotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFU+IGJvb2wgc2VuZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1lc3NhZ2UpOwogICAg
IAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgc2VuZFRvQ29udGV4dFByb2Nlc3MoVSYm
IG1lc3NhZ2UpOworCiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKICAgICBSZWY8
SVBDOjpDb25uZWN0aW9uPiBtX2NvbnRlbnRDb25uZWN0aW9uOwogICAgIFJlZlB0cjxJUEM6OkNv
bm5lY3Rpb24+IG1fY29udGV4dENvbm5lY3Rpb247Ci0gICAgCi0gICAgRGVxdWU8V2ViQ29yZTo6
U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBtX3BlbmRpbmdDb250ZXh0RGF0YXM7CiB9OyAvLyBj
bGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb24KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hOGM1OWVlOTk5MgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmgiCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNv
bm5lY3Rpb24pCisgICAgOiBtX2lwY0Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKK3sK
K30KKworSVBDOjpDb25uZWN0aW9uKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1l
c3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkKK3sKKyAgICByZXR1cm4gbV9pcGNDb25uZWN0aW9uLnB0
cigpOworfQorCit1aW50NjRfdCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3Nh
Z2VTZW5kZXJEZXN0aW5hdGlvbklEKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25DbG9zZWQoKQoreworICAgIC8v
IEZJWE1FOiBEbyB3aGF0IGhlcmUuLi4/Cit9CisKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhJiBkYXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uOjpJbnN0YWxsU2VydmljZVdvcmtlcihkYXRhKSk7Cit9CisKK3ZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpGaXJlSW5zdGFsbEV2ZW50KHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKSk7Cit9CisKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2
aWNlV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6RmlyZUFjdGl2YXRlRXZlbnQoc2VydmljZVdvcmtlcklkZW50aWZp
ZXIpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjMwYmQ4Mzg0
YjJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNjkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5k
ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uIDogcHVibGljIFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiwgcHVibGlj
IElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1Ymxp
YzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbm5lY3Rp
b25DbG9zZWQoKTsKKworICAgIElQQzo6Q29ubmVjdGlvbiogaXBjQ29ubmVjdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1faXBjQ29ubmVjdGlvbi5wdHIoKTsgfQorCisgICAgLy8gSVBDOjpNZXNzYWdl
UmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYpIGZpbmFsOworCitwcml2YXRlOgorICAgIFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsKKworICAgIC8vIElQQzo6TWVzc2Fn
ZVNlbmRlcgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBm
aW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGZpbmFsOwor
CisgICAgLy8gTWVzc2FnZXMgdG8gdGhlIFNXIGhvc3QgV2ViUHJvY2VzcworICAgIHZvaWQgaW5z
dGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CisgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CisgICAgCisgICAgUmVmPElQ
Qzo6Q29ubmVjdGlvbj4gbV9pcGNDb25uZWN0aW9uOworICAgIAorfTsgLy8gY2xhc3MgV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOWRjOGMxNjNiNDEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzUgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKKworbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIHsKKyAg
ICAjIFdoZW4gcG9zc2libGUsIHRoZXNlIG1lc3NhZ2VzIGNhbiBiZSBpbXBsZW1lbnRlZCBkaXJl
Y3RseSBieSBXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24KKworICAgIFNjcmlw
dENvbnRleHRGYWlsZWRUb1N0YXJ0KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFN0cmluZyBtZXNzYWdlKTsKKyAgICBTY3JpcHRDb250ZXh0U3RhcnRlZChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKTsKKyAgICBEaWRGaW5pc2hJ
bnN0YWxsKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wg
d2FzU3VjY2Vzc2Z1bCk7CisgICAgRGlkRmluaXNoQWN0aXZhdGlvbihXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKTsKKyAgICBTZXRTZXJ2aWNlV29ya2VySGFzUGVu
ZGluZ0V2ZW50cyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKTsKK30KKworI2VuZGlmIC8vIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nl
c3MvU3RvcmFnZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9y
YWdlUHJvY2Vzcy5jcHAKaW5kZXggMTllN2QwMGNhNWEuLjFlNGExYWViMGU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcApAQCAtMzMsMTAg
KzMzLDEzIEBACiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAi
V2ViU1dPcmlnaW5TdG9yZS5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyQ29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vic2l0
ZURhdGEuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0lEQktleURhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9TV1NlcnZlcldvcmtlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vj
dXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KQEAgLTc5LDggKzgy
LDkgQEAgYm9vbCBTdG9yYWdlUHJvY2Vzczo6c2hvdWxkVGVybWluYXRlKCkKIHZvaWQgU3RvcmFn
ZVByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKG1fd29ya2VyQ29udGV4dFByb2Nlc3NDb25u
ZWN0aW9uID09ICZjb25uZWN0aW9uKSB7Ci0gICAgICAgIG1fd29ya2VyQ29udGV4dFByb2Nlc3ND
b25uZWN0aW9uID0gbnVsbHB0cjsKKyAgICBpZiAobV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
ICYmIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+aXBjQ29ubmVjdGlvbigpID09ICZjb25u
ZWN0aW9uKSB7CisgICAgICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+Y29ubmVjdGlv
bkNsb3NlZCgpOworICAgICAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gPSBudWxscHRy
OwogICAgICAgICByZXR1cm47CiAgICAgfQogI2Vsc2UKQEAgLTk4LDYgKzEwMiwxNCBAQCB2b2lk
IFN0b3JhZ2VQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIElQQzo6RGVjb2RlcgogICAgICAgICBkaWRSZWNlaXZlU3RvcmFnZVByb2Nlc3NNZXNz
YWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAg
aWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBp
ZiAoYXV0byogc3dDb25uZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpnbG9i
YWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkpIHsKKyAgICAgICAgICAgIGF1dG8qIHdlYlNX
Q29ubmVjdGlvbiA9IHN0YXRpY19jYXN0PFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbio+
KHN3Q29ubmVjdGlvbik7CisgICAgICAgICAgICB3ZWJTV0Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICAgICAgcmV0dXJuOyAgICAgICAg
CisgICAgICAgIH0KKyAgICB9CiB9CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKQEAg
LTM1MSwxNyArMzYzLDE3IEBAIFNXU2VydmVyJiBTdG9yYWdlUHJvY2Vzczo6c3dTZXJ2ZXJGb3JT
ZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICByZXR1cm4gKnJlc3VsdC5pdGVy
YXRvci0+dmFsdWU7CiB9CiAKLUlQQzo6Q29ubmVjdGlvbiogU3RvcmFnZVByb2Nlc3M6Ondvcmtl
ckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbigpCitXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24qIFN0b3JhZ2VQcm9jZXNzOjpnbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkKIHsK
LSAgICByZXR1cm4gbV93b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24uZ2V0KCk7CisgICAg
cmV0dXJuIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5nZXQoKTsKIH0KIAotdm9pZCBTdG9y
YWdlUHJvY2Vzczo6Y3JlYXRlV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKCkKK3ZvaWQg
U3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQogewotICAg
IGlmIChtX3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pCisgICAgaWYg
KG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKQogICAgICAgICBy
ZXR1cm47CiAgICAgCi0gICAgbV93YWl0aW5nRm9yV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0
aW9uID0gdHJ1ZTsKKyAgICBtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVj
dGlvbiA9IHRydWU7CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6U3RvcmFnZVByb2Nlc3NQcm94eTo6R2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9u
KCksIDApOwogfQogCkBAIC0zODIsOCArMzk0LDggQEAgV2ViU1dPcmlnaW5TdG9yZSogU3RvcmFn
ZVByb2Nlc3M6OnN3T3JpZ2luU3RvcmVGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb24K
IAogdm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlkR2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0
aW9uKElQQzo6QXR0YWNobWVudCYmIGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllcikKIHsKLSAg
ICBBU1NFUlQobV93YWl0aW5nRm9yV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKTsKLSAg
ICBtX3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPSBmYWxzZTsKKyAg
ICBBU1NFUlQobV93YWl0aW5nRm9yU2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pOwor
ICAgIG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uID0gZmFsc2U7
CiAKICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKICAgICBJUEM6OkNvbm5lY3Rpb246Oklk
ZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIgPSBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZp
ZXIucmVsZWFzZUZpbGVEZXNjcmlwdG9yKCk7CkBAIC0zOTgsMjUgKzQxMCwxNCBAQCB2b2lkIFN0
b3JhZ2VQcm9jZXNzOjpkaWRHZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpB
dHRhY2htZW50JiYgZW5jbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV93b3JrZXJD
b250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZUNsaWVudENv
bm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsICp0aGlzKTsKLSAgICBtX3dvcmtlckNvbnRl
eHRQcm9jZXNzQ29ubmVjdGlvbi0+b3BlbigpOworICAgIGF1dG8gaXBjQ29ubmVjdGlvbiA9IElQ
Qzo6Q29ubmVjdGlvbjo6Y3JlYXRlQ2xpZW50Q29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmll
ciwgKnRoaXMpOworICAgIGlwY0Nvbm5lY3Rpb24tPm9wZW4oKTsKKyAgICBtX3NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24gPSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNyZWF0ZShX
VEZNb3ZlKGlwY0Nvbm5lY3Rpb24pKTsKICAgICAKICAgICBmb3IgKGF1dG8mIGNvbm5lY3Rpb24g
OiBtX3N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9ucykKICAgICAgICAgY29ubmVjdGlvbi0+
d29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uQ3JlYXRlZCgpOwogfQogCi12b2lkIFN0b3Jh
Z2VQcm9jZXNzOjpzZXJ2aWNlV29ya2VyQ29udGV4dEZhaWxlZFRvU3RhcnQodWludDY0X3Qgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkmIHJlZ2lzdHJhdGlvbktleSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBpZiAoYXV0byogY29u
bmVjdGlvbiA9IG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5nZXQoc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIpKQotICAgICAgICBjb25uZWN0aW9uLT5zY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChy
ZWdpc3RyYXRpb25LZXksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBtZXNzYWdlKTsKLX0KLQot
dm9pZCBTdG9yYWdlUHJvY2Vzczo6c2VydmljZVdvcmtlckNvbnRleHRTdGFydGVkKHVpbnQ2NF90
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKQotewotICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbV9zd1NlcnZl
ckNvbm5lY3Rpb25zLmdldChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpCi0gICAgICAgIGNv
bm5lY3Rpb24tPnNjcmlwdENvbnRleHRTdGFydGVkKHJlZ2lzdHJhdGlvbktleSwgc2VydmljZVdv
cmtlcklkZW50aWZpZXIpOwotfQotCiB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaWRGYWlsRmV0Y2go
dWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRp
ZmllcikKIHsKICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1fc3dTZXJ2ZXJDb25uZWN0aW9u
cy5nZXQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKQpAQCAtNDUzLDI1ICs0NTQsNiBAQCB2
b2lkIFN0b3JhZ2VQcm9jZXNzOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25z
dCBTZXJ2aWNlV29ya2VyQ2xpZW50SQogICAgICAgICBjb25uZWN0aW9uLT5wb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckNsaWVudChkZXN0aW5hdGlvbklkZW50aWZpZXIuc2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIsIG1lc3NhZ2UsIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdp
bik7CiB9CiAKLXZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZEZpbmlzaFNlcnZpY2VXb3JrZXJJbnN0
YWxsKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCi17Ci0gICAg
aWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBtX3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0KHNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyKSkKLSAgICAgICAgY29ubmVjdGlvbi0+ZGlkRmluaXNoSW5zdGFs
bChyZWdpc3RyYXRpb25LZXksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCB3YXNTdWNjZXNzZnVs
KTsKLX0KLQotdm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlkRmluaXNoU2VydmljZVdvcmtlckFjdGl2
YXRpb24odWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgU2VydmljZVdvcmtlcklkZW50
aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCi17Ci0gICAgaWYgKGF1dG8qIGNvbm5lY3Rp
b24gPSBtX3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
KSkKLSAgICAgICAgY29ubmVjdGlvbi0+ZGlkRmluaXNoQWN0aXZhdGlvbihyZWdpc3RyYXRpb25L
ZXksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLX0KLQotCi12b2lkIFN0b3JhZ2VQcm9jZXNz
OjpzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGJvb2wgaGFzUGVuZGluZ0V2ZW50cykKLXsKLSAgICBpZiAoYXV0byogY29ubmVjdGlv
biA9IG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5nZXQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIp
KQotICAgICAgICBjb25uZWN0aW9uLT5zZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgaGFzUGVuZGluZ0V2ZW50cyk7Ci19Ci0KIHZvaWQgU3Rv
cmFnZVByb2Nlc3M6OnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVj
dGlvbiYgY29ubmVjdGlvbikKIHsKICAgICBBU1NFUlQoIW1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5j
b250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCmluZGV4IGVhNTUwMzQ1NGI5Li45ODlmMTEwMDVi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaApA
QCAtNDYsNiArNDYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU3RvcmFnZVRvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb247CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CitjbGFzcyBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlw
ZTsKIHN0cnVjdCBTdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIApAQCAtODAsOCAr
ODEsMTAgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0g
ICAgSVBDOjpDb25uZWN0aW9uKiB3b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKLSAg
ICB2b2lkIGNyZWF0ZVdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbigpOworICAgIC8vIEZv
ciBub3cgd2UganVzdCBoYXZlIG9uZSBnbG9iYWwgY29ubmVjdGlvbiB0byBzZXJ2aWNlIHdvcmtl
ciBjb250ZXh0IHByb2Nlc3Nlcy4KKyAgICAvLyBUaGlzIHdpbGwgY2hhbmdlIGluIHRoZSBmdXR1
cmUuCisgICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBnbG9iYWxTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKCk7CisgICAgdm9pZCBjcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uKCk7CiAKICAgICBXZWJTV09yaWdpblN0b3JlJiBlbnN1cmVTV09yaWdpblN0b3JlRm9yU2Vz
c2lvbihQQUw6OlNlc3Npb25JRCk7CiAgICAgV2ViU1dPcmlnaW5TdG9yZSogc3dPcmlnaW5TdG9y
ZUZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQpIGNvbnN0OwpAQCAtMTE5LDggKzEyMiw2IEBAIHBy
aXZhdGU6CiAjZW5kaWYKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBkaWRH
ZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50JiYgZW5jb2Rl
ZENvbm5lY3Rpb25JZGVudGlmaWVyKTsKLSAgICB2b2lkIHNlcnZpY2VXb3JrZXJDb250ZXh0RmFp
bGVkVG9TdGFydCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgIHZvaWQgc2VydmljZVdv
cmtlckNvbnRleHRTdGFydGVkKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlRmV0Y2hSZXNwb25z
ZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlRmV0Y2hEYXRhKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50
NjRfdCBmZXRjaElkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3Qg
ZW5jb2RlZERhdGFMZW5ndGgpOwpAQCAtMTI4LDkgKzEyOSw2IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRGYWlsRmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2
NF90IGZldGNoSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWROb3RIYW5kbGVGZXRjaCh1aW50NjRf
dCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKTsK
IAotICAgIHZvaWQgZGlkRmluaXNoU2VydmljZVdvcmtlckluc3RhbGwodWludDY0X3Qgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNj
ZXNzZnVsKTsKLSAgICB2b2lkIGRpZEZpbmlzaFNlcnZpY2VXb3JrZXJBY3RpdmF0aW9uKHVpbnQ2
NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwot
ICAgIHZvaWQgc2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHModWludDY0X3Qgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBi
b29sIGhhc1BlbmRpbmdFdmVudHMpOwogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXJDbGllbnQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRl
c3RpbmF0aW9uSWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIHNvdXJjZU9yaWdpbik7CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKQEAgLTE1OCw4ICsxNTYsOCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKICAgICB2b2lkIGRpZENyZWF0ZVdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbihjb25z
dCBJUEM6OkF0dGFjaG1lbnQmKTsKIAotICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fd29y
a2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uOwotICAgIGJvb2wgbV93YWl0aW5nRm9yV29ya2Vy
Q29udGV4dFByb2Nlc3NDb25uZWN0aW9uIHsgZmFsc2UgfTsKKyAgICBSZWZQdHI8V2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uPiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CisgICAg
Ym9vbCBtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNl
IH07CiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OlNXU2VydmVyPj4gbV9zd1NlcnZlcnM7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uKj4gbV9zd1NlcnZlckNvbm5lY3Rpb25zOwogICAgIEhhc2hNYXA8UEFMOjpT
ZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxXZWJTV09yaWdpblN0b3JlPj4gbV9zd09yaWdpblN0
b3JlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVBy
b2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQ
cm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDNiNmQzMzkzNmU4Li4wNTc0OTAyMzNmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC0zOCwxMiArMzgsNiBAQCBtZXNzYWdlcyAtPiBTdG9yYWdlUHJvY2VzcyBM
ZWdhY3lSZWNlaXZlciB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIERpZEdldFdv
cmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbkhh
bmRsZSkKIAotICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0RmFpbGVkVG9TdGFydCh1aW50NjRfdCBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSByZWdpc3RyYXRpb25LZXksIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTdHJpbmcgbWVzc2FnZSkKLSAgICBTZXJ2aWNlV29y
a2VyQ29udGV4dFN0YXJ0ZWQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgcmVnaXN0cmF0aW9uS2V5LCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKLSAg
ICBEaWRGaW5pc2hTZXJ2aWNlV29ya2VySW5zdGFsbCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSByZWdpc3Ry
YXRpb25LZXksIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpOwotICAgIERpZEZpbmlzaFNlcnZpY2VXb3Jr
ZXJBY3RpdmF0aW9uKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlvbktleSwgV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAgIFNl
dFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKTsKLQogICAgIERpZE5vdEhhbmRsZUZl
dGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElk
ZW50aWZpZXIpCiAgICAgRGlkRmFpbEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpCiAgICAgRGlkUmVjZWl2ZUZldGNoUmVz
cG9uc2UodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNo
SWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlVG9XZWJQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggNDU0NWJjNGEyNTIuLmZlNDNmMTc0NjhhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VUb1dl
YlByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgIldlYklE
QkNvbm5lY3Rpb25Ub0NsaWVudE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgPHd0Zi9SdW5M
b29wLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBQQUw7CkBAIC04NSw2ICs4NywxMSBAQCB2b2lkIFN0
b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3RpbwogICAgICAgICAgICAgaXRlcmF0b3ItPnZhbHVlLT5kaWRSZWNlaXZl
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKwor
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAg
ICAgU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLmdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24oKS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CiAjZW5kaWYKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
MTQ4LDEwICsxNTUsOCBAQCB2b2lkIFN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjplc3Rh
Ymxpc2hTV1NlcnZlckNvbm5lY3Rpb24oU2Vzc2lvbklEIHNlc3NpbwogCiAgICAgU3RvcmFnZVBy
b2Nlc3M6OnNpbmdsZXRvbigpLnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKCooY29ubmVjdGlv
blJlc3VsdC5pdGVyYXRvci0+dmFsdWUpKTsKIAotICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0g
U3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLndvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlv
bigpKQotICAgICAgICBjb25uZWN0aW9uUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+c2V0Q29udGV4
dENvbm5lY3Rpb24oY29ubmVjdGlvbik7Ci0gICAgZWxzZQotICAgICAgICBTdG9yYWdlUHJvY2Vz
czo6c2luZ2xldG9uKCkuY3JlYXRlV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKCk7Cisg
ICAgaWYgKCFTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkuZ2xvYmFsU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbigpKQorICAgICAgICBTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkuY3JlYXRl
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOwogfQogCiB2b2lkIFN0b3JhZ2VUb1dlYlByb2Nl
c3NDb25uZWN0aW9uOjpyZW1vdmVTV1NlcnZlckNvbm5lY3Rpb24odWludDY0X3Qgc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIpCkBAIC0xNjUsMTEgKzE3MCw4IEBAIHZvaWQgU3RvcmFnZVRvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb246OnJlbW92ZVNXU2VydmVyQ29ubmVjdGlvbih1aW50NjRfdCBzZXJ2
ZXJDb25uCiAKIHZvaWQgU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OndvcmtlckNvbnRl
eHRQcm9jZXNzQ29ubmVjdGlvbkNyZWF0ZWQoKQogewotICAgIGF1dG8qIGlwY0Nvbm5lY3Rpb24g
PSBTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkud29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0
aW9uKCk7Ci0gICAgQVNTRVJUKGlwY0Nvbm5lY3Rpb24pOwotCi0gICAgZm9yIChhdXRvJiBzd0Nv
bm5lY3Rpb24gOiBtX3N3Q29ubmVjdGlvbnMudmFsdWVzKCkpCi0gICAgICAgIHN3Q29ubmVjdGlv
bi0+c2V0Q29udGV4dENvbm5lY3Rpb24oaXBjQ29ubmVjdGlvbik7CisgICAgZm9yIChhdXRvKiBz
ZXJ2ZXIgOiBTV1NlcnZlcjo6YWxsU2VydmVycygpKQorICAgICAgICBzZXJ2ZXItPnNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25DcmVhdGVkKCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTNjZmI3ZmEzZmEuLjBl
Nzc4YTBhMGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTEwMTksNiArMTAxOSw4IEBACiAJCTUxNEJERUQzMTZDOThFREQwMEU0RTI1
RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE0QkRFRDIxNkM5OEVERDAwRTRFMjVFIC8qIFN0YXRpc3RpY3NSZXF1
ZXN0LmggKi87IH07CiAJCTUxNEQ5RjU3MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
NEQ5RjU1MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIuaCAqLzsgfTsKIAkJ
NTE0RDlGNTgxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEQ5RjU2MTkxMTlEMzUw
MDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIubW0gKi87IH07CisJCTUxNTI2MkJDMUZCOTUx
NUQwMDcwRTU3OSAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1MjYyQkIxRkI5
NTEzMTAwNzBFNTc5IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgg
Ki87IH07CisJCTUxNTI2MkJEMUZCOTUxNjEwMDcwRTU3OSAvKiBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1MjYyQkExRkI5NTEzMTAwNzBFNTc5IC8qIFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUxNTc4
QjgzMTIwOUVDRUYwMEEzN0M0QSAvKiBBUElEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTU3OEI4MjEyMDlFQ0VGMDBBMzdDNEEgLyogQVBJRGF0
YS5oICovOyB9OwogCQk1MTVCRTE3NzFENTNGRTg3MDBERDdDNjggLyogV2ViR2FtZXBhZFByb3Zp
ZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
NUJFMTczMUQ1M0ZEREMwMEREN0M2OCAvKiBXZWJHYW1lcGFkUHJvdmlkZXIuY3BwICovOyB9Owog
CQk1MTVCRTE3OTFENTNGRThGMDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVCRTE3NDFENTNGRERD
MDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmggKi87IH07CkBAIC0xMDU4LDYgKzEwNjAs
NyBAQAogCQk1MTdERDVCRTE4MERBN0QzMDA4MTY2MEIgLyogU3RvcmFnZVByb2Nlc3NQcm94eS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdERDVC
QzE4MERBN0QzMDA4MTY2MEIgLyogU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAgKi87IH07CiAJCTUx
N0RENUJGMTgwREE3RDMwMDgxNjYwQiAvKiBTdG9yYWdlUHJvY2Vzc1Byb3h5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdERDVCRDE4MERBN0QzMDA4
MTY2MEIgLyogU3RvcmFnZVByb2Nlc3NQcm94eS5oICovOyB9OwogCQk1MTgzRERFQzE2MzBCREZD
MDA4QkU1QzcgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDVCMEQ0MTYyRjdBN0EwMEUyNzcwOSAv
KiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwICovOyB9OworCQk1MTg1NDMwRTFGQjY4MTYx
MDA0NzhGOTUgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODU0MzBEMUZCNjgwRkEwMDQ3
OEY5NSAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwICovOyB9OwogCQk1MTg3
MUI1QjEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4NzFCNTkxMjdDQjg5RDAwRjc2MjMy
IC8qIFdlYkNvbnRleHRNZW51LmNwcCAqLzsgfTsKIAkJNTE4NzFCNUMxMjdDQjg5RDAwRjc2MjMy
IC8qIFdlYkNvbnRleHRNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTg3MUI1QTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuaCAq
LzsgfTsKIAkJNTE4QUNBRUExMkFFRTZCQjAwQjA0QjgzIC8qIFdLUHJvdGVjdGlvblNwYWNlVHlw
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxOEFD
QUU5MTJBRUU2QkIwMEIwNEI4MyAvKiBXS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMzNTksNiArMzM2Miw5
IEBACiAJCTUxNEJERUQyMTZDOThFREQwMEU0RTI1RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGF0aXN0aWNzUmVxdWVzdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTREOUY1NTE5MTE5RDM1MDAwMDYzQTcgLyogU2Vy
dmljZXNDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZp
Y2VzQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTREOUY1NjE5
MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2VydmljZXNDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MTUyNjJCOTFGQjk1MDM1MDA3MEU1NzkgLyogV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTE1MjYyQkExRkI5NTEzMTAwNzBFNTc5IC8qIFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdl
UmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTUyNjJCQjFGQjk1
MTMxMDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1NzhCODIx
MjA5RUNFRjAwQTM3QzRBIC8qIEFQSURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQVBJRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVCRTE3MzFE
NTNGRERDMDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdhbWVwYWRQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxNUJFMTc0MUQ1M0ZEREMwMEREN0M2OCAvKiBXZWJHYW1lcGFk
UHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR2FtZXBhZFBy
b3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMzk2LDYgKzM0MDIsOCBA
QAogCQk1MTdERDVCQzE4MERBN0QzMDA4MTY2MEIgLyogU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlUHJvY2Vzc1Byb3h5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3REQ1QkQxODBEQTdEMzAwODE2
NjBCIC8qIFN0b3JhZ2VQcm9jZXNzUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3RvcmFnZVByb2Nlc3NQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MTgzQjM5MzEzNzlGODVDMDBFODc1NEUgLyogU2hpbS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQueGNjb25maWc7IHBhdGggPSBTaGltLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MTg1NDMwQzFGQjY4MEY5MDA0NzhGOTUgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTg1
NDMwRDFGQjY4MEZBMDA0NzhGOTUgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODcxQjU5
MTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb250ZXh0TWVudS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxODcxQjVBMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0TWVudS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MThBQ0FFOTEyQUVFNkJCMDBCMDRCODMgLyogV0tQ
cm90ZWN0aW9uU3BhY2VUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
S1Byb3RlY3Rpb25TcGFjZVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02
MzgxLDYgKzYzODksOSBAQAogCQkJCTUxN0E1MzA5MUY0NzlFMzEwMERDREMwQSAvKiBXZWJTV1Nl
cnZlckNvbm5lY3Rpb24uY3BwICovLAogCQkJCTUxN0E1MzA3MUY0NzlFMzEwMERDREMwQSAvKiBX
ZWJTV1NlcnZlckNvbm5lY3Rpb24uaCAqLywKIAkJCQk1MTdBNTMwODFGNDc5RTMxMDBEQ0RDMEEg
LyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovLAorCQkJCTUxODU0MzBEMUZC
NjgwRkEwMDQ3OEY5NSAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwICovLAor
CQkJCTUxODU0MzBDMUZCNjgwRjkwMDQ3OEY5NSAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaCAqLywKKwkJCQk1MTUyNjJCOTFGQjk1MDM1MDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovLAogCQkJKTsKIAkJCXBhdGggPSBTZXJ2
aWNlV29ya2VyOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTgyMDAsNiArODIxMSw4
IEBACiAJCQkJNDYwRjQ4OEUxRjk5NkY2QzAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uTWVzc2FnZXMuaCAqLywKIAkJCQk1MTdBNTJENzFGNDNBOUI2MDBEQ0RDMEEgLyog
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQk1MTdBNTJE
NjFGNDNBOUI2MDBEQ0RDMEEgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCAqLywK
KwkJCQk1MTUyNjJCQTFGQjk1MTMxMDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQk1MTUyNjJCQjFGQjk1MTMxMDA3MEU1
NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCAqLywKIAkJCQkx
QUFGMDhCNTE5MjY5RTZEMDBCNjM5MEMgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQUFGMDhCNjE5MjY5RTZEMDBCNjM5MEMgLyogV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyTWVzc2FnZXMuaCAqLywKIAkJCQk3QzM2MUQ3NjE5MjgwM0JEMDAz
NkE1OUQgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovLApAQCAtOTA1OSw2ICs5MDcyLDcgQEAKIAkJCQlCQzdCNjI1MjEyQTQzQzk2MDBEMTc0QTQg
LyogV2ViUGFnZUdyb3VwRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3QjYyMTUxMkE0MjE5
QTAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cFByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDlF
QTMwRjFBOTZDQkZGMDAyRDI4MDcgLyogV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKKwkJCQk1MTUyNjJCQzFGQjk1MTVEMDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMwQ0U3MkEx
MTI0N0U3MUQwMEJDMEVDNCAvKiBXZWJQYWdlTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJENUM5RDA2MTlDODFEOEYwMEIzQzVDMSAvKiBXZWJQYWdlT3ZlcmxheS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMwMzJERDExMEY0Mzg5RjAwNThDMTVBIC8qIFdlYlBhZ2VQcm94eS5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xMDg1OCw2ICsxMDg3Miw3IEBACiAJCQkJOUZCNUYzOTQxNjlFNkE4MDAw
MkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMzA5
MzQ1QTEzMTVCOTk4MDA5N0E3QkMgLyogV0tDb29raWVNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUExRkI2ODI1MUY2RTUxODIwMEM0M0Y5RiAvKiBXS0NyYXNoUmVwb3J0ZXIubW0gaW4g
U291cmNlcyAqLywKKwkJCQk1MTUyNjJCRDFGQjk1MTYxMDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxMkY1OEY5MTJBODhBNTQwMDYyOTUzMCAvKiBXS0NyZWRlbnRpYWwuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkM0MDc1RjcxMjRGRjAyNzAwNjhGMjBBIC8qIFdLRGF0YS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQUZGNDkwMDE4MzNERTc4MDA5QUIxNUEgLyogV0tEZXByZWNhdGVkRnVuY3Rp
b25zLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTA5MjYsNiArMTA5NDEsNyBAQAogCQkJCTM3QzRD
MDkzMTgxNEIzQUYwMDM2ODhCOSAvKiBXS05TQXJyYXkubW0gaW4gU291cmNlcyAqLywKIAkJCQkz
NzNDRUFENTE4NTQxN0FFMDA4QzM2M0QgLyogV0tOU0RhdGEubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkzNzFBMTk0MTE4MjREMjkzMDBGMzJBNUUgLyogV0tOU0RpY3Rpb25hcnkubW0gaW4gU291cmNl
cyAqLywKKwkJCQk1MTg1NDMwRTFGQjY4MTYxMDA0NzhGOTUgLyogV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3MkNBRjBDMTgzM0ZEOTEwMDQw
QUMyNyAvKiBXS05TRXJyb3IubW0gaW4gU291cmNlcyAqLywKIAkJCQkzNzVFMEUxMzFENjY0MzI3
MDBFRkVDMkMgLyogV0tOU051bWJlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3OEUxQTQ5MTgy
MDhDRDYwMDMxMDA3QSAvKiBXS05TU3RyaW5nLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggZWRiMjQ1NDczOTkuLmRmZGM2MmY4NmQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0zNyw2ICszNyw3IEBACiAj
aW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNLZXlzLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNT
dG9yZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRQcm92aWRlci5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvRWRpdG9yQ2xpZW50Lmg+CkBAIC05NSw4ICs5NiwxMCBAQCB2b2lkIFdlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVm
ZXJlbmNlc1N0b3JlJgogICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkuc2V0RmV0Y2hBUElFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJl
bmNlc0tleTo6ZmV0Y2hBUElFbmFibGVkS2V5KCkpKTsKIH0KIAotdm9pZCBXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIodWludDY0X3Qgc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkK
K3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29ya2Vy
KGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKIHsKKyAgICBMT0coU2Vydmlj
ZVdvcmtlciwgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdv
cmtlciBmb3Igd29ya2VyICVzIiwgZGF0YS5zZXJ2aWNlV29ya2VySWRlbnRpZmllci5sb2dnaW5n
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKICAgICAvLyBGSVhNRTogUHJvdmlkZSBhIHNlbnNp
Y2FsIHNlc3Npb24gSUQuCiAgICAgYXV0byBzZXNzaW9uSUQgPSBQQUw6OlNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpOwogCkBAIC0xMTMsNyArMTE2LDcgQEAgdm9pZCBXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIodWludDY0X3Qgc2VydmVyQ29u
bmVjdGkKICAgICBhdXRvIGZyYW1lTG9hZGVyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTZXJ2
aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ+KHNlc3Npb25JRCwgbV9wYWdlSUQsICsrbV9wcmV2
aW91c1NlcnZpY2VXb3JrZXJJRCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50
Rm9yTWFpbkZyYW1lID0gZnJhbWVMb2FkZXJDbGllbnQucmVsZWFzZSgpOwogCi0gICAgYXV0byBz
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgPSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0
ZShXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSwgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IGRhdGEsIHNlc3Npb25JRCwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FjaGVTdG9yYWdlUHJv
dmlkZXIoKSk7CisgICAgYXV0byBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgPSBTZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHk6OmNyZWF0ZShXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSwgZGF0YSwg
c2Vzc2lvbklELCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZVN0b3JhZ2VQcm92aWRlcigp
KTsKICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5yZWdpc3RlclNlcnZpY2VXb3Jr
ZXJUaHJlYWRGb3JJbnN0YWxsKFdURk1vdmUoc2VydmljZVdvcmtlclRocmVhZFByb3h5KSk7CiAK
ICAgICBMT0coU2VydmljZVdvcmtlciwgIkNvbnRleHQgcHJvY2VzcyBQSUQ6ICVpIGNyZWF0ZWQg
d29ya2VyIHRocmVhZFxuIiwgZ2V0cGlkKCkpOwpAQCAtMTIxLDE1ICsxMjQsMTAgQEAgdm9pZCBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIodWludDY0
X3Qgc2VydmVyQ29ubmVjdGkKIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
c2VydmljZVdvcmtlclN0YXJ0ZWRXaXRoTWVzc2FnZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBleGNlcHRpb25NZXNzYWdlKQog
ewotICAgIGF1dG8qIHRocmVhZFByb3h5ID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCku
c2VydmljZVdvcmtlclRocmVhZFByb3h5KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICBB
U1NFUlQodGhyZWFkUHJveHkpOwotICAgIAotICAgIGF1dG8mIGRhdGEgPSB0aHJlYWRQcm94eS0+
dGhyZWFkKCkuY29udGV4dERhdGEoKTsKLSAgICAKICAgICBpZiAoZXhjZXB0aW9uTWVzc2FnZS5p
c0VtcHR5KCkpCi0gICAgICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpTZXJ2aWNlV29ya2VyQ29udGV4dFN0YXJ0ZWQodGhyZWFk
UHJveHktPnRocmVhZCgpLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCksIGRhdGEucmVnaXN0
cmF0aW9uS2V5LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciksIDApOworICAgICAgICBtX2Nvbm5l
Y3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OlNjcmlwdENvbnRleHRTdGFydGVkKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KSwgMCk7CiAgICAgZWxzZQotICAgICAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6U2VydmljZVdvcmtlckNvbnRleHRGYWlsZWRU
b1N0YXJ0KHRocmVhZFByb3h5LT50aHJlYWQoKS5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigp
LCBkYXRhLnJlZ2lzdHJhdGlvbktleSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGV4Y2VwdGlv
bk1lc3NhZ2UpLCAwKTsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTY3JpcHRDb250ZXh0
RmFpbGVkVG9TdGFydChzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZXhjZXB0aW9uTWVzc2FnZSks
IDApOwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzdGFydEZldGNo
KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50
aWZpZXIsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlcklkZW50aWZpZXI+IHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGZXRjaE9wdGlvbnMmJiBv
cHRpb25zKQpAQCAtMTQ5LDE1ICsxNDcsMTMgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShTZXJ2aWMKICAg
ICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlKGRlc3RpbmF0aW9uSWRlbnRpZmllciwgU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjphZG9wdChtZXNzYWdlLnZlY3RvcigpKSwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2lu
KTsKIH0KIAotdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZmlyZUluc3RhbGxF
dmVudCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OmZpcmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsK
LSAgICBVTlVTRURfUEFSQU0oc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpOwogICAgIFNXQ29u
dGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZpcmVJbnN0YWxsRXZlbnQoaWRlbnRpZmllcik7CiB9
CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpcmVBY3RpdmF0ZUV2ZW50
KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBpZGVudGlmaWVyKQordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Zmly
ZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAg
ICBVTlVTRURfUEFSQU0oc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpOwogICAgIFNXQ29udGV4
dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZpcmVBY3RpdmF0ZUV2ZW50KGlkZW50aWZpZXIpOwogfQog
CkBAIC0xNjgsMjggKzE2NCwxNyBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
Ojpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZXJ2aQogCiB2b2lkIFdl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpkaWRGaW5pc2hJbnN0YWxsKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwp
CiB7Ci0gICAgYXV0byogdGhyZWFkUHJveHkgPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24o
KS5zZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAg
IEFTU0VSVCh0aHJlYWRQcm94eSk7Ci0KLSAgICBhdXRvJiBkYXRhID0gdGhyZWFkUHJveHktPnRo
cmVhZCgpLmNvbnRleHREYXRhKCk7Ci0gICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkRpZEZpbmlzaFNlcnZpY2VXb3JrZXJJbnN0
YWxsKHRocmVhZFByb3h5LT50aHJlYWQoKS5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpLCBk
YXRhLnJlZ2lzdHJhdGlvbktleSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHdhc1N1Y2Nlc3Nm
dWwpLCAwKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OkRpZEZpbmlzaEluc3RhbGwoc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIHdhc1N1Y2Nlc3NmdWwpLCAwKTsKIH0KIAogdm9pZCBXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlkRmluaXNoQWN0aXZhdGlvbihTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKIHsKLSAgICBhdXRvKiB0aHJlYWRQ
cm94eSA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eShzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgQVNTRVJUKHRocmVhZFByb3h5KTsK
LQotICAgIGF1dG8mIGRhdGEgPSB0aHJlYWRQcm94eS0+dGhyZWFkKCkuY29udGV4dERhdGEoKTsK
LSAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdl
UHJvY2Vzczo6RGlkRmluaXNoU2VydmljZVdvcmtlckFjdGl2YXRpb24odGhyZWFkUHJveHktPnRo
cmVhZCgpLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCksIGRhdGEucmVnaXN0cmF0aW9uS2V5
LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciksIDApOworICAgIG1fY29ubmVjdGlvblRvU3RvcmFn
ZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
RGlkRmluaXNoQWN0aXZhdGlvbihzZXJ2aWNlV29ya2VySWRlbnRpZmllciksIDApOwogfQogCiB2
b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzZXRTZXJ2aWNlV29ya2VySGFzUGVu
ZGluZ0V2ZW50cyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKQogewotICAgIGF1dG8qIHRocmVhZFByb3h5ID0gU1dD
b250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlclRocmVhZFByb3h5KHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICBBU1NFUlQodGhyZWFkUHJveHkpOwotCi0gICAgbV9j
b25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6
OlNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKHRocmVhZFByb3h5LT50aHJlYWQoKS5z
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgaGFz
UGVuZGluZ0V2ZW50cyksIDApOworICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6U2V0U2VydmljZVdv
cmtlckhhc1BlbmRpbmdFdmVudHMoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGhhc1BlbmRpbmdF
dmVudHMpLCAwKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmgKaW5kZXggOGRhNmE1ZDZlYWQuLmZhMmFjODM5MmJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTU4LDExICs1OCwxMSBAQCBwcml2YXRlOgogCiAg
ICAgLy8gSVBDIG1lc3NhZ2VzLgogICAgIHZvaWQgc2VydmljZVdvcmtlclN0YXJ0ZWRXaXRoTWVz
c2FnZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBleGNl
cHRpb25NZXNzYWdlKSBmaW5hbDsKLSAgICB2b2lkIGluc3RhbGxTZXJ2aWNlV29ya2VyKHVpbnQ2
NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEmKTsKKyAgICB2b2lkIGluc3RhbGxTZXJ2aWNlV29ya2VyKGNvbnN0IFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpOwogICAgIHZvaWQgc3RhcnRGZXRjaCh1
aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlm
aWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyPiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmKTsKICAgICB2
b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIG1lc3NhZ2UsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyJiBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7Ci0g
ICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgdm9pZCBmaXJlQWN0
aXZhdGVFdmVudCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVu
dChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAKICAgICBSZWY8SVBDOjpDb25u
ZWN0aW9uPiBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzOwogICAgIHVpbnQ2NF90IG1fcGFn
ZUlEIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbgppbmRleCA1ZDI1NTVhZGNjOS4uMTQ5OGQyNzIxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0yMywxMSArMjMsMTEgQEAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKIG1lc3NhZ2VzIC0+IFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uIHsKLSAgICBJbnN0YWxsU2VydmljZVdvcmtlcih1aW50NjRfdCBzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSBjb250ZXh0RGF0YSkKKyAgICBJbnN0YWxsU2VydmljZVdvcmtlcihzdHJ1Y3QgV2ViQ29y
ZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhIGNvbnRleHREYXRhKQogICAgIFN0YXJ0RmV0Y2go
dWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRp
Zmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcj4gc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBz
dHJ1Y3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zIG9wdGlvbnMpCiAgICAgUG9zdE1lc3NhZ2VUb1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBk
ZXN0aW5hdGlvbklkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdlLCBzdHJ1Y3Qg
V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwg
U3RyaW5nIHNvdXJjZU9yaWdpbikKLSAgICBGaXJlSW5zdGFsbEV2ZW50KHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBp
ZGVudGlmaWVyKQotICAgIEZpcmVBY3RpdmF0ZUV2ZW50KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVy
KQorICAgIEZpcmVJbnN0YWxsRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIg
aWRlbnRpZmllcikKKyAgICBGaXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBpZGVudGlmaWVyKQogfQogCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326807</attachid>
            <date>2017-11-13 14:49:30 -0800</date>
            <delta_ts>2017-11-13 15:00:28 -0800</delta_ts>
            <desc>PFR</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>116113</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggMGRhYmI3MzJhM2IuLjZhOGNjMzQyYTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3
LTExLTEzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNYXNz
aXZlICJTZXJ2ZXItcHJvY2Vzcy10by1jb250ZXh0LXByb2Nlc3MiIGNvbm5lY3Rpb24gb3Zlcmhh
dWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk1
NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0
Zi9PYmplY3RJZGVudGlmaWVyLmg6CisgICAgICAgIChXVEY6OmdlbmVyYXRlT2JqZWN0SWRlbnRp
Zmllcik6CisgICAgICAgIChXVEY6Om1ha2VPYmplY3RJZGVudGlmaWVyKTogRGVsZXRlZC4KKwog
MjAxNy0xMS0xMyAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CiAKICAgICAgICAg
c3RkOjpleHBlY3RlZDogZml4IGFuZCB0ZXN0IG1vdmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL09iamVjdElkZW50aWZpZXIuaCBiL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIu
aAppbmRleCBlZjM3MTU0YTMxZS4uNjdkZWUwMjZiNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL09iamVjdElkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PYmplY3RJZGVudGlm
aWVyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVT4gZnJpZW5kIE9iamVjdElkZW50aWZpZXI8VT4gbWFrZU9iamVj
dElkZW50aWZpZXIodWludDY0X3QpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGZyaWVuZCBP
YmplY3RJZGVudGlmaWVyPFU+IGdlbmVyYXRlT2JqZWN0SWRlbnRpZmllcigpOwogICAgIGZyaWVu
ZCBzdHJ1Y3QgSGFzaFRyYWl0czxPYmplY3RJZGVudGlmaWVyPjsKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVPiBmcmllbmQgc3RydWN0IE9iamVjdElkZW50aWZpZXJIYXNoOwogCkBAIC04MywxMiAr
ODMsMTQgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB1aW50NjRfdCBtX2lkZW50aWZpZXIgeyAw
IH07CisgICAgc3RhdGljIHVpbnQ2NF90IHNfY3VycmVudElkZW50aWZpZXI7CiB9OwogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgT2JqZWN0SWRlbnRpZmllcjxUPiBtYWtlT2JqZWN0SWRl
bnRpZmllcih1aW50NjRfdCBpZGVudGlmaWVyKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gdWludDY0
X3QgT2JqZWN0SWRlbnRpZmllcjxUPjo6c19jdXJyZW50SWRlbnRpZmllcjsKKwordGVtcGxhdGU8
dHlwZW5hbWUgVD4gaW5saW5lIE9iamVjdElkZW50aWZpZXI8VD4gZ2VuZXJhdGVPYmplY3RJZGVu
dGlmaWVyKCkKIHsKLSAgICBBU1NFUlQoT2JqZWN0SWRlbnRpZmllcjxUPjo6aXNWYWxpZElkZW50
aWZpZXIoaWRlbnRpZmllcikpOwotICAgIHJldHVybiBPYmplY3RJZGVudGlmaWVyPFQ+IHsgaWRl
bnRpZmllciB9OworICAgIHJldHVybiBPYmplY3RJZGVudGlmaWVyPFQ+IHsgKytPYmplY3RJZGVu
dGlmaWVyPFQ+OjpzX2N1cnJlbnRJZGVudGlmaWVyIH07CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBPYmplY3RJZGVudGlmaWVySGFzaCB7CkBAIC0xMDYsNCArMTA4LDQgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoPE9iamVjdElkZW50aWZpZXI8VD4+
IHsKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6Ok9iamVjdElkZW50aWZpZXI7Ci11
c2luZyBXVEY6Om1ha2VPYmplY3RJZGVudGlmaWVyOwordXNpbmcgV1RGOjpnZW5lcmF0ZU9iamVj
dElkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjQ0ZjBhOWQ2NDcuLmNmOGZiMmU2YTQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTE3IEBACisyMDE3LTExLTEzICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBNYXNzaXZlICJTZXJ2ZXItcHJvY2Vzcy10by1jb250
ZXh0LXByb2Nlc3MiIGNvbm5lY3Rpb24gb3ZlcmhhdWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk1NTQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKFJlZmFjdG9yLCBubyBiZWhh
dmlvciBjaGFuZ2UpLgorCisgICAgICAgIEhhdmluZyB0aGUgU1dTZXJ2ZXI6OkNvbm5lY3Rpb24g
b2JqZWN0IGJlIG92ZXJsb2FkZWQgdG8gbWVhbiBib3RoIGNsaWVudC0+c2VydmVyIGFuZCBzZXJ2
ZXItPmNvbnRleHQgCisgICAgICAgIHdhcyB0aGUgd3JvbmcgZGVzaWduIGFuZCB3YXMgc3RhcnRp
bmcgdG8gY3J1bWJsZSB1bmRlciBpdHMgb3duIHdlaWdodC4KKworICAgICAgICBTbyB0aGlzIHBh
dGNoIGludHJvZHVjZXMgYSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gdG8gbWFuYWdlIHRo
ZSBTdG9yYWdlUHJvY2Vzcy1zaWRlIG9mIGNvbm5lY3Rpb25zCisgICAgICAgIHRvIGNvbnRleHQg
cHJvY2Vzc2VzLgorCisgICAgICAgIEFueSBtZXNzYWdlIHRoYXQgaXMgc3BlY2lmaWNhbGx5IGFi
b3V0IHRoZSBjb25uZWN0aW9uIGJldHdlZW4gdGhlIFN0b3JhZ2VQcm9jZXNzIGFuZCBjb250ZXh0
IHByb2Nlc3MKKyAgICAgICAgc2hvdWxkIHVzZSB0aGlzIGNvbm5lY3Rpb24gZ29pbmcgZm9yd2Fy
ZC4KKworICAgICAgICBSaWdodCBub3cgdGhlcmUgaXMgb25seSBvbmUgY29udGV4dCBwcm9jZXNz
LCBidXQgdGhpcyBkZXNpZ24ga2VlcHMgdXMgcmVhZHkgZm9yIHRoYXQgdG8gY2hhbmdlLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBnZXRzIHJpZCBvZiBhIGxvdCBvZiAic2VydmVyIGNvbm5l
Y3Rpb24gaWRlbnRpZmllciIgaW50ZWdlcnMgYmVpbmcgcGFzc2VkIGFtb25nc3QgcHJvY2Vzc2Vz
CisgICAgICAgIHRoYXQgd2VyZSBhY3R1YWxseSBwb2ludGxlc3MuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBpcyBhbHNvIGEgcHJlcmVxdWlzaXRlIGZvciBtYW55IHRoaW5ncyB0aGF0IGFyZSBjb21p
bmcgdXAgc29vbiwgc3VjaCBhcyB0ZXJtaW5hdGlvbi4KKworICAgICAgICAqIFNvdXJjZXMudHh0
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjppc29sYXRlZENvcHkgY29uc3Qp
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVjb2RlKToK
KworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZTo6c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgorCisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJUeXBlcy5oOgorCisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OmNyZWF0ZVdvcmtlckdsb2JhbFNjb3Bl
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpjcmVhdGUpOiBEZWxl
dGVkLgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eS5oOgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpnZW5lcmF0ZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp+U1dTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U1dTZXJ2ZXI6OlNXU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzY3Jp
cHRDb250ZXh0RmFpbGVkVG9TdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c2Ny
aXB0Q29udGV4dFN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmRpZEZpbmlz
aEluc3RhbGwpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmRpZEZpbmlzaEFjdGl2YXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmRpZFJlc29sdmVSZWdpc3RyYXRpb25Q
cm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1cGRhdGVXb3JrZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjppbnN0YWxsQ29udGV4dERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmZpcmVJbnN0YWxsRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U1dTZXJ2ZXI6OmZpcmVBY3RpdmF0ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNX
U2VydmVyOjpDb25uZWN0aW9uOjpkaWRGaW5pc2hJbnN0YWxsKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNXU2VydmVyOjpDb25uZWN0aW9uOjpkaWRGaW5pc2hBY3RpdmF0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpDb25uZWN0aW9uOjpzZXRTZXJ2aWNl
V29ya2VySGFzUGVuZGluZ0V2ZW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTV1Nl
cnZlcjo6Q29ubmVjdGlvbjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OkNvbm5lY3Rpb246OnNjcmlwdENvbnRleHRTdGFy
dGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzZXRTZXJ2aWNlV29y
a2VySGFzUGVuZGluZ0V2ZW50cyk6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5oOgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlckpvYlF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6
OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVy
Sm9iUXVldWU6OnNjcmlwdENvbnRleHRTdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2Vy
dmVySm9iUXVldWU6Omluc3RhbGwpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1
ZTo6ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6U1dT
ZXJ2ZXJKb2JRdWV1ZTo6ZGlkRmluaXNoSW5zdGFsbCk6CisgICAgICAgIChXZWJDb3JlOjpTV1Nl
cnZlckpvYlF1ZXVlOjp0cnlBY3RpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpv
YlF1ZXVlOjphY3RpdmF0ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlckpvYlF1ZXVlLmg6CisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyUmVnaXN0cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmdlbmVyYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjp+U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvcklkZW50aWZpZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpnbG9iYWxT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQpOgorICAgICAgICAo
V2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzY3JpcHRDb250ZXh0U3RhcnRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZEZp
bmlzaEluc3RhbGwpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjpkaWRGaW5pc2hBY3RpdmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6c2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHMpOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6aWRlbnRpZmllciBjb25zdCk6CisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2Vy
OjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2
ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29y
a2VyOjp+U1dTZXJ2ZXJXb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6
OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVy
V29ya2VyOjpzY3JpcHRDb250ZXh0U3RhcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZl
cldvcmtlcjo6ZGlkRmluaXNoSW5zdGFsbCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldv
cmtlcjo6ZGlkRmluaXNoQWN0aXZhdGlvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlcldvcmtlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6cmVnaXN0cmF0aW9u
S2V5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpjb250ZXh0Q29u
bmVjdGlvbklkZW50aWZpZXIgY29uc3QpOgorCiAyMDE3LTExLTEzICBBbnR0aSBLb2l2aXN0byAg
PGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBlbGltaW5hdGUgd2hpdGVzcGFjZSBy
ZW5kZXJlciBpZiB0aGUgcHJldmlvdXMgc2libGluZyBpcyBhIHRleHQgcmVuZGVyZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKaW5kZXggMjM5ZDY5OWU2MDUuLjY3NDk3ZjQxYTFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAt
MjE5MSw2ICsyMTkxLDcgQEAgd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rp
b24uY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKK3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldv
cmtlci5jcHAKIAogeG1sL0RPTVBhcnNlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiZGViMDQwYmJiZi4uNzBmZmYxOTFi
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTEzNTQsNiArMTM1NCw3IEBACiAJCTUxODJDMjU4MUYzMTQzQ0QwMDU5QkE3QyAv
KiBKU1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxODJDMjU0MUYzMTQyNTAwMDU5QkE3QyAvKiBKU1NlcnZpY2VX
b3JrZXJDb250YWluZXIuaCAqLzsgfTsKIAkJNTE4MkMyNUExRjMxNDNDRDAwNTlCQTdDIC8qIEpT
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTgyQzI0RDFGMzE0MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUuaCAqLzsgfTsKIAkJNTE4MkMyNUMxRjMxNDNDRDAwNTlCQTdDIC8qIEpT
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE4MkMyNTAxRjMxNDI1MDAwNTlCQTdDIC8qIEpTU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbi5oICovOyB9OworCQk1MTg1NDMwQjFGQjY3ODQ1MDA0NzhGOTUgLyog
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg1NDMwOTFGQjY3ODNFMDA0NzhGOTUgLyogU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTE4NUZDNzUxQkI0QzRFODAwMTI4OThGIC8qIERPTVdpbmRvd0luZGV4
ZWREYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFENzE5NkQxODExMDZERjAwMTZEQzUxIC8qIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5o
ICovOyB9OwogCQk1MTg1RkM3QjFCQjRDNEU4MDAxMjg5OEYgLyogSURCQ3Vyc29yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTY0NUI0MTFCOUY4ODlC
MDBGNzg5Q0UgLyogSURCQ3Vyc29yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNTE4NUZDN0UxQkI0QzRFODAwMTI4OThGIC8qIElEQkN1cnNvcldp
dGhWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE2NDVCNDMxQjlGODg5QjAwRjc4OUNFIC8qIElEQkN1cnNvcldpdGhWYWx1ZS5oICovOyB9OwpA
QCAtMTQyNSw3ICsxNDI2LDcgQEAKIAkJNTFFNjgyMTAxNjM4NzMwMjAwM0JCRjNDIC8qIExvYWRl
clN0cmF0ZWd5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUU2ODIwRjE2Mzg3MzAyMDAzQkJGM0MgLyogTG9hZGVyU3RyYXRlZ3kuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUVFN0IzODFBQTUwQjA1
MDBGOTJCMjEgLyogUmVzb3VyY2VMb2FkSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFRTdCMzcxQUE1MEIwNTAwRjkyQjIxIC8qIFJlc291cmNl
TG9hZEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MUVFQUE3NDFCRUZGQUIxMDAyMTgwMDggLyogSW5kZXhWYWx1ZUVudHJ5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVFQUE3MjFCRUZGQTc5
MDAyMTgwMDggLyogSW5kZXhWYWx1ZUVudHJ5LmggKi87IH07Ci0JCTUxRjE3NEZFMUYzNTg5OTIw
MEM3NDk1MCAvKiBXb3JrZXJUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUYxNzRGQzFGMzU4OTg4MDBDNzQ5NTAgLyogV29ya2VyVHlwZS5oICov
OyB9OworCQk1MUYxNzRGRTFGMzU4OTkyMDBDNzQ5NTAgLyogV29ya2VyVHlwZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMTc0RkMxRjM1ODk4ODAw
Qzc0OTUwIC8qIFdvcmtlclR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MUYxNzUwMzFGMzU4QjNCMDBDNzQ5NTAgLyogSlNTZXJ2aWNlV29y
a2VyVXBkYXRlVmlhQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxRjE3NTAxMUYzNThCMzYwMEM3NDk1MCAvKiBKU1NlcnZpY2VXb3JrZXJVcGRh
dGVWaWFDYWNoZS5oICovOyB9OwogCQk1MUYxNzUwNjFGMzU4QkY3MDBDNzQ5NTAgLyogSlNXb3Jr
ZXJUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUYxNzUwNTFGMzU4QkRFMDBDNzQ5NTAgLyogSlNXb3JrZXJUeXBlLmggKi87IH07CiAJCTUxRjE3
NTVEMUYzRUJDODMwMEM3NDk1MCAvKiBTZXJ2aWNlV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYxNzU1QTFGM0VCQzBDMDBDNzQ5NTAgLyog
U2VydmljZVdvcmtlci5oICovOyB9OwpAQCAtNzcwNiw2ICs3NzA3LDggQEAKIAkJNTE4MkMyNTIx
RjMxNDI1MDAwNTlCQTdDIC8qIEpTU2VydmljZVdvcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Nl
cnZpY2VXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4MkMyNTMxRjMx
NDI1MDAwNTlCQTdDIC8qIEpTU2VydmljZVdvcmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1NlcnZpY2VXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTgyQzI1
NDFGMzE0MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTU2VydmljZVdvcmtlckNvbnRhaW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MTg1NDMwOTFGQjY3ODNFMDA0NzhGOTUgLyogU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTg1NDMwQTFG
QjY3ODNGMDA0NzhGOTUgLyogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODVGQ0JDMUJCNUNCNzcwMDEy
ODk4RiAvKiBJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTE4NUZDQkQxQkI1Q0I3NzAwMTI4OThGIC8qIElEQkNvbm5lY3Rpb25U
b1NlcnZlckRlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQkNv
bm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxODg2NERFMUJCQUYzMEYwMEU1NDBDOSAvKiBVbmlxdWVJREJEYXRhYmFzZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmlxdWVJREJEYXRhYmFzZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzEzMSw2ICsxNzEzNCw4IEBACiAJCQkJODMx
MUMwMDIxRkFBMkU4OTAwRTNDOEU1IC8qIFNXU2VydmVySm9iUXVldWUuaCAqLywKIAkJCQk1MUY2
NDU5NTFGNEE2ODYxMDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwICovLAogCQkJ
CTUxRjY0NTk0MUY0QTY4NEYwMEI1NERFRCAvKiBTV1NlcnZlclJlZ2lzdHJhdGlvbi5oICovLAor
CQkJCTUxODU0MzBBMUZCNjc4M0YwMDQ3OEY5NSAvKiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uY3BwICovLAorCQkJCTUxODU0MzA5MUZCNjc4M0UwMDQ3OEY5NSAvKiBTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaCAqLywKIAkJCQk1MTdBNTM0MzFGNTBDMTYxMDBEQ0RDMEEgLyogU1dT
ZXJ2ZXJXb3JrZXIuY3BwICovLAogCQkJCTUxN0E1MzQyMUY1MEMxNjEwMERDREMwQSAvKiBTV1Nl
cnZlcldvcmtlci5oICovLAogCQkJKTsKQEAgLTI3NDE1LDYgKzI3NDIwLDcgQEAKIAkJCQk3QzhF
MzRCOTFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252ZXJ0SlNPTi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJN0M4RTM0QkExRTRBMzNCMDAwNTRDRTIzIC8qIEpTRE9NQ29udmVydE51bGwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTdDOEUzNEJCMUU0QTMzQjAwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRO
dWxsYWJsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NTQzMEIxRkI2Nzg0NTAwNDc4Rjk1IC8q
IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4RTM0
QkQxRTRBMzNCMDAwNTRDRTIzIC8qIEpTRE9NQ29udmVydE51bWJlcnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTdDOEUzNEJFMUU0QTMzQjAwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRPYmplY3QuaCBp
biBIZWFkZXJzICovLAogCQkJCUUzMjNDRkZBMUU1QUY2QUYwMEYwQjRBMCAvKiBKU0RPTUNvbnZl
cnRQcm9taXNlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKaW5kZXggNGQz
MzUwMWM2ZGEuLmYwZWM3NjZlMzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcApAQCAtMzIsNyAr
MzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIHsgcmVnaXN0cmF0aW9uS2V5Lmlzb2xhdGVkQ29weSgpLCBzZXJ2aWNlV29ya2VySWRlbnRp
Zmllciwgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLCBzY3JpcHRVUkwuaXNvbGF0ZWRDb3B5KCkgfTsK
KyAgICByZXR1cm4geyByZWdpc3RyYXRpb25LZXkuaXNvbGF0ZWRDb3B5KCksIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBzY3JpcHQuaXNvbGF0ZWRDb3B5KCksIHNjcmlwdFVSTC5pc29sYXRlZENv
cHkoKSwgd29ya2VyVHlwZSB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHRE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRl
eHREYXRhLmgKaW5kZXggMDhjMzFiYzk1NDAuLjdhMGI0NDNjYjMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlcklkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgiCiAjaW5jbHVkZSAi
VVJMLmgiCisjaW5jbHVkZSAiV29ya2VyVHlwZS5oIgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQogCkBAIC0zOCw2ICszOSw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEg
ewogICAgIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOwog
ICAgIFN0cmluZyBzY3JpcHQ7CiAgICAgVVJMIHNjcmlwdFVSTDsKKyAgICBXb3JrZXJUeXBlIHdv
cmtlclR5cGU7CiAgICAgCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gZGVjb2RlKERlY29kZXImKTsKQEAg
LTQ5LDYgKzUxLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNv
ZGVyIDw8IHJlZ2lzdHJhdGlvbktleSA8PCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA8PCBzY3Jp
cHQgPDwgc2NyaXB0VVJMOworICAgIGVuY29kZXIuZW5jb2RlRW51bSh3b3JrZXJUeXBlKTsKIH0K
IAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTY5LDggKzcyLDEyIEBAIHN0ZDo6b3B0aW9u
YWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRl
Y29kZShEZWNvZGVyCiAgICAgVVJMIHNjcmlwdFVSTDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHNjcmlwdFVSTCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4g
e3sgV1RGTW92ZSgqcmVnaXN0cmF0aW9uS2V5KSwgV1RGTW92ZSgqc2VydmljZVdvcmtlcklkZW50
aWZpZXIpLCBXVEZNb3ZlKHNjcmlwdCksIFdURk1vdmUoc2NyaXB0VVJMKSB9fTsKKyAgICAKKyAg
ICBXb3JrZXJUeXBlIHdvcmtlclR5cGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0od29y
a2VyVHlwZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAgcmV0dXJu
IHt7IFdURk1vdmUoKnJlZ2lzdHJhdGlvbktleSksIFdURk1vdmUoKnNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKSwgV1RGTW92ZShzY3JpcHQpLCBXVEZNb3ZlKHNjcmlwdFVSTCksIHdvcmtlclR5cGUg
fX07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5k
ZXggNGJmMTlkODViMjIuLjNhMjBiM2E5ZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAt
MzMsOSArMzMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZTo6U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50LCBib29sIGlzT25saW5lLCBTZXJ2aWNlV29ya2VyVGhyZWFkJiB0aHJlYWQsIGJvb2wgc2hv
dWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBSZWY8U2VjdXJpdHlPcmln
aW4+JiYgdG9wT3JpZ2luLCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIElEQkNsaWVudDo6SURC
Q29ubmVjdGlvblByb3h5KiBjb25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQ
cm92aWRlciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlOjpTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgU2VydmljZVdvcmtlclRocmVhZCYg
dGhyZWFkLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwg
UmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2lu
LCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQ
cm92aWRlciogc29ja2V0UHJvdmlkZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICA6
IFdvcmtlckdsb2JhbFNjb3BlKHVybCwgaWRlbnRpZmllciwgdXNlckFnZW50LCBpc09ubGluZSwg
dGhyZWFkLCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFdURk1v
dmUodG9wT3JpZ2luKSwgdGltZU9yaWdpbiwgY29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRl
ciwgc2Vzc2lvbklEKQotICAgICwgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcihzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllcikKICAgICAsIG1fY29udGV4dERhdGEoY3Jvc3NUaHJlYWRDb3B5
KGRhdGEpKQogICAgICwgbV9jbGllbnRzKFNlcnZpY2VXb3JrZXJDbGllbnRzOjpjcmVhdGUoKnRo
aXMpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IGVlNDk1ODY5MjQwLi45MDAxNTE3ZGRmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuaApAQCAtNTEsOCArNTEsNiBAQCBwdWJsaWM6CiAgICAgU2Vydmlj
ZVdvcmtlckNsaWVudHMmIGNsaWVudHMoKSB7IHJldHVybiBtX2NsaWVudHMuZ2V0KCk7IH0KICAg
ICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKiByZWdpc3RyYXRpb24oKTsKICAgICAKLSAgICB1
aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXI7IH0KLQogICAgIHZvaWQgc2tpcFdhaXRpbmcoUmVmPERl
ZmVycmVkUHJvbWlzZT4mJik7CiAKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdl
dEludGVyZmFjZSgpIGNvbnN0IGZpbmFsOwpAQCAtNjAsOSArNTgsOCBAQCBwdWJsaWM6CiAgICAg
U2VydmljZVdvcmtlclRocmVhZCYgdGhyZWFkKCk7CiAKIHByaXZhdGU6Ci0gICAgU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25z
dCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBib29sIGlzT25saW5lLCBTZXJ2aWNl
V29ya2VyVGhyZWFkJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQ
b2xpY3ksIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIE1vbm90b25pY1RpbWUgdGlt
ZU9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlcios
IFBBTDo6U2Vzc2lvbklEKTsKKyAgICBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgU2VydmljZVdvcmtl
clRocmVhZCYsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5
LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBNb25vdG9uaWNUaW1lIHRpbWVPcmln
aW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqLCBQQUw6
OlNlc3Npb25JRCk7CiAKLSAgICB1aW50NjRfdCBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
OwogICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBtX2NvbnRleHREYXRhOwogICAgIFJlZjxT
ZXJ2aWNlV29ya2VyQ2xpZW50cz4gbV9jbGllbnRzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyVHlwZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyVHlwZXMuaAppbmRleCBhM2M2YzNlNjE3
OC4uYzcwYWUwOGFhNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlclR5cGVzLmgKQEAgLTUwLDYgKzUwLDkgQEAgZW51bSBjbGFzcyBTaG91
bGROb3RpZnlXaGVuUmVzb2x2ZWQgeyBObywgWWVzIH07CiBlbnVtIFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyVHlwZSB7IH07CiB1c2luZyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXJUeXBlPjsKIAorZW51bSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVu
dGlmaWVyVHlwZSB7IH07Cit1c2luZyBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlm
aWVyID0gT2JqZWN0SWRlbnRpZmllcjxTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlm
aWVyVHlwZT47CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggNjMzOGU0ZTc1
NWUuLjIzYzZiYjZmOGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcApAQCAtNzMsOSAr
NzMsOCBAQCBwcml2YXRlOgogLy8gRklYTUU6IFVzZSBhIHZhbGlkIGlzT25saW5lIGZsYWcKIC8v
IEZJWE1FOiBVc2UgdmFsaWQgcnVudGltZSBmbGFncwogCi1TZXJ2aWNlV29ya2VyVGhyZWFkOjpT
ZXJ2aWNlV29ya2VyVGhyZWFkKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBj
b25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEsIFBBTDo6U2Vzc2lvbklELCBXb3Jr
ZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkmIGRlYnVnZ2Vy
UHJveHkpCitTZXJ2aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhyZWFkKGNvbnN0IFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSwgUEFMOjpTZXNzaW9uSUQsIFdvcmtlckxvYWRl
clByb3h5JiBsb2FkZXJQcm94eSwgV29ya2VyRGVidWdnZXJQcm94eSYgZGVidWdnZXJQcm94eSkK
ICAgICA6IFdvcmtlclRocmVhZChkYXRhLnNjcmlwdFVSTCwgInNlcnZpY2V3b3JrZXI6IiArIElu
c3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCksIEFTQ0lJTGl0
ZXJhbCgiV29ya2VyVXNlckFnZW50IiksIC8qIGlzT25saW5lICovIGZhbHNlLCBkYXRhLnNjcmlw
dCwgbG9hZGVyUHJveHksIGRlYnVnZ2VyUHJveHksIER1bW15U2VydmljZVdvcmtlclRocmVhZFBy
b3h5OjpzaGFyZWQoKSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIENvbnRlbnRTZWN1
cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyB7IH0sIGZhbHNlLCBTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKGRhdGEuc2NyaXB0VVJMKS5nZXQoKSwgTW9ub3RvbmljVGltZTo6bm93KCksIG51bGxwdHIs
IG51bGxwdHIsIEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVkKCksIFNlc3Npb25J
RDo6ZGVmYXVsdFNlc3Npb25JRCgpKQotICAgICwgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
cihzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikKICAgICAsIG1fZGF0YShkYXRhLmlzb2xhdGVk
Q29weSgpKQogICAgICwgbV93b3JrZXJPYmplY3RQcm94eShEdW1teVNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eTo6c2hhcmVkKCkpCiB7CkBAIC04Niw3ICs4NSw3IEBAIFNlcnZpY2VXb3JrZXJUaHJl
YWQ6On5TZXJ2aWNlV29ya2VyVGhyZWFkKCkgPSBkZWZhdWx0OwogCiBSZWY8V29ya2VyR2xvYmFs
U2NvcGU+IFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50LCBib29sIGlzT25saW5lLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMmLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwg
UmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2lu
LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgcmV0dXJuIFNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZTo6Y3JlYXRlKG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIG1fZGF0YSwg
dXJsLCBpZGVudGlmaWVyLCB1c2VyQWdlbnQsIGlzT25saW5lLCAqdGhpcywgc2hvdWxkQnlwYXNz
TWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBXVEZNb3ZlKHRvcE9yaWdpbiksIHRpbWVP
cmlnaW4sIGlkYkNvbm5lY3Rpb25Qcm94eSgpLCBzb2NrZXRQcm92aWRlcigpLCBzZXNzaW9uSUQp
OworICAgIHJldHVybiBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZShtX2RhdGEsIHVy
bCwgaWRlbnRpZmllciwgdXNlckFnZW50LCBpc09ubGluZSwgKnRoaXMsIHNob3VsZEJ5cGFzc01h
aW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgV1RGTW92ZSh0b3BPcmlnaW4pLCB0aW1lT3Jp
Z2luLCBpZGJDb25uZWN0aW9uUHJveHkoKSwgc29ja2V0UHJvdmlkZXIoKSwgc2Vzc2lvbklEKTsK
IH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpydW5FdmVudExvb3AoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRo
cmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZC5oCmluZGV4IDczZGVjZDUwMzkwLi44NGE4ZTNiNDc2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWQuaApAQCAtNjAsNyArNjAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaXJlSW5z
dGFsbEV2ZW50KCk7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudCgpOwogCi0gICAgdWludDY0
X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyOyB9CiAgICAgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRh
JiBjb250ZXh0RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCiAgICAgU2VydmljZVdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5zZXJ2aWNl
V29ya2VySWRlbnRpZmllcjsgfQpAQCAtNzAsMTIgKzY5LDExIEBAIHByb3RlY3RlZDoKICAgICB2
b2lkIHJ1bkV2ZW50TG9vcCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFdFQkNPUkVfRVhQ
T1JUIFNlcnZpY2VXb3JrZXJUaHJlYWQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYsIFBBTDo6U2Vzc2lvbklELCBXb3Jr
ZXJMb2FkZXJQcm94eSYsIFdvcmtlckRlYnVnZ2VyUHJveHkmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBTZXJ2aWNlV29ya2VyVGhyZWFkKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYsIFBB
TDo6U2Vzc2lvbklELCBXb3JrZXJMb2FkZXJQcm94eSYsIFdvcmtlckRlYnVnZ2VyUHJveHkmKTsK
IAogICAgIHZvaWQgdXBkYXRlRXh0ZW5kZWRFdmVudHNTZXQoRXh0ZW5kYWJsZUV2ZW50KiBuZXdF
dmVudCA9IG51bGxwdHIpOwogICAgIGJvb2wgaGFzUGVuZGluZ0V2ZW50cygpIGNvbnN0IHsgcmV0
dXJuICFtX2V4dGVuZGVkRXZlbnRzLmlzRW1wdHkoKTsgfQogCi0gICAgdWludDY0X3QgbV9zZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgbV9k
YXRhOwogICAgIFdvcmtlck9iamVjdFByb3h5JiBtX3dvcmtlck9iamVjdFByb3h5OwogICAgIFZl
Y3RvcjxSZWY8RXh0ZW5kYWJsZUV2ZW50Pj4gbV9leHRlbmRlZEV2ZW50czsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCmluZGV4IDE1NzBjZjBmMGJhLi5lN2RiZDQwOWU4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCkBAIC0zNiwxMSArMzYsNiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk+
IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFn
ZUNvbmZpZ3VyYXRpb24sIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25z
dCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImIGNhY2hlU3RvcmFnZVByb3ZpZGVyKQotewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSB7IFdURk1vdmUocGFn
ZUNvbmZpZ3VyYXRpb24pLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZGF0YSwgc2Vzc2lv
bklELCBjYWNoZVN0b3JhZ2VQcm92aWRlciB9KTsKLX0KLQogc3RhdGljIGlubGluZSBVbmlxdWVS
ZWY8UGFnZT4gY3JlYXRlUGFnZUZvclNlcnZpY2VXb3JrZXIoUGFnZUNvbmZpZ3VyYXRpb24mJiBj
b25maWd1cmF0aW9uLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBhdXRvIHBhZ2UgPSBtYWtlVW5p
cXVlUmVmPFBhZ2U+KFdURk1vdmUoY29uZmlndXJhdGlvbikpOwpAQCAtNTIsMTAgKzQ3LDEwIEBA
IHN0YXRpYyBpbmxpbmUgVW5pcXVlUmVmPFBhZ2U+IGNyZWF0ZVBhZ2VGb3JTZXJ2aWNlV29ya2Vy
KFBhZ2VDb25maWd1cmF0aW9uJiYgY29uCiAgICAgcmV0dXJuIHBhZ2U7CiB9CiAKLVNlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5KFBhZ2VDb25maWd1cmF0
aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24sIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEsIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImIGNhY2hlU3RvcmFnZVByb3ZpZGVyKQor
U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoUGFnZUNv
bmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbiwgY29uc3QgU2VydmljZVdvcmtlckNvbnRl
eHREYXRhJiBkYXRhLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENhY2hlU3RvcmFnZVByb3Zp
ZGVyJiBjYWNoZVN0b3JhZ2VQcm92aWRlcikKICAgICA6IG1fcGFnZShjcmVhdGVQYWdlRm9yU2Vy
dmljZVdvcmtlcihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSwgZGF0YS5zY3JpcHRVUkwpKQog
ICAgICwgbV9kb2N1bWVudCgqbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQotICAgICwg
bV9zZXJ2aWNlV29ya2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmNyZWF0ZShzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgZGF0YSwgc2Vzc2lvbklELCAqdGhpcywgKnRoaXMpKQorICAg
ICwgbV9zZXJ2aWNlV29ya2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmNyZWF0ZShkYXRh
LCBzZXNzaW9uSUQsICp0aGlzLCAqdGhpcykpCiAgICAgLCBtX2NhY2hlU3RvcmFnZVByb3ZpZGVy
KGNhY2hlU3RvcmFnZVByb3ZpZGVyKQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogICAg
ICwgbV9pbnNwZWN0b3JQcm94eSgqdGhpcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5
LmgKaW5kZXggNDEwYjBlYWUxYzEuLmE5YzU5N2U2ZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkuaApAQCAtNDcsMTQgKzQ3LDE3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE7CiAKIGNsYXNzIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSBmaW5hbCA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk+LCBwdWJsaWMg
V29ya2VyTG9hZGVyUHJveHksIHB1YmxpYyBXb3JrZXJEZWJ1Z2dlclByb3h5IHsKIHB1YmxpYzoK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eT4g
Y3JlYXRlKFBhZ2VDb25maWd1cmF0aW9uJiYsIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBQQUw6OlNlc3Npb25JRCwg
Q2FjaGVTdG9yYWdlUHJvdmlkZXImKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBz
dGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eT4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdz
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlclRocmVh
ZFByb3h5KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgIH0KIAogICAgIFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VX
b3JrZXJUaHJlYWQtPmlkZW50aWZpZXIoKTsgfQogICAgIFNlcnZpY2VXb3JrZXJUaHJlYWQmIHRo
cmVhZCgpIHsgcmV0dXJuIG1fc2VydmljZVdvcmtlclRocmVhZC5nZXQoKTsgfQogICAgIFNlcnZp
Y2VXb3JrZXJJbnNwZWN0b3JQcm94eSYgaW5zcGVjdG9yUHJveHkoKSB7IHJldHVybiBtX2luc3Bl
Y3RvclByb3h5OyB9CiAKIHByaXZhdGU6Ci0gICAgU2VydmljZVdvcmtlclRocmVhZFByb3h5KFBh
Z2VDb25maWd1cmF0aW9uJiYsIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBj
b25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBQQUw6OlNlc3Npb25JRCwgQ2FjaGVTdG9y
YWdlUHJvdmlkZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHkoUGFnZUNvbmZpZ3VyYXRpb24mJiwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiwg
UEFMOjpTZXNzaW9uSUQsIENhY2hlU3RvcmFnZVByb3ZpZGVyJik7CiAKICAgICAvLyBXb3JrZXJM
b2FkZXJQcm94eQogICAgIGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYsIGNvbnN0IFN0cmluZyYgbW9kZSkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
Y3BwCmluZGV4IDVlYTU0NGZlMzYyLi4wNzliNWU3YjA0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTMzLDE5ICszMywy
MCBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTV1NlcnZlckpvYlF1ZXVlLmgi
CiAjaW5jbHVkZSAiU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCIKKyNpbmNsdWRlICJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJTV1NlcnZlcldvcmtlci5oIgogI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRleHREYXRh
LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoUmVzdWx0LmgiCiAjaW5jbHVkZSAiU2Vy
dmljZVdvcmtlckpvYkRhdGEuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dGF0aWMgU2VydmljZVdvcmtlcklkZW50aWZpZXIgZ2VuZXJhdGVTZXJ2aWNlV29ya2VySWRlbnRp
ZmllcigpCiB7Ci0gICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZpZXIgPSAwOwotICAgIHJldHVy
biBtYWtlT2JqZWN0SWRlbnRpZmllcjxTZXJ2aWNlV29ya2VySWRlbnRpZmllclR5cGU+KCsraWRl
bnRpZmllcik7CisgICAgcmV0dXJuIGdlbmVyYXRlT2JqZWN0SWRlbnRpZmllcjxTZXJ2aWNlV29y
a2VySWRlbnRpZmllclR5cGU+KCk7CiB9CiAKIFNXU2VydmVyOjpDb25uZWN0aW9uOjpDb25uZWN0
aW9uKFNXU2VydmVyJiBzZXJ2ZXIsIHVpbnQ2NF90IGlkZW50aWZpZXIpCkBAIC02MCw2ICs2MSwx
MiBAQCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6fkNvbm5lY3Rpb24oKQogICAgIG1fc2VydmVyLnVu
cmVnaXN0ZXJDb25uZWN0aW9uKCp0aGlzKTsKIH0KIAorSGFzaFNldDxTV1NlcnZlcio+JiBTV1Nl
cnZlcjo6YWxsU2VydmVycygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8
U1dTZXJ2ZXIqPj4gc2VydmVyczsKKyAgICByZXR1cm4gc2VydmVyczsKK30KKwogU1dTZXJ2ZXI6
On5TV1NlcnZlcigpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9jb25uZWN0aW9ucy5pc0VtcHR5
KCkpOwpAQCAtNzQsNiArODEsOCBAQCBTV1NlcnZlcjo6flNXU2VydmVyKCkKICAgICAvLyBCdXQg
b25jZSBpdCBkb2VzIHN0YXJ0IGhhcHBlbmluZywgdGhpcyBBU1NFUlQgd2lsbCBjYXRjaCB1cyBk
b2luZyBpdCB3cm9uZy4KICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fdGFza1RocmVhZExvY2sp
OwogICAgIEFTU0VSVCghbV90YXNrVGhyZWFkKTsKKyAgICAKKyAgICBhbGxTZXJ2ZXJzKCkucmVt
b3ZlKHRoaXMpOwogfQogCiBTV1NlcnZlclJlZ2lzdHJhdGlvbiogU1dTZXJ2ZXI6OmdldFJlZ2lz
dHJhdGlvbihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25L
ZXkpCkBAIC0xMTIsMjEgKzEyMSw2IEBAIHZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OmZpbmlz
aEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckZldGNoCiAgICAgbV9z
ZXJ2ZXIuc2NyaXB0RmV0Y2hGaW5pc2hlZCgqdGhpcywgcmVzdWx0KTsKIH0KIAotdm9pZCBTV1Nl
cnZlcjo6Q29ubmVjdGlvbjo6ZGlkRmluaXNoSW5zdGFsbChjb25zdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5JiBrZXksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCi17Ci0gICAgbV9zZXJ2ZXIuZGlkRmluaXNo
SW5zdGFsbCgqdGhpcywga2V5LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgd2FzU3VjY2Vzc2Z1
bCk7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OmRpZEZpbmlzaEFjdGl2YXRpb24o
Y29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYga2V5LCBTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKLXsKLSAgICBtX3NlcnZlci5kaWRGaW5p
c2hBY3RpdmF0aW9uKCp0aGlzLCBrZXksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLX0KLQot
dm9pZCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6c2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVu
dHMoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wg
aGFzUGVuZGluZ0V2ZW50cykKLXsKLSAgICBtX3NlcnZlci5zZXRTZXJ2aWNlV29ya2VySGFzUGVu
ZGluZ0V2ZW50cygqdGhpcywgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGhhc1BlbmRpbmdFdmVu
dHMpOwotfQotCiB2b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpkaWRSZXNvbHZlUmVnaXN0cmF0
aW9uUHJvbWlzZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXkpCiB7CiAg
ICAgbV9zZXJ2ZXIuZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoKnRoaXMsIGtleSk7CkBA
IC0xNDIsMTggKzEzNiw5IEBAIHZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OnJlbW92ZVNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihjb25zdCBTZXJ2aWNlCiAgICAgbV9zZXJ2ZXIu
cmVtb3ZlQ2xpZW50U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbigqdGhpcywga2V5LCBpZGVudGlm
aWVyKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6c2NyaXB0Q29udGV4dEZhaWxl
ZFRvU3RhcnQoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9u
S2V5LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCi17Ci0gICAgbV9zZXJ2ZXIuc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoKnRoaXMs
IHJlZ2lzdHJhdGlvbktleSwgaWRlbnRpZmllciwgbWVzc2FnZSk7Ci19Ci0KLXZvaWQgU1dTZXJ2
ZXI6OkNvbm5lY3Rpb246OnNjcmlwdENvbnRleHRTdGFydGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIg
aWRlbnRpZmllcikKLXsKLSAgICBtX3NlcnZlci5zY3JpcHRDb250ZXh0U3RhcnRlZCgqdGhpcywg
cmVnaXN0cmF0aW9uS2V5LCBpZGVudGlmaWVyKTsKLX0KLQogU1dTZXJ2ZXI6OlNXU2VydmVyKCkK
IHsKKyAgICBhbGxTZXJ2ZXJzKCkuYWRkKHRoaXMpOwogICAgIG1fdGFza1RocmVhZCA9IFRocmVh
ZDo6Y3JlYXRlKEFTQ0lJTGl0ZXJhbCgiU2VydmljZVdvcmtlciBUYXNrIFRocmVhZCIpLCBbdGhp
c10gewogICAgICAgICB0YXNrVGhyZWFkRW50cnlQb2ludCgpOwogICAgIH0pOwpAQCAtMjI4LDUy
ICsyMTMsMzYgQEAgdm9pZCBTV1NlcnZlcjo6c2NyaXB0RmV0Y2hGaW5pc2hlZChDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyRmUKICAgICBqb2JRdWV1ZS0+c2NyaXB0
RmV0Y2hGaW5pc2hlZChjb25uZWN0aW9uLCByZXN1bHQpOwogfQogCi12b2lkIFNXU2VydmVyOjpz
Y3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgU1dT
ZXJ2ZXI6OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KFNXU2VydmVyV29ya2VyJiB3b3JrZXIs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250
YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOwotICAgIAotICAgIGlmIChhdXRvKiBqb2JR
dWV1ZSA9IG1fam9iUXVldWVzLmdldChyZWdpc3RyYXRpb25LZXkpKQotICAgICAgICBqb2JRdWV1
ZS0+c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29ubmVjdGlvbiwgaWRlbnRpZmllciwgbWVz
c2FnZSk7CisgICAgaWYgKGF1dG8qIGpvYlF1ZXVlID0gbV9qb2JRdWV1ZXMuZ2V0KHdvcmtlci5y
ZWdpc3RyYXRpb25LZXkoKSkpCisgICAgICAgIGpvYlF1ZXVlLT5zY3JpcHRDb250ZXh0RmFpbGVk
VG9TdGFydCh3b3JrZXIuaWRlbnRpZmllcigpLCBtZXNzYWdlKTsKIH0KIAotdm9pZCBTV1NlcnZl
cjo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBTV1NlcnZlcjo6c2NyaXB0Q29udGV4dFN0YXJ0
ZWQoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikKIHsKLSAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5j
b250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOwotCi0gICAgaWYgKGF1dG8qIGpvYlF1
ZXVlID0gbV9qb2JRdWV1ZXMuZ2V0KHJlZ2lzdHJhdGlvbktleSkpCi0gICAgICAgIGpvYlF1ZXVl
LT5zY3JpcHRDb250ZXh0U3RhcnRlZChjb25uZWN0aW9uLCBpZGVudGlmaWVyKTsKKyAgICBpZiAo
YXV0byogam9iUXVldWUgPSBtX2pvYlF1ZXVlcy5nZXQod29ya2VyLnJlZ2lzdHJhdGlvbktleSgp
KSkKKyAgICAgICAgam9iUXVldWUtPnNjcmlwdENvbnRleHRTdGFydGVkKHdvcmtlci5pZGVudGlm
aWVyKCkpOwogfQogCi12b2lkIFNXU2VydmVyOjpkaWRGaW5pc2hJbnN0YWxsKENvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJh
dGlvbktleSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IGJvb2wgd2FzU3VjY2Vzc2Z1bCkKK3ZvaWQgU1dTZXJ2ZXI6OmRpZEZpbmlzaEluc3RhbGwoU1dT
ZXJ2ZXJXb3JrZXImIHdvcmtlciwgYm9vbCB3YXNTdWNjZXNzZnVsKQogewotICAgIEFTU0VSVCht
X2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKSk7Ci0KLSAgICBp
ZiAoYXV0byogam9iUXVldWUgPSBtX2pvYlF1ZXVlcy5nZXQocmVnaXN0cmF0aW9uS2V5KSkKLSAg
ICAgICAgam9iUXVldWUtPmRpZEZpbmlzaEluc3RhbGwoY29ubmVjdGlvbiwgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIHdhc1N1Y2Nlc3NmdWwpOworICAgIGlmIChhdXRvKiBqb2JRdWV1ZSA9IG1f
am9iUXVldWVzLmdldCh3b3JrZXIucmVnaXN0cmF0aW9uS2V5KCkpKQorICAgICAgICBqb2JRdWV1
ZS0+ZGlkRmluaXNoSW5zdGFsbCh3b3JrZXIuaWRlbnRpZmllcigpLCB3YXNTdWNjZXNzZnVsKTsK
IH0KIAotdm9pZCBTV1NlcnZlcjo6ZGlkRmluaXNoQWN0aXZhdGlvbihDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25L
ZXksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQordm9p
ZCBTV1NlcnZlcjo6ZGlkRmluaXNoQWN0aXZhdGlvbihTV1NlcnZlcldvcmtlciYgd29ya2VyKQog
ewotICAgIEFTU0VSVF9VTlVTRUQoY29ubmVjdGlvbiwgbV9jb25uZWN0aW9ucy5jb250YWlucyhj
b25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOwotCi0gICAgaWYgKGF1dG8qIHJlZ2lzdHJhdGlvbiA9
IGdldFJlZ2lzdHJhdGlvbihyZWdpc3RyYXRpb25LZXkpKQotICAgICAgICBTV1NlcnZlckpvYlF1
ZXVlOjpkaWRGaW5pc2hBY3RpdmF0aW9uKCpyZWdpc3RyYXRpb24sIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKTsKLX0KLQotdm9pZCBTV1NlcnZlcjo6c2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdF
dmVudHMoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgaGFzUGVuZGluZ0V2ZW50cykKLXsKLSAgICBBU1NF
UlRfVU5VU0VEKGNvbm5lY3Rpb24sIG1fY29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5p
ZGVudGlmaWVyKCkpKTsKLQotICAgIGlmIChhdXRvKiBzZXJ2aWNlV29ya2VyID0gbV93b3JrZXJz
QnlJRC5nZXQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKQotICAgICAgICBzZXJ2aWNlV29ya2Vy
LT5zZXRIYXNQZW5kaW5nRXZlbnRzKGhhc1BlbmRpbmdFdmVudHMpOworICAgIGlmIChhdXRvKiBy
ZWdpc3RyYXRpb24gPSBnZXRSZWdpc3RyYXRpb24od29ya2VyLnJlZ2lzdHJhdGlvbktleSgpKSkK
KyAgICAgICAgU1dTZXJ2ZXJKb2JRdWV1ZTo6ZGlkRmluaXNoQWN0aXZhdGlvbigqcmVnaXN0cmF0
aW9uLCB3b3JrZXIuaWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6ZGlkUmVzb2x2
ZVJlZ2lzdHJhdGlvblByb21pc2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQogewotICAgIEFTU0VSVCht
X2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKSk7CisgICAgQVNT
RVJUX1VOVVNFRChjb25uZWN0aW9uLCBtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24u
aWRlbnRpZmllcigpKSk7CiAKICAgICBpZiAoYXV0byogam9iUXVldWUgPSBtX2pvYlF1ZXVlcy5n
ZXQocmVnaXN0cmF0aW9uS2V5KSkKLSAgICAgICAgam9iUXVldWUtPmRpZFJlc29sdmVSZWdpc3Ry
YXRpb25Qcm9taXNlKGNvbm5lY3Rpb24pOworICAgICAgICBqb2JRdWV1ZS0+ZGlkUmVzb2x2ZVJl
Z2lzdHJhdGlvblByb21pc2UoKTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6YWRkQ2xpZW50U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXksIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyIGlkZW50aWZpZXIpCkBAIC0zMDQsMjYgKzI3Myw3NSBAQCB2b2lkIFNXU2VydmVyOjpy
ZW1vdmVDbGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIGNvbgogICAgIHJlZ2lzdHJhdGlvbi0+cmVtb3ZlQ2xpZW50U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbihjb25uZWN0aW9uLmlkZW50aWZpZXIoKSk7CiB9CiAKLVJlZjxTV1NlcnZlcldvcmtl
cj4gU1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgV29ya2VyVHlwZSB0eXBlKQordm9pZCBTV1NlcnZl
cjo6dXBkYXRlV29ya2VyKENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHNj
cmlwdCwgV29ya2VyVHlwZSB0eXBlKQogewogICAgIGF1dG8gc2VydmljZVdvcmtlcklkZW50aWZp
ZXIgPSBnZW5lcmF0ZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCk7CiAKLSAgICBhdXRvIHJlc3Vs
dCA9IG1fd29ya2Vyc0J5SUQuYWRkKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTV1NlcnZlcldv
cmtlcjo6Y3JlYXRlKHJlZ2lzdHJhdGlvbktleSwgdXJsLCBzY3JpcHQsIHR5cGUsIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKSk7Ci0gICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgZGF0YSA9IHsgcmVnaXN0cmF0aW9uS2V5LCBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgc2NyaXB0LCB1cmwsIHR5cGUgfTsKKworICAgIC8vIFJpZ2h0IG5v
dyB3ZSBvbmx5IGV2ZXIga2VlcCB1cCB0byBvbmUgY29ubmVjdGlvbiB0byBvbmUgU1cgY29udGV4
dCBwcm9jZXNzLgorICAgIC8vIEFuZCBpdCBzaG91bGQgYWx3YXlzIGV4aXN0IGlmIHdlJ3JlIGNh
bGxpbmcgdXBkYXRlV29ya2VyCisgICAgYXV0byogY29ubmVjdGlvbiA9IFNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6Z2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOworICAgIGlm
ICghY29ubmVjdGlvbikgeworICAgICAgICBtX3BlbmRpbmdDb250ZXh0RGF0YXMuYXBwZW5kKFdU
Rk1vdmUoZGF0YSkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGluc3RhbGxD
b250ZXh0RGF0YShkYXRhKTsKK30KIAotICAgIGNvbm5lY3Rpb24uaW5zdGFsbFNlcnZpY2VXb3Jr
ZXJDb250ZXh0KHsgcmVnaXN0cmF0aW9uS2V5LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc2Ny
aXB0LCB1cmwgfSk7Cit2b2lkIFNXU2VydmVyOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uQ3Jl
YXRlZCgpCit7CisgICAgQVNTRVJUKFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Z2xvYmFs
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpKTsKKyAgICBmb3IgKGF1dG8mIGRhdGEgOiBtX3Bl
bmRpbmdDb250ZXh0RGF0YXMpCisgICAgICAgIGluc3RhbGxDb250ZXh0RGF0YShkYXRhKTsKICAg
ICAKLSAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKyAgICBtX3BlbmRp
bmdDb250ZXh0RGF0YXMuY2xlYXIoKTsKK30KKwordm9pZCBTV1NlcnZlcjo6aW5zdGFsbENvbnRl
eHREYXRhKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKK3sKKyAgICBhdXRv
KiBjb25uZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpnbG9iYWxTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKCk7CisgICAgQVNTRVJUKGNvbm5lY3Rpb24pOworCisgICAgYXV0
byByZXN1bHQgPSBtX3dvcmtlcnNCeUlELmFkZChkYXRhLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBTV1NlcnZlcldvcmtlcjo6Y3JlYXRlKCp0aGlzLCBkYXRhLnJlZ2lzdHJhdGlvbktleSwgY29u
bmVjdGlvbi0+aWRlbnRpZmllcigpLCBkYXRhLnNjcmlwdFVSTCwgZGF0YS5zY3JpcHQsIGRhdGEu
d29ya2VyVHlwZSwgZGF0YS5zZXJ2aWNlV29ya2VySWRlbnRpZmllcikpOworICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICBjb25uZWN0aW9uLT5pbnN0
YWxsU2VydmljZVdvcmtlckNvbnRleHQoZGF0YSk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OmZpcmVJ
bnN0YWxsRXZlbnQoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCit2b2lkIFNXU2VydmVyOjpmaXJlSW5zdGFsbEV2
ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQogewot
ICAgIGNvbm5lY3Rpb24uZmlyZUluc3RhbGxFdmVudChzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7
CisgICAgYXV0byogd29ya2VyID0gbV93b3JrZXJzQnlJRC5nZXQoc2VydmljZVdvcmtlcklkZW50
aWZpZXIpOworICAgIGlmICghd29ya2VyKSB7CisgICAgICAgIExPR19FUlJPUigiUmVxdWVzdCB0
byBmaXJlIGluc3RhbGwgZXZlbnQgb24gYSB3b3JrZXIgdGhhdCBjYW5ub3QgYmUgZm91bmQgaW4g
dGhlIHNlcnZlciIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byogY29ubmVj
dGlvbiA9IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvcklkZW50aWZp
ZXIod29ya2VyLT5jb250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIoKSk7CisgICAgaWYgKCFjb25u
ZWN0aW9uKSB7CisgICAgICAgIExPR19FUlJPUigiUmVxdWVzdCB0byBmaXJlIGluc3RhbGwgZXZl
bnQgb24gYSB3b3JrZXIgd2hvc2UgY29udGV4dCBjb25uZWN0aW9uIGRvZXMgbm90IGV4aXN0Iik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb25uZWN0aW9uLT5maXJlSW5zdGFsbEV2
ZW50KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6ZmlyZUFj
dGl2YXRlRXZlbnQoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCit2b2lkIFNXU2VydmVyOjpmaXJlQWN0aXZhdGVF
dmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKIHsK
LSAgICBjb25uZWN0aW9uLmZpcmVBY3RpdmF0ZUV2ZW50KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KTsKKyAgICBhdXRvKiB3b3JrZXIgPSBtX3dvcmtlcnNCeUlELmdldChzZXJ2aWNlV29ya2VySWRl
bnRpZmllcik7CisgICAgaWYgKCF3b3JrZXIpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJSZXF1ZXN0
IHRvIGZpcmUgaW5zdGFsbCBldmVudCBvbiBhIHdvcmtlciB0aGF0IGNhbm5vdCBiZSBmb3VuZCBp
biB0aGUgc2VydmVyIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvKiBjb25u
ZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9ySWRlbnRp
Zmllcih3b3JrZXItPmNvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcigpKTsKKyAgICBpZiAoIWNv
bm5lY3Rpb24pIHsKKyAgICAgICAgTE9HX0VSUk9SKCJSZXF1ZXN0IHRvIGZpcmUgaW5zdGFsbCBl
dmVudCBvbiBhIHdvcmtlciB3aG9zZSBjb250ZXh0IGNvbm5lY3Rpb24gZG9lcyBub3QgZXhpc3Qi
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbm5lY3Rpb24tPmZpcmVBY3RpdmF0
ZUV2ZW50KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6dGFz
a1RocmVhZEVudHJ5UG9pbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5oCmluZGV4IGYwYzhjMmMxY2Y1Li5lZjU2ZTQxZGY0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAt
MzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2IuaCIKICNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKICNpbmNs
dWRlIDx3dGYvQ3Jvc3NUaHJlYWRRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFRh
c2suaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNDUsNiArNDYsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNXU2VydmVySm9iUXVldWU7CiBjbGFzcyBTV1NlcnZlclJl
Z2lzdHJhdGlvbjsKK2NsYXNzIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKIGVudW0gY2xh
c3MgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlOwogZW51bSBjbGFzcyBTZXJ2aWNlV29y
a2VyU3RhdGU7CiBzdHJ1Y3QgRXhjZXB0aW9uRGF0YTsKQEAgLTU5LDExICs2MSw2IEBAIHB1Ymxp
YzoKICAgICBwdWJsaWM6CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkNvbm5lY3Rp
b24oKTsKIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRU
b1N0YXJ0KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzY3JpcHRDb250ZXh0U3RhcnRlZChjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAgICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRpZEZpbmlzaEluc3RhbGwoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eSYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpOwotICAgICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oY29uc3QgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleSYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKTsKICAgICAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7CiAgICAgICAgIGNvbnN0IFNXU2VydmVyUmVnaXN0
cmF0aW9uKiBkb1JlZ2lzdHJhdGlvbk1hdGNoaW5nKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
dG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXIu
ZG9SZWdpc3RyYXRpb25NYXRjaGluZyh0b3BPcmlnaW4sIGNsaWVudFVSTCk7IH0KIApAQCAtODgs
MTEgKzg1LDYgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZVVucmVnaXN0
cmF0aW9uSm9iSW5DbGllbnQodWludDY0X3Qgam9iSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleSYsIGJvb2wgcmVnaXN0cmF0aW9uUmVzdWx0KSA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBzdGFydFNjcmlwdEZldGNoSW5DbGllbnQodWludDY0X3Qgam9iSWRl
bnRpZmllcikgPSAwOwogCi0gICAgICAgIC8vIE1lc3NhZ2VzIHRvIHRoZSBTVyBob3N0IFdlYlBy
b2Nlc3MKLSAgICAgICAgdmlydHVhbCB2b2lkIGluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChj
b25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBmaXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikg
PSAwOwotCiAgICAgICAgIFNXU2VydmVyJiBtX3NlcnZlcjsKICAgICB9OwogCkBAIC0xMTQsMTMg
KzEwNiwyMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBwb3N0VGFzayhDcm9zc1RocmVhZFRhc2smJik7
CiAgICAgdm9pZCBwb3N0VGFza1JlcGx5KENyb3NzVGhyZWFkVGFzayYmKTsKIAotICAgIFJlZjxT
V1NlcnZlcldvcmtlcj4gdXBkYXRlV29ya2VyKENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIFdv
cmtlclR5cGUpOwotICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChDb25uZWN0aW9uJiwgU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIpOwotICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoQ29ubmVjdGlv
biYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICB2b2lkIHVwZGF0ZVdvcmtlcihDb25u
ZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXb3JrZXJUeXBlKTsKKyAgICB2b2lkIGZpcmVJbnN0YWxs
RXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZl
bnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIFNXU2VydmVyV29ya2VyKiB3b3JrZXJC
eUlEKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpIGNvbnN0IHsgcmV0dXJuIG1f
d29ya2Vyc0J5SUQuZ2V0KGlkZW50aWZpZXIpOyB9CiAgICAgCiAgICAgQ29ubmVjdGlvbiogZ2V0
Q29ubmVjdGlvbih1aW50NjRfdCBpZGVudGlmaWVyKSB7IHJldHVybiBtX2Nvbm5lY3Rpb25zLmdl
dChpZGVudGlmaWVyKTsgfQogCisgICAgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChT
V1NlcnZlcldvcmtlciYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBzY3JpcHRD
b250ZXh0U3RhcnRlZChTV1NlcnZlcldvcmtlciYpOworICAgIHZvaWQgZGlkRmluaXNoSW5zdGFs
bChTV1NlcnZlcldvcmtlciYsIGJvb2wgd2FzU3VjY2Vzc2Z1bCk7CisgICAgdm9pZCBkaWRGaW5p
c2hBY3RpdmF0aW9uKFNXU2VydmVyV29ya2VyJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKCk7CisgICAgCisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIEhhc2hTZXQ8U1dTZXJ2ZXIqPiYgYWxsU2VydmVycygpOworCiBwcml2YXRl
OgogICAgIHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9uKENvbm5lY3Rpb24mKTsKICAgICB2b2lkIHVu
cmVnaXN0ZXJDb25uZWN0aW9uKENvbm5lY3Rpb24mKTsKQEAgLTEyOSwxMSArMTMwLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGhhbmRsZVRhc2tSZXBsaWVzT25NYWluVGhyZWFkKCk7CiAKICAgICB2
b2lkIHNjcmlwdEZldGNoRmluaXNoZWQoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJG
ZXRjaFJlc3VsdCYpOwotICAgIHZvaWQgc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoQ29ubmVj
dGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICB2b2lkIHNjcmlwdENvbnRl
eHRTdGFydGVkKENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAgIHZvaWQgZGlkRmluaXNoSW5zdGFsbChD
b25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpOwotICAgIHZvaWQgZGlkRmluaXNo
QWN0aXZhdGlvbihDb25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eSYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIHNldFNlcnZpY2VXb3JrZXJI
YXNQZW5kaW5nRXZlbnRzKENvbm5lY3Rpb24mLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9v
bCBoYXNQZW5kaW5nRXZlbnRzKTsKKwogICAgIHZvaWQgZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblBy
b21pc2UoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKTsK
IAogICAgIHZvaWQgYWRkQ2xpZW50U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihDb25uZWN0aW9u
JiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyKTsKQEAgLTE0MSw2ICsxMzgsOCBAQCBwcml2YXRlOgogCiAgICAg
V0VCQ09SRV9FWFBPUlQgY29uc3QgU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIGRvUmVnaXN0cmF0aW9u
TWF0Y2hpbmcoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYg
Y2xpZW50VVJMKSBjb25zdDsKIAorICAgIHZvaWQgaW5zdGFsbENvbnRleHREYXRhKGNvbnN0IFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpOworCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29ubmVj
dGlvbio+IG1fY29ubmVjdGlvbnM7CiAgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5LCBzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+PiBtX3JlZ2lzdHJh
dGlvbnM7CiAgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LCBzdGQ6OnVu
aXF1ZV9wdHI8U1dTZXJ2ZXJKb2JRdWV1ZT4+IG1fam9iUXVldWVzOwpAQCAtMTU1LDYgKzE1NCw4
IEBAIHByaXZhdGU6CiAKICAgICBMb2NrIG1fbWFpblRocmVhZFJlcGx5TG9jazsKICAgICBib29s
IG1fbWFpblRocmVhZFJlcGx5U2NoZWR1bGVkIHsgZmFsc2UgfTsKKworICAgIERlcXVlPFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YT4gbV9wZW5kaW5nQ29udGV4dERhdGFzOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKaW5kZXggZTY5ZmU1N2VjYjMuLjcw
MDljZDVhOGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVySm9iUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBT
V1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkKFNXU2VydmVyOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBjb24KIH0KIAogLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VX
b3JrZXIvI3VwZGF0ZS1hbGdvcml0aG0KLXZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0Q29u
dGV4dEZhaWxlZFRvU3RhcnQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpz
Y3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQogewogICAgIC8vIElmIGFuIHVuY2F1Z2h0IHJ1bnRpbWUgc2NyaXB0
IGVycm9yIG9jY3VycyBkdXJpbmcgdGhlIGFib3ZlIHN0ZXAsIHRoZW46CiAgICAgYXV0byogcmVn
aXN0cmF0aW9uID0gbV9zZXJ2ZXIuZ2V0UmVnaXN0cmF0aW9uKG1fcmVnaXN0cmF0aW9uS2V5KTsK
QEAgLTEwMSwxNiArMTAxLDE2IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0Q29udGV4
dEZhaWxlZFRvU3RhcnQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBTZXJ2aWNlCiAgICAgZmluaXNo
Q3VycmVudEpvYigpOwogfQogCi12b2lkIFNXU2VydmVySm9iUXVldWU6OnNjcmlwdENvbnRleHRT
dGFydGVkKFNXU2VydmVyOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBpZGVudGlmaWVyKQordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRDb250ZXh0
U3RhcnRlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIGF1dG8q
IHJlZ2lzdHJhdGlvbiA9IG1fc2VydmVyLmdldFJlZ2lzdHJhdGlvbihtX3JlZ2lzdHJhdGlvbktl
eSk7CiAgICAgQVNTRVJUKHJlZ2lzdHJhdGlvbik7CiAKLSAgICBpbnN0YWxsKCpyZWdpc3RyYXRp
b24sIGNvbm5lY3Rpb24sIGlkZW50aWZpZXIpOworICAgIGluc3RhbGwoKnJlZ2lzdHJhdGlvbiwg
aWRlbnRpZmllcik7CiB9CiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2Vy
LyNpbnN0YWxsCi12b2lkIFNXU2VydmVySm9iUXVldWU6Omluc3RhbGwoU1dTZXJ2ZXJSZWdpc3Ry
YXRpb24mIHJlZ2lzdHJhdGlvbiwgU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBpbnN0YWxsaW5nV29ya2VyKQordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjppbnN0
YWxsKFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIGluc3RhbGxpbmdXb3JrZXIpCiB7CiAgICAgLy8gVGhlIEluc3RhbGwgYWxnb3JpdGht
IHNob3VsZCBuZXZlciBiZSBpbnZva2VkIHdpdGggYSBudWxsIHdvcmtlci4KICAgICBhdXRvKiB3
b3JrZXIgPSBtX3NlcnZlci53b3JrZXJCeUlEKGluc3RhbGxpbmdXb3JrZXIpOwpAQCAtMTI0LDcg
KzEyNCw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6aW5zdGFsbChTV1NlcnZlclJlZ2lzdHJh
dGlvbiYgcmVnaXN0cmF0aW9uLCBTV1NlcnZlcjo6Q29uCiB9CiAKIC8vIGh0dHBzOi8vdzNjLmdp
dGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNpbnN0YWxsIChhZnRlciByZXNvbHZpbmcgcHJvbWlzZSku
Ci12b2lkIFNXU2VydmVySm9iUXVldWU6OmRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKFNX
U2VydmVyOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpk
aWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZSgpCiB7CiAgICAgYXV0byogcmVnaXN0cmF0aW9u
ID0gbV9zZXJ2ZXIuZ2V0UmVnaXN0cmF0aW9uKG1fcmVnaXN0cmF0aW9uS2V5KTsKICAgICBBU1NF
UlQocmVnaXN0cmF0aW9uKTsKQEAgLTEzNSwxMSArMTM1LDExIEBAIHZvaWQgU1dTZXJ2ZXJKb2JR
dWV1ZTo6ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24m
IGNvbm5lCiAgICAgcmVnaXN0cmF0aW9uLT5maXJlVXBkYXRlRm91bmRFdmVudCgpOwogCiAgICAg
Ly8gUXVldWUgYSB0YXNrIHRvIGZpcmUgdGhlIEluc3RhbGxFdmVudC4KLSAgICBtX3NlcnZlci5m
aXJlSW5zdGFsbEV2ZW50KGNvbm5lY3Rpb24sIHJlZ2lzdHJhdGlvbi0+aW5zdGFsbGluZ1dvcmtl
cigpLT5pZGVudGlmaWVyKCkpOworICAgIG1fc2VydmVyLmZpcmVJbnN0YWxsRXZlbnQocmVnaXN0
cmF0aW9uLT5pbnN0YWxsaW5nV29ya2VyKCktPmlkZW50aWZpZXIoKSk7CiB9CiAKIC8vIGh0dHBz
Oi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNpbnN0YWxsCi12b2lkIFNXU2VydmVySm9i
UXVldWU6OmRpZEZpbmlzaEluc3RhbGwoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkK
K3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6ZGlkRmluaXNoSW5zdGFsbChTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBpZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCiB7CiAgICAgYXV0byogcmVn
aXN0cmF0aW9uID0gbV9zZXJ2ZXIuZ2V0UmVnaXN0cmF0aW9uKG1fcmVnaXN0cmF0aW9uS2V5KTsK
ICAgICBBU1NFUlQocmVnaXN0cmF0aW9uKTsKQEAgLTE3NiwxMSArMTc2LDExIEBAIHZvaWQgU1dT
ZXJ2ZXJKb2JRdWV1ZTo6ZGlkRmluaXNoSW5zdGFsbChTV1NlcnZlcjo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgU2VydmljCiAgICAgZmluaXNoQ3VycmVudEpvYigpOwogCiAgICAgLy8gRklYTUU6
IFdhaXQgZm9yIGFsbCB0aGUgdGFza3MgcXVldWVkIGJ5IFVwZGF0ZSBXb3JrZXIgU3RhdGUgaW52
b2tlZCBpbiB0aGlzIGFsZ29yaXRobSBoYXZlIGV4ZWN1dGVkLgotICAgIHRyeUFjdGl2YXRlKG1f
c2VydmVyLCBjb25uZWN0aW9uLCAqcmVnaXN0cmF0aW9uKTsKKyAgICB0cnlBY3RpdmF0ZShtX3Nl
cnZlciwgKnJlZ2lzdHJhdGlvbik7CiB9CiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2
aWNlV29ya2VyLyN0cnktYWN0aXZhdGUtYWxnb3JpdGhtCi12b2lkIFNXU2VydmVySm9iUXVldWU6
OnRyeUFjdGl2YXRlKFNXU2VydmVyJiBzZXJ2ZXIsIFNXU2VydmVyOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uKQordm9pZCBTV1NlcnZl
ckpvYlF1ZXVlOjp0cnlBY3RpdmF0ZShTV1NlcnZlciYgc2VydmVyLCBTV1NlcnZlclJlZ2lzdHJh
dGlvbiYgcmVnaXN0cmF0aW9uKQogewogICAgIC8vIElmIHJlZ2lzdHJhdGlvbidzIHdhaXRpbmcg
d29ya2VyIGlzIG51bGwsIHJldHVybi4KICAgICBpZiAoIXJlZ2lzdHJhdGlvbi53YWl0aW5nV29y
a2VyKCkpCkBAIC0xOTUsMTEgKzE5NSwxMSBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnRyeUFj
dGl2YXRlKFNXU2VydmVyJiBzZXJ2ZXIsIFNXU2VydmVyOjpDb25uZWN0aW9uJiBjb25uZQogICAg
IC8vICAgYW5kIG5vIHNlcnZpY2Ugd29ya2VyIGNsaWVudCBpcyB1c2luZyByZWdpc3RyYXRpb24K
ICAgICAvLyBGSVhNRTogQ2hlY2sgZm9yIHRoZSBza2lwIHdhaXRpbmcgZmxhZy4KICAgICBpZiAo
IXJlZ2lzdHJhdGlvbi5hY3RpdmVXb3JrZXIoKSB8fCAhcmVnaXN0cmF0aW9uLmFjdGl2ZVdvcmtl
cigpLT5oYXNQZW5kaW5nRXZlbnRzKCkpCi0gICAgICAgIGFjdGl2YXRlKHNlcnZlciwgY29ubmVj
dGlvbiwgcmVnaXN0cmF0aW9uKTsKKyAgICAgICAgYWN0aXZhdGUoc2VydmVyLCByZWdpc3RyYXRp
b24pOwogfQogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jYWN0aXZh
dGUKLXZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6YWN0aXZhdGUoU1dTZXJ2ZXImIHNlcnZlciwgU1dT
ZXJ2ZXI6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdp
c3RyYXRpb24pCit2b2lkIFNXU2VydmVySm9iUXVldWU6OmFjdGl2YXRlKFNXU2VydmVyJiBzZXJ2
ZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24pCiB7CiAgICAgLy8gSWYgcmVn
aXN0cmF0aW9uJ3Mgd2FpdGluZyB3b3JrZXIgaXMgbnVsbCwgYWJvcnQgdGhlc2Ugc3RlcHMuCiAg
ICAgaWYgKCFyZWdpc3RyYXRpb24ud2FpdGluZ1dvcmtlcigpKQpAQCAtMjIzLDcgKzIyMyw3IEBA
IHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6YWN0aXZhdGUoU1dTZXJ2ZXImIHNlcnZlciwgU1dTZXJ2
ZXI6OkNvbm5lY3Rpb24mIGNvbm5lY3RpCiAgICAgLy8gRklYTUU6IEludm9rZSBSdW4gU2Vydmlj
ZSBXb3JrZXIgYWxnb3JpdGhtIHdpdGggYWN0aXZlV29ya2VyIGFzIHRoZSBhcmd1bWVudC4KIAog
ICAgIC8vIFF1ZXVlIGEgdGFzayB0byBmaXJlIHRoZSBhY3RpdmF0ZSBldmVudC4KLSAgICBzZXJ2
ZXIuZmlyZUFjdGl2YXRlRXZlbnQoY29ubmVjdGlvbiwgcmVnaXN0cmF0aW9uLmFjdGl2ZVdvcmtl
cigpLT5pZGVudGlmaWVyKCkpOworICAgIHNlcnZlci5maXJlQWN0aXZhdGVFdmVudChyZWdpc3Ry
YXRpb24uYWN0aXZlV29ya2VyKCktPmlkZW50aWZpZXIoKSk7CiB9CiAKIC8vIGh0dHBzOi8vdzNj
LmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNhY3RpdmF0ZSAocG9zdCBhY3RpdmF0ZSBldmVudCBz
dGVwcykuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVySm9iUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5oCmluZGV4IDJmNzdiMDk3ZjIxLi4zMTBkMThiM2IwMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpv
YlF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlckpvYlF1ZXVlLmgKQEAgLTQ4LDExICs0OCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBydW5O
ZXh0Sm9iKCk7CiAKICAgICB2b2lkIHNjcmlwdEZldGNoRmluaXNoZWQoU1dTZXJ2ZXI6OkNvbm5l
Y3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKTsKLSAgICB2b2lkIHNjcmlw
dENvbnRleHRGYWlsZWRUb1N0YXJ0KFNXU2VydmVyOjpDb25uZWN0aW9uJiwgU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgdm9pZCBzY3JpcHRDb250
ZXh0U3RhcnRlZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KTsKLSAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKTsKKyAgICB2b2lkIHNjcmlw
dENvbnRleHRGYWlsZWRUb1N0YXJ0KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpOworICAgIHZvaWQgc2NyaXB0Q29udGV4dFN0YXJ0ZWQoU2VydmljZVdvcmtl
cklkZW50aWZpZXIpOworICAgIHZvaWQgZGlkRmluaXNoSW5zdGFsbChTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hB
Y3RpdmF0aW9uKFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIp
OwotICAgIHZvaWQgZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoU1dTZXJ2ZXI6OkNvbm5l
Y3Rpb24mKTsKKyAgICB2b2lkIGRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKCk7CiAKIHBy
aXZhdGU6CiAgICAgdm9pZCBqb2JUaW1lckZpcmVkKCk7CkBAIC02Niw5ICs2Niw5IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHRyeUNsZWFyUmVnaXN0cmF0aW9uKFNXU2VydmVyUmVnaXN0cmF0aW9u
Jik7CiAgICAgdm9pZCBjbGVhclJlZ2lzdHJhdGlvbihTV1NlcnZlclJlZ2lzdHJhdGlvbiYpOwot
ICAgIHZvaWQgaW5zdGFsbChTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIFNXU2VydmVyOjpDb25uZWN0
aW9uJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAgIHN0YXRpYyB2b2lkIHRyeUFjdGl2
YXRlKFNXU2VydmVyJiwgU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBTV1NlcnZlclJlZ2lzdHJhdGlv
biYpOwotICAgIHN0YXRpYyB2b2lkIGFjdGl2YXRlKFNXU2VydmVyJiwgU1dTZXJ2ZXI6OkNvbm5l
Y3Rpb24mLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYpOworICAgIHZvaWQgaW5zdGFsbChTV1NlcnZl
clJlZ2lzdHJhdGlvbiYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgdm9p
ZCB0cnlBY3RpdmF0ZShTV1NlcnZlciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJik7CisgICAgc3Rh
dGljIHZvaWQgYWN0aXZhdGUoU1dTZXJ2ZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYpOwogCiAg
ICAgRGVxdWU8U2VydmljZVdvcmtlckpvYkRhdGE+IG1fam9iUXVldWU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJl
Z2lzdHJhdGlvbi5jcHAKaW5kZXggZjczYmVmZWNiNDMuLjczMjc3OTdiODA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyUmVnaXN0cmF0aW9uLmNwcApAQCAtMzcsOCArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0YXRpYyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBnZW5lcmF0ZVNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKCkKIHsKLSAgICBzdGF0aWMgdWludDY0
X3QgaWRlbnRpZmllciA9IDA7Ci0gICAgcmV0dXJuIG1ha2VPYmplY3RJZGVudGlmaWVyPFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyVHlwZT4oKytpZGVudGlmaWVyKTsKKyAgICBy
ZXR1cm4gZ2VuZXJhdGVPYmplY3RJZGVudGlmaWVyPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyVHlwZT4oKTsKIH0KIAogU1dTZXJ2ZXJSZWdpc3RyYXRpb246OlNXU2VydmVyUmVn
aXN0cmF0aW9uKFNXU2VydmVyJiBzZXJ2ZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmIGtleSwgU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlIHVwZGF0ZVZpYUNhY2hlLCBj
b25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmIHNjcmlwdFVSTCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uNWI2MDljNDEzOWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAg
LTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCisKKyNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCisKKyNpbmNsdWRlICJTV1NlcnZlci5oIgorI2luY2x1ZGUgIlNXU2VydmVyV29ya2Vy
LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworc3RhdGljIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgZ2VuZXJh
dGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcigpCit7CisgICAgcmV0dXJuIGdl
bmVyYXRlT2JqZWN0SWRlbnRpZmllcjxTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlm
aWVyVHlwZT4oKTsKK30KKworc3RhdGljIEhhc2hNYXA8U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uSWRlbnRpZmllciwgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4mIGFsbENvbm5lY3Rp
b25zKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25JZGVudGlmaWVyLCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qPj4g
Y29ubmVjdGlvbnM7CisgICAgcmV0dXJuIGNvbm5lY3Rpb25zOworfQorCitTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpCisgICAgOiBtX2lk
ZW50aWZpZXIoZ2VuZXJhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcigpKQor
eworICAgIGF1dG8gcmVzdWx0ID0gYWxsQ29ubmVjdGlvbnMoKS5hZGQobV9pZGVudGlmaWVyLCB0
aGlzKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworfQor
CitTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24oKQoreworICAgIGF1dG8gdGFrZW4gPSBhbGxDb25uZWN0aW9ucygpLnRha2UobV9pZGVudGlm
aWVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHRha2VuLCB0YWtlbiA9IHRoaXMpOworfQorCitTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24qIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29u
bmVjdGlvbkZvcklkZW50aWZpZXIoU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmll
ciBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBhbGxDb25uZWN0aW9ucygpLmdldChpZGVudGlm
aWVyKTsKK30KKworU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQoreworICAgIGlm
IChhbGxDb25uZWN0aW9ucygpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgCisgICAgQVNTRVJUKGFsbENvbm5lY3Rpb25zKCkuc2l6ZSgpID09IDEpOworICAgIHJldHVy
biBhbGxDb25uZWN0aW9ucygpLmJlZ2luKCktPnZhbHVlOworfQorCit2b2lkIFNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoU2VydmljZVdvcmtl
cklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKK3sKKyAgICBpZiAoYXV0byogd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29y
a2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpCisgICAgICAgIHdvcmtl
ci0+c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQobWVzc2FnZSk7Cit9CisKK3ZvaWQgU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzY3JpcHRDb250ZXh0U3RhcnRlZChTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byogd29y
a2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNl
V29ya2VySWRlbnRpZmllcikpCisgICAgICAgIHdvcmtlci0+c2NyaXB0Q29udGV4dFN0YXJ0ZWQo
KTsKK30KKyAgICAKK3ZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRGaW5pc2hJ
bnN0YWxsKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBi
b29sIHdhc1N1Y2Nlc3NmdWwpCit7CisgICAgaWYgKGF1dG8qIHdvcmtlciA9IFNXU2VydmVyV29y
a2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIp
KQorICAgICAgICB3b3JrZXItPmRpZEZpbmlzaEluc3RhbGwod2FzU3VjY2Vzc2Z1bCk7Cit9CisK
K3ZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRGaW5pc2hBY3RpdmF0aW9uKFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQoreworICAgIGlm
IChhdXRvKiB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlm
aWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkKKyAgICAgICAgd29ya2VyLT5kaWRGaW5pc2hB
Y3RpdmF0aW9uKCk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzZXRT
ZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKQoreworICAgIGlmIChh
dXRvKiB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVy
KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkKKyAgICAgICAgd29ya2VyLT5zZXRIYXNQZW5kaW5n
RXZlbnRzKGhhc1BlbmRpbmdFdmVudHMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjRh
NTQ2Y2RhZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNzIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
KworI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlclR5cGVzLmgiCisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1dTZXJ2ZXI7CitzdHJ1Y3QgU2VydmljZVdv
cmtlckNvbnRleHREYXRhOworCitjbGFzcyBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiB7
CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKCk7CisKKyAgICBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVy
IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworICAgIC8vIE1l
c3NhZ2VzIHRvIHRoZSBTVyBob3N0IHByb2Nlc3MKKyAgICB2aXJ0dWFsIHZvaWQgaW5zdGFsbFNl
cnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZmlyZUluc3RhbGxFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmll
cikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcikgPSAwOworCisgICAgLy8gTWVzc2FnZXMgYmFjayBmcm9tIHRoZSBTVyBob3N0
IHByb2Nlc3MKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0
YXJ0KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NyaXB0Q29udGV4dFN0YXJ0ZWQoU2VydmljZVdvcmtlcklk
ZW50aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmluaXNoSW5zdGFsbChTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHMo
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgaGFzUGVuZGluZ0V2ZW50cyk7CisKKyAgICBz
dGF0aWMgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBjb25uZWN0aW9uRm9ySWRlbnRpZmll
cihTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKTsKKworICAgIC8vIEZJWE1F
OiBXaGlsZSB3ZSBvbmx5IGV2ZXIgaGF2ZSBvbmUgU1cgY29udGV4dCBwcm9jZXNzIHRoaXMgbWV0
aG9kIG1ha2VzIHNlbnNlLgorICAgIC8vIE9uY2Ugd2UgaGF2ZSBtdWx0aXBsZSBvbmVzIHRoaXMg
bWV0aG9kIHNob3VsZCBnbyBhd2F5IGZvcmNpbmcgdXNlIG9mIGNvbm5lY3Rpb25Gb3JJZGVudGlm
aWVyKCkKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uKiBnbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7CisKK3Byb3RlY3RlZDoKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKKworcHJpdmF0
ZToKKyAgICBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyIG1faWRlbnRpZmll
cjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKaW5kZXggMTI1YTI2NGY1N2MuLjViYjIzMGNmZjA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyV29ya2VyLmNwcApAQCAtMjgsMjQgKzI4LDY1IEBACiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiAKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1TV1NlcnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIoY29uc3QgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIFdvcmtlclR5cGUgdHlwZSwgU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgaWRlbnRpZmllcikKLSAgICA6IG1fcmVnaXN0cmF0aW9uS2V5KHJlZ2lzdHJhdGlv
bktleSkKK3N0YXRpYyBIYXNoTWFwPFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTV1NlcnZlcldv
cmtlcio+JiBhbGxXb3JrZXJzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1h
cDxTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU1dTZXJ2ZXJXb3JrZXIqPj4gd29ya2VyczsKKyAg
ICByZXR1cm4gd29ya2VyczsKK30KKworU1dTZXJ2ZXJXb3JrZXIqIFNXU2VydmVyV29ya2VyOjpl
eGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllcikKK3sKKyAgICByZXR1cm4gYWxsV29ya2VycygpLmdldChpZGVudGlmaWVyKTsKK30KKwor
U1dTZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKFNXU2VydmVyJiBzZXJ2ZXIsIGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uSWRlbnRpZmllciBjb250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIsIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgV29ya2VyVHlwZSB0eXBlLCBTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIDogbV9zZXJ2ZXIoc2VydmVyKQor
ICAgICwgbV9yZWdpc3RyYXRpb25LZXkocmVnaXN0cmF0aW9uS2V5KQorICAgICwgbV9jb250ZXh0
Q29ubmVjdGlvbklkZW50aWZpZXIoY29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKQogICAgICwg
bV9zY3JpcHRVUkwodXJsKQogICAgICwgbV9zY3JpcHQoc2NyaXB0KQogICAgICwgbV9pZGVudGlm
aWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKKyAgICBhdXRvIHJlc3VsdCA9
IGFsbFdvcmtlcnMoKS5hZGQoaWRlbnRpZmllciwgdGhpcyk7CisgICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotU1dTZXJ2ZXJXb3JrZXI6On5TV1NlcnZl
cldvcmtlcigpID0gZGVmYXVsdDsKK1NXU2VydmVyV29ya2VyOjp+U1dTZXJ2ZXJXb3JrZXIoKQor
eworICAgIGF1dG8gdGFrZW4gPSBhbGxXb3JrZXJzKCkudGFrZShtX2lkZW50aWZpZXIpOworICAg
IEFTU0VSVF9VTlVTRUQodGFrZW4sIHRha2VuID09IHRoaXMpOworfQogCiB2b2lkIFNXU2VydmVy
V29ya2VyOjp0ZXJtaW5hdGUoKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKIH0KIAordm9p
ZCBTV1NlcnZlcldvcmtlcjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQoreworICAgIG1fc2VydmVyLnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KCp0
aGlzLCBtZXNzYWdlKTsKK30KKwordm9pZCBTV1NlcnZlcldvcmtlcjo6c2NyaXB0Q29udGV4dFN0
YXJ0ZWQoKQoreworICAgIG1fc2VydmVyLnNjcmlwdENvbnRleHRTdGFydGVkKCp0aGlzKTsKK30K
Kwordm9pZCBTV1NlcnZlcldvcmtlcjo6ZGlkRmluaXNoSW5zdGFsbChib29sIHdhc1N1Y2Nlc3Nm
dWwpCit7CisgICAgbV9zZXJ2ZXIuZGlkRmluaXNoSW5zdGFsbCgqdGhpcywgd2FzU3VjY2Vzc2Z1
bCk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXJXb3JrZXI6OmRpZEZpbmlzaEFjdGl2YXRpb24oKQorewor
ICAgIG1fc2VydmVyLmRpZEZpbmlzaEFjdGl2YXRpb24oKnRoaXMpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2Vy
LmgKaW5kZXggMWE2ODFlYjI5Y2UuLjM4YjBiNDdhY2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBAIC0zNSwx
MyArMzUsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTV1NlcnZlcjsKIGVu
dW0gY2xhc3MgV29ya2VyVHlwZTsKIAogY2xhc3MgU1dTZXJ2ZXJXb3JrZXIgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8U1dTZXJ2ZXJXb3JrZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFNXU2VydmVyV29ya2VyPiBjcmVhdGUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBzY3Jp
cHQsIFdvcmtlclR5cGUgdHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxTV1NlcnZlcldvcmtl
cj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU1dTZXJ2ZXJXb3JrZXIocmVnaXN0cmF0aW9uS2V5LCB1cmwsIHNjcmlwdCwgdHlwZSwg
aWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTV1NlcnZlcldvcmtl
cihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKICAgICB9CiAgICAgCiAgICAgU1dTZXJ2
ZXJXb3JrZXIoY29uc3QgU1dTZXJ2ZXJXb3JrZXImKSA9IGRlbGV0ZTsKQEAgLTQ5LDExICs1MCwx
NCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHRlcm1pbmF0ZSgpOwogCisgICAgU1dTZXJ2ZXImIHNl
cnZlcigpOworICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJh
dGlvbktleSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmF0aW9uS2V5OyB9CiAgICAgY29uc3Qg
VVJMJiBzY3JpcHRVUkwoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFVSTDsgfQogICAgIGNvbnN0
IFN0cmluZyYgc2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHQ7IH0KICAgICBXb3JrZXJU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAgIFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAg
ICBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyIGNvbnRleHRDb25uZWN0aW9u
SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVy
OyB9CiAKICAgICBTZXJ2aWNlV29ya2VyU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0
YXRlOyB9CiAgICAgdm9pZCBzZXRTdGF0ZShTZXJ2aWNlV29ya2VyU3RhdGUgc3RhdGUpIHsgbV9z
dGF0ZSA9IHN0YXRlOyB9CkBAIC02MSwxMCArNjUsMTkgQEAgcHVibGljOgogICAgIGJvb2wgaGFz
UGVuZGluZ0V2ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzUGVuZGluZ0V2ZW50czsgfQogICAg
IHZvaWQgc2V0SGFzUGVuZGluZ0V2ZW50cyhib29sIHZhbHVlKSB7IG1faGFzUGVuZGluZ0V2ZW50
cyA9IHZhbHVlOyB9CiAKKyAgICB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0
IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBzY3JpcHRDb250ZXh0U3RhcnRlZCgpOworICAg
IHZvaWQgZGlkRmluaXNoSW5zdGFsbChib29sIHdhc1N1Y2Nlc3NmdWwpOworICAgIHZvaWQgZGlk
RmluaXNoQWN0aXZhdGlvbigpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNXU2VydmVy
V29ya2VyKiBleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIpOworCiBwcml2YXRlOgotICAgIFNXU2VydmVyV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgV29ya2Vy
VHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIFNXU2VydmVyV29ya2VyKFNXU2Vy
dmVyJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0
LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAKKyAgICBTV1NlcnZlciYg
bV9zZXJ2ZXI7CiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBtX3JlZ2lzdHJhdGlv
bktleTsKKyAgICBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyIG1fY29udGV4
dENvbm5lY3Rpb25JZGVudGlmaWVyOwogICAgIFVSTCBtX3NjcmlwdFVSTDsKICAgICBTdHJpbmcg
bV9zY3JpcHQ7CiAgICAgU2VydmljZVdvcmtlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBiNTdhMjgxN2M2MS4uYjMzOTZlMzIzN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjgg
QEAKKzIwMTctMTEtMTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIE1hc3NpdmUgIlNlcnZlci1wcm9jZXNzLXRvLWNvbnRleHQtcHJvY2VzcyIgY29ubmVjdGlv
biBvdmVyaGF1bC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3OTU1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aDoKKworICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpz
ZW5kVG9Db250ZXh0UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVj
dGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpmaXJlSW5zdGFsbEV2ZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpmaXJlQWN0aXZhdGVFdmVu
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2V0
Q29udGV4dENvbm5lY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmg6CisKKyAgICAgICAgKiBTdG9yYWdl
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuY3BwLgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3Nh
Z2VTZW5kZXJEZXN0aW5hdGlvbklEKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZpcmVJ
bnN0YWxsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OmZpcmVBY3RpdmF0ZUV2ZW50KToKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclR5cGVzLmguCisgICAg
ICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjppcGNDb25uZWN0
aW9uIGNvbnN0KToKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjogQ29waWVkIGZyb20gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4uCisKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpkaWRDbG9zZSk6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpnbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6ZGlkR2V0V29ya2Vy
Q29udGV4dFByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nl
c3M6OndvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rp
b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6c2VydmljZVdv
cmtlckNvbnRleHRGYWlsZWRUb1N0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZVByb2Nlc3M6OnNlcnZpY2VXb3JrZXJDb250ZXh0U3RhcnRlZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpkaWRGaW5pc2hTZXJ2aWNlV29ya2VySW5zdGFs
bCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpkaWRGaW5pc2hT
ZXJ2aWNlV29ya2VyQWN0aXZhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VQcm9jZXNzOjpzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyk6IERlbGV0ZWQuCisg
ICAgICAgICogU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaDoKKyAgICAgICAgKiBTdG9y
YWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIFN0b3Jh
Z2VQcm9jZXNzL1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmVzdGFibGlz
aFNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUb1dlYlByb2Nl
c3NDb25uZWN0aW9uOjp3b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb25DcmVhdGVkKToKKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpp
bnN0YWxsU2VydmljZVdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpzZXJ2aWNlV29ya2VyU3RhcnRlZFdpdGhNZXNzYWdlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpcmVJbnN0YWxsRXZlbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZmlyZUFj
dGl2YXRlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6ZGlkRmluaXNoSW5zdGFsbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uOjpkaWRGaW5pc2hBY3RpdmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5n
RXZlbnRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisKIDIwMTctMTEtMTMgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgIlNlcnZpY2UgV29ya2Vy
IEhhcyBObyBQZW5kaW5nIEV2ZW50cyIgLyAiVXBkYXRlIFNlcnZpY2UgV29ya2VyIEV4dGVuZGVk
IEV2ZW50cyBTZXQiIGFsZ29yaXRobXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA0
MzliMWVlOGY4OS4uZDcyMWMwYjE4Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAg
LTE2NCw2ICsxNjQsNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBXZWJTV0NsaWVudENv
bm5lY3Rpb24gXAogICAgIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIFwKICAgICBXZWJT
V1NlcnZlckNvbm5lY3Rpb24gXAorICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBc
CiAgICAgUGxheWJhY2tTZXNzaW9uTWFuYWdlciBcCiAgICAgUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5IFwKICAgICBXZWJQcm9jZXNzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggOThkOTdhZGZjODQuLmU5OWNiNmRkODFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNDIsNiArNDIs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1N0b3JlZENyZWRlbnRpYWxzUG9saWN5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Xb3JrZXJUeXBl
Lmg+CiAKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTW9ub3RvbmljVGltZTsKQEAgLTc5Nyw2ICs3
OTgsMTQgQEAgdGVtcGxhdGUgPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3k+IHsKICAgICA+OwogfTsKIAordGVtcGxhdGUgPD4gc3RydWN0IEVudW1U
cmFpdHM8V2ViQ29yZTo6V29ya2VyVHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1
ZXM8CisgICAgICAgIFdlYkNvcmU6OldvcmtlclR5cGUsCisgICAgICAgIFdlYkNvcmU6Oldvcmtl
clR5cGU6OkNsYXNzaWMsCisgICAgICAgIFdlYkNvcmU6OldvcmtlclR5cGU6Ok1vZHVsZQorICAg
ID47Cit9OworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogdGVtcGxhdGUgPD4gc3RydWN0
IEVudW1UcmFpdHM8V2ViQ29yZTo6U2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlPiB7CiAgICAg
dXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3Rv
cmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5jcHAKaW5kZXggNmJjNTg5YTk1NzIuLjZmYWZmNDgxNGI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV09y
aWdpblN0b3JlLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJX
ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0
aW9uRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KQEAgLTExMSwy
NCArMTEyLDYgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnVwZGF0ZVdvcmtlclN0YXRl
SW5DbGllbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgd28KICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJTV0NsaWVudENvbm5lY3Rpb246OlVwZGF0ZVdvcmtlclN0YXRlKHdvcmtlciwgc3RhdGUpKTsK
IH0KIAotdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29ya2VyQ29u
dGV4dChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEpCi17Ci0gICAgaWYgKHNl
bmRUb0NvbnRleHRQcm9jZXNzKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6SW5zdGFsbFNlcnZpY2VXb3JrZXIoaWRlbnRpZmllcigpLCBkYXRhKSkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIG1fcGVuZGluZ0NvbnRleHREYXRhcy5hcHBlbmQoZGF0YSk7Ci19Ci0KLXZv
aWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpmaXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQotewotICAgIHNlbmRUb0NvbnRleHRQ
cm9jZXNzKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6RmlyZUluc3Rh
bGxFdmVudChpZGVudGlmaWVyKCksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSk7Ci19Ci0KLXZv
aWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKLXsKLSAgICBzZW5kVG9Db250ZXh0
UHJvY2VzcyhNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkZpcmVBY3Rp
dmF0ZUV2ZW50KGlkZW50aWZpZXIoKSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIpKTsKLX0KLQog
dm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2godWludDY0X3QgZmV0Y2hJZGVu
dGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyPiBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBGZXRj
aE9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgc2VuZFRvQ29udGV4dFByb2Nlc3MoTWVzc2FnZXM6
OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTdGFydEZldGNoKGlkZW50aWZpZXIoKSwg
ZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9u
cykpOwpAQCAtMTc5LDI1ICsxNjIsMTIgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246Om1h
dGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdEkKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJTV0NsaWVudENvbm5lY3Rpb246OkRpZE1hdGNoUmVnaXN0cmF0aW9u
IHsgcmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpudWxsb3B0IH0pOwog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2Vu
ZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1lc3NhZ2UpCit0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lk
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2VuZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1lc3NhZ2Up
CiB7Ci0gICAgaWYgKCFtX2NvbnRleHRDb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICByZXR1cm4gbV9jb250ZXh0Q29ubmVjdGlvbi0+c2VuZDxVPihXVEZNb3ZlKG1lc3Nh
Z2UpLCAwKTsKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IFN0b3JhZ2VQcm9jZXNzOjpzaW5n
bGV0b24oKS5nbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkpCisgICAgICAgIGNvbm5l
Y3Rpb24tPnNlbmQoV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjpzZXRDb250ZXh0Q29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24p
Ci17Ci0gICAgbV9jb250ZXh0Q29ubmVjdGlvbiA9IGNvbm5lY3Rpb247Ci0KLSAgICAvLyBXZSBj
YW4gbm93IHN0YXJ0IGFueSBwZW5kaW5nIHNlcnZpY2Ugd29ya2VyIHVwZGF0ZXMuCi0gICAgZm9y
IChhdXRvJiBwZW5kaW5nQ29udGV4dERhdGEgOiBtX3BlbmRpbmdDb250ZXh0RGF0YXMpCi0gICAg
ICAgIGluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChwZW5kaW5nQ29udGV4dERhdGEpOwotICAg
IAotICAgIG1fcGVuZGluZ0NvbnRleHREYXRhcy5jbGVhcigpOwotfQotICAgIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggN2YxY2Q1MWVjZjEuLmI4MGIzYmZkNDdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCkBAIC00Niw3ICs0Niw2IEBA
IHB1YmxpYzoKICAgICB+V2ViU1dTZXJ2ZXJDb25uZWN0aW9uKCkgZmluYWw7CiAKICAgICB2b2lk
IGRpc2Nvbm5lY3RlZEZyb21XZWJQcm9jZXNzKCk7Ci0gICAgdm9pZCBzZXRDb250ZXh0Q29ubmVj
dGlvbihJUEM6OkNvbm5lY3Rpb24qKTsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCiAgICAgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KQEAgLTc1LDIyICs3NCwx
NSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBtYXRjaFJlZ2lzdHJhdGlvbih1aW50NjRfdCByZWdp
c3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpVUkwmIGNsaWVudFVSTCk7CiAKLSAgICAvLyBNZXNz
YWdlcyB0byB0aGUgU1cgY29udGV4dCBXZWJQcm9jZXNzCi0gICAgdm9pZCBpbnN0YWxsU2Vydmlj
ZVdvcmtlckNvbnRleHQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJikg
ZmluYWw7Ci0gICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKLQogICAgIElQQzo6Q29ubmVjdGlvbiogbWVz
c2FnZVNlbmRlckNvbm5lY3Rpb24oKSBmaW5hbCB7IHJldHVybiBtX2NvbnRlbnRDb25uZWN0aW9u
LnB0cigpOyB9CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBmaW5h
bCB7IHJldHVybiBpZGVudGlmaWVyKCk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJv
b2wgc2VuZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1lc3NhZ2UpOwogICAgIAorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFU+IHZvaWQgc2VuZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1lc3NhZ2UpOworCiAg
ICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9u
PiBtX2NvbnRlbnRDb25uZWN0aW9uOwogICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29u
dGV4dENvbm5lY3Rpb247Ci0gICAgCi0gICAgRGVxdWU8V2ViQ29yZTo6U2VydmljZVdvcmtlckNv
bnRleHREYXRhPiBtX3BlbmRpbmdDb250ZXh0RGF0YXM7CiB9OyAvLyBjbGFzcyBXZWJTV1NlcnZl
ckNvbm5lY3Rpb24KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi5hOGM1OWVlOTk5MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCisK
KyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCisgICAg
OiBtX2lwY0Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKK3sKK30KKworSVBDOjpDb25u
ZWN0aW9uKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uKCkKK3sKKyAgICByZXR1cm4gbV9pcGNDb25uZWN0aW9uLnB0cigpOworfQorCit1aW50
NjRfdCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJEZXN0aW5h
dGlvbklEKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OmNvbm5lY3Rpb25DbG9zZWQoKQoreworICAgIC8vIEZJWE1FOiBEbyB3aGF0
IGhlcmUuLi4/Cit9CisKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjppbnN0
YWxsU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBk
YXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpJbnN0YWxsU2VydmljZVdvcmtlcihkYXRhKSk7Cit9CisKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpmaXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpGaXJlSW5zdGFsbEV2ZW50KHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKSk7Cit9CisKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaXJl
QWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6RmlyZUFjdGl2YXRlRXZlbnQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjMwYmQ4Mzg0YjJhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIDogcHVibGljIFdl
YkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2FnZVNl
bmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoKTsKKwor
ICAgIElQQzo6Q29ubmVjdGlvbiogaXBjQ29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXBj
Q29ubmVjdGlvbi5wdHIoKTsgfQorCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZp
bmFsOworCitwcml2YXRlOgorICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihSZWY8
SVBDOjpDb25uZWN0aW9uPiYmKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlcgorICAgIElQ
Qzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBmaW5hbDsKKyAgICB1aW50
NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGZpbmFsOworCisgICAgLy8gTWVzc2Fn
ZXMgdG8gdGhlIFNXIGhvc3QgV2ViUHJvY2VzcworICAgIHZvaWQgaW5zdGFsbFNlcnZpY2VXb3Jr
ZXJDb250ZXh0KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpIGZpbmFs
OworICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllcikgZmluYWw7CisgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllcikgZmluYWw7CisgICAgCisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4g
bV9pcGNDb25uZWN0aW9uOworICAgIAorfTsgLy8gY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uOWRjOGMxNjNiNDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworbWVzc2Fn
ZXMgLT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIHsKKyAgICAjIFdoZW4gcG9zc2li
bGUsIHRoZXNlIG1lc3NhZ2VzIGNhbiBiZSBpbXBsZW1lbnRlZCBkaXJlY3RseSBieSBXZWJDb3Jl
OjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24KKworICAgIFNjcmlwdENvbnRleHRGYWlsZWRU
b1N0YXJ0KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cmlu
ZyBtZXNzYWdlKTsKKyAgICBTY3JpcHRDb250ZXh0U3RhcnRlZChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBpZGVudGlmaWVyKTsKKyAgICBEaWRGaW5pc2hJbnN0YWxsKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCk7
CisgICAgRGlkRmluaXNoQWN0aXZhdGlvbihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBpZGVudGlmaWVyKTsKKyAgICBTZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9v
bCBoYXNQZW5kaW5nRXZlbnRzKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAK
aW5kZXggMTllN2QwMGNhNWEuLmVhMTg5YTBjNjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcApAQCAtMzMsMTAgKzMzLDEyIEBACiAjaW5j
bHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViU1dPcmlnaW5TdG9y
ZS5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JREJLZXlE
YXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvU1dTZXJ2ZXJXb3JrZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2lu
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVGV4dEVuY29kaW5nLmg+CkBAIC00NCw2ICs0NiwxMCBAQAogI2lu
Y2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFRhc2suaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorI2luY2x1ZGUgIldlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzksOCArODUsOSBAQCBib29sIFN0b3Jh
Z2VQcm9jZXNzOjpzaG91bGRUZXJtaW5hdGUoKQogdm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlkQ2xv
c2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKLSAgICBpZiAobV93b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPT0gJmNvbm5l
Y3Rpb24pIHsKLSAgICAgICAgbV93b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPSBudWxs
cHRyOworICAgIGlmIChtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gJiYgbV9zZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLT5pcGNDb25uZWN0aW9uKCkgPT0gJmNvbm5lY3Rpb24pIHsKKyAgICAg
ICAgbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2VkKCk7CisgICAg
ICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAjZWxzZQpAQCAtOTgsNiArMTA1LDE0IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6
OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNv
ZGVyCiAgICAgICAgIGRpZFJlY2VpdmVTdG9yYWdlUHJvY2Vzc01lc3NhZ2UoY29ubmVjdGlvbiwg
ZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGlmIChhdXRvKiBzd0Nvbm5l
Y3Rpb24gPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24oKSkgeworICAgICAgICAgICAgYXV0byogd2ViU1dDb25uZWN0aW9uID0gc3Rh
dGljX2Nhc3Q8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4oc3dDb25uZWN0aW9uKTsK
KyAgICAgICAgICAgIHdlYlNXQ29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2Rlcik7CisgICAgICAgICAgICByZXR1cm47ICAgICAgICAKKyAgICAgICAgfQorICAg
IH0KIH0KIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpAQCAtMzUxLDE3ICszNjYsMTcg
QEAgU1dTZXJ2ZXImIFN0b3JhZ2VQcm9jZXNzOjpzd1NlcnZlckZvclNlc3Npb24oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQogICAgIHJldHVybiAqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0K
IAotSVBDOjpDb25uZWN0aW9uKiBTdG9yYWdlUHJvY2Vzczo6d29ya2VyQ29udGV4dFByb2Nlc3ND
b25uZWN0aW9uKCkKK1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogU3RvcmFnZVByb2Nl
c3M6Omdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQogewotICAgIHJldHVybiBtX3dv
cmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbi5nZXQoKTsKKyAgICByZXR1cm4gbV9zZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmdldCgpOwogfQogCi12b2lkIFN0b3JhZ2VQcm9jZXNzOjpjcmVh
dGVXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oKQordm9pZCBTdG9yYWdlUHJvY2Vzczo6
Y3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpCiB7Ci0gICAgaWYgKG1fd2FpdGluZ0Zv
cldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbikKKyAgICBpZiAobV93YWl0aW5nRm9yU2Vy
dmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKICAgICAKLSAg
ICBtX3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPSB0cnVlOworICAg
IG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uID0gdHJ1ZTsKICAg
ICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vz
c1Byb3h5OjpHZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oKSwgMCk7CiB9CiAKQEAg
LTM4Miw4ICszOTcsOCBAQCBXZWJTV09yaWdpblN0b3JlKiBTdG9yYWdlUHJvY2Vzczo6c3dPcmln
aW5TdG9yZUZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbgogCiB2b2lkIFN0b3JhZ2VQ
cm9jZXNzOjpkaWRHZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpBdHRhY2ht
ZW50JiYgZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyKQogewotICAgIEFTU0VSVChtX3dhaXRp
bmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pOwotICAgIG1fd2FpdGluZ0Zvcldv
cmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9IGZhbHNlOworICAgIEFTU0VSVChtX3dhaXRp
bmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbik7CisgICAgbV93YWl0aW5nRm9y
U2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPSBmYWxzZTsKIAogI2lmIFVTRShVTklY
X0RPTUFJTl9TT0NLRVRTKQogICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0
aW9uSWRlbnRpZmllciA9IGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5yZWxlYXNlRmlsZURl
c2NyaXB0b3IoKTsKQEAgLTM5OCwyNSArNDEzLDE0IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRp
ZEdldFdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQmJiBlbmNv
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3dvcmtlckNvbnRleHRQcm9jZXNzQ29u
bmVjdGlvbiA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlQ2xpZW50Q29ubmVjdGlvbihjb25uZWN0
aW9uSWRlbnRpZmllciwgKnRoaXMpOwotICAgIG1fd29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0
aW9uLT5vcGVuKCk7CisgICAgYXV0byBpcGNDb25uZWN0aW9uID0gSVBDOjpDb25uZWN0aW9uOjpj
cmVhdGVDbGllbnRDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCAqdGhpcyk7CisgICAg
aXBjQ29ubmVjdGlvbi0+b3BlbigpOworICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiA9
IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y3JlYXRlKFdURk1vdmUoaXBjQ29ubmVj
dGlvbikpOwogICAgIAogICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fc3RvcmFnZVRvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb25zKQogICAgICAgICBjb25uZWN0aW9uLT53b3JrZXJDb250ZXh0UHJv
Y2Vzc0Nvbm5lY3Rpb25DcmVhdGVkKCk7CiB9CiAKLXZvaWQgU3RvcmFnZVByb2Nlc3M6OnNlcnZp
Y2VXb3JrZXJDb250ZXh0RmFpbGVkVG9TdGFydCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9u
S2V5LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbV9zd1Nl
cnZlckNvbm5lY3Rpb25zLmdldChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpCi0gICAgICAg
IGNvbm5lY3Rpb24tPnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KHJlZ2lzdHJhdGlvbktleSwg
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIG1lc3NhZ2UpOwotfQotCi12b2lkIFN0b3JhZ2VQcm9j
ZXNzOjpzZXJ2aWNlV29ya2VyQ29udGV4dFN0YXJ0ZWQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJh
dGlvbktleSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIp
Ci17Ci0gICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBtX3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0
KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKLSAgICAgICAgY29ubmVjdGlvbi0+c2NyaXB0
Q29udGV4dFN0YXJ0ZWQocmVnaXN0cmF0aW9uS2V5LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7
Ci19Ci0KIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZEZhaWxGZXRjaCh1aW50NjRfdCBzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKQogewogICAgIGlm
IChhdXRvKiBjb25uZWN0aW9uID0gbV9zd1NlcnZlckNvbm5lY3Rpb25zLmdldChzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllcikpCkBAIC00NTMsMjUgKzQ1Nyw2IEBAIHZvaWQgU3RvcmFnZVByb2Nl
c3M6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJD
bGllbnRJCiAgICAgICAgIGNvbm5lY3Rpb24tPnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xp
ZW50KGRlc3RpbmF0aW9uSWRlbnRpZmllci5zY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmll
ciwgbWVzc2FnZSwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2luKTsKIH0KIAotdm9pZCBT
dG9yYWdlUHJvY2Vzczo6ZGlkRmluaXNoU2VydmljZVdvcmtlckluc3RhbGwodWludDY0X3Qgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkmIHJlZ2lzdHJhdGlvbktleSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkKLXsKLSAgICBpZiAoYXV0byogY29ubmVj
dGlvbiA9IG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5nZXQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIpKQotICAgICAgICBjb25uZWN0aW9uLT5kaWRGaW5pc2hJbnN0YWxsKHJlZ2lzdHJhdGlvbktl
eSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHdhc1N1Y2Nlc3NmdWwpOwotfQotCi12b2lkIFN0
b3JhZ2VQcm9jZXNzOjpkaWRGaW5pc2hTZXJ2aWNlV29ya2VyQWN0aXZhdGlvbih1aW50NjRfdCBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSYgcmVnaXN0cmF0aW9uS2V5LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29y
a2VySWRlbnRpZmllcikKLXsKLSAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1fc3dTZXJ2ZXJD
b25uZWN0aW9ucy5nZXQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKQotICAgICAgICBjb25u
ZWN0aW9uLT5kaWRGaW5pc2hBY3RpdmF0aW9uKHJlZ2lzdHJhdGlvbktleSwgc2VydmljZVdvcmtl
cklkZW50aWZpZXIpOwotfQotCi0KLXZvaWQgU3RvcmFnZVByb2Nlc3M6OnNldFNlcnZpY2VXb3Jr
ZXJIYXNQZW5kaW5nRXZlbnRzKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBoYXNQ
ZW5kaW5nRXZlbnRzKQotewotICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbV9zd1NlcnZlckNv
bm5lY3Rpb25zLmdldChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpCi0gICAgICAgIGNvbm5l
Y3Rpb24tPnNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBoYXNQZW5kaW5nRXZlbnRzKTsKLX0KLQogdm9pZCBTdG9yYWdlUHJvY2Vzczo6cmVn
aXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb25uZWN0aW9u
KQogewogICAgIEFTU0VSVCghbV9zd1NlcnZlckNvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rp
b24uaWRlbnRpZmllcigpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1N0b3JhZ2VQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3Jh
Z2VQcm9jZXNzLmgKaW5kZXggZWE1NTAzNDU0YjkuLjk4OWYxMTAwNWI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCkBAIC00Niw2ICs0Niw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlv
bjsKIGNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKK2NsYXNzIFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlOwogc3RydWN0IFN0b3Jh
Z2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogCkBAIC04MCw4ICs4MSwxMCBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBJUEM6OkNvbm5lY3Rp
b24qIHdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbigpOwotICAgIHZvaWQgY3JlYXRlV29y
a2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKCk7CisgICAgLy8gRm9yIG5vdyB3ZSBqdXN0IGhh
dmUgb25lIGdsb2JhbCBjb25uZWN0aW9uIHRvIHNlcnZpY2Ugd29ya2VyIGNvbnRleHQgcHJvY2Vz
c2VzLgorICAgIC8vIFRoaXMgd2lsbCBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4KKyAgICBXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24qIGdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24o
KTsKKyAgICB2b2lkIGNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKIAogICAgIFdl
YlNXT3JpZ2luU3RvcmUmIGVuc3VyZVNXT3JpZ2luU3RvcmVGb3JTZXNzaW9uKFBBTDo6U2Vzc2lv
bklEKTsKICAgICBXZWJTV09yaWdpblN0b3JlKiBzd09yaWdpblN0b3JlRm9yU2Vzc2lvbihQQUw6
OlNlc3Npb25JRCkgY29uc3Q7CkBAIC0xMTksOCArMTIyLDYgQEAgcHJpdmF0ZToKICNlbmRpZgog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGRpZEdldFdvcmtlckNvbnRleHRQ
cm9jZXNzQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQmJiBlbmNvZGVkQ29ubmVjdGlvbklkZW50
aWZpZXIpOwotICAgIHZvaWQgc2VydmljZVdvcmtlckNvbnRleHRGYWlsZWRUb1N0YXJ0KHVpbnQ2
NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgdm9pZCBzZXJ2aWNlV29ya2VyQ29udGV4dFN0YXJ0
ZWQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
Zmllcik7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVGZXRjaERhdGEo
dWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRp
ZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0
aCk7CkBAIC0xMjgsOSArMTI5LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZhaWxGZXRjaCh1
aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlm
aWVyKTsKICAgICB2b2lkIGRpZE5vdEhhbmRsZUZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpOwogCi0gICAgdm9pZCBkaWRG
aW5pc2hTZXJ2aWNlV29ya2VySW5zdGFsbCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpOwotICAgIHZv
aWQgZGlkRmluaXNoU2VydmljZVdvcmtlckFjdGl2YXRpb24odWludDY0X3Qgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgdm9pZCBzZXRTZXJ2
aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgaGFzUGVuZGluZ0V2
ZW50cyk7CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlm
aWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3Jp
Z2luKTsKICNlbmRpZgogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpAQCAtMTU4LDggKzE1
Niw4IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZGlk
Q3JlYXRlV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6QXR0YWNobWVu
dCYpOwogCi0gICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV93b3JrZXJDb250ZXh0UHJvY2Vz
c0Nvbm5lY3Rpb247Ci0gICAgYm9vbCBtX3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nv
bm5lY3Rpb24geyBmYWxzZSB9OworICAgIFJlZlB0cjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24+IG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKKyAgICBib29sIG1fd2FpdGluZ0Zv
clNlcnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uIHsgZmFsc2UgfTsKICAgICBIYXNoTWFw
PFBBTDo6U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1dTZXJ2ZXI+PiBtX3N3
U2VydmVyczsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBXZWJTV1NlcnZlckNvbm5lY3Rpb24qPiBt
X3N3U2VydmVyQ29ubmVjdGlvbnM7CiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgc3RkOjp1
bmlxdWVfcHRyPFdlYlNXT3JpZ2luU3RvcmU+PiBtX3N3T3JpZ2luU3RvcmVzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMu
aW4KaW5kZXggM2I2ZDMzOTM2ZTguLjA1NzQ5MDIzM2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTM4
LDEyICszOCw2IEBAIG1lc3NhZ2VzIC0+IFN0b3JhZ2VQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgRGlkR2V0V29ya2VyQ29udGV4dFByb2Nl
c3NDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFuZGxlKQogCi0gICAgU2Vy
dmljZVdvcmtlckNvbnRleHRGYWlsZWRUb1N0YXJ0KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHJlZ2lzdHJh
dGlvbktleSwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIFN0cmluZyBtZXNzYWdlKQotICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0U3RhcnRl
ZCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleSByZWdpc3RyYXRpb25LZXksIFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQotICAgIERpZEZpbmlzaFNlcnZp
Y2VXb3JrZXJJbnN0YWxsKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlvbktleSwgV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wg
d2FzU3VjY2Vzc2Z1bCk7Ci0gICAgRGlkRmluaXNoU2VydmljZVdvcmtlckFjdGl2YXRpb24odWlu
dDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkgcmVnaXN0cmF0aW9uS2V5LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgU2V0U2VydmljZVdvcmtlckhh
c1BlbmRpbmdFdmVudHModWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29s
IGhhc1BlbmRpbmdFdmVudHMpOwotCiAgICAgRGlkTm90SGFuZGxlRmV0Y2godWludDY0X3Qgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcikKICAgICBE
aWRGYWlsRmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90
IGZldGNoSWRlbnRpZmllcikKICAgICBEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSh1aW50NjRfdCBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmNw
cAppbmRleCA0NTQ1YmM0YTI1Mi4uOWIwOTc3ODUzZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwCkBAIC0zNSw2ICszNSwxMSBAQAogI2luY2x1ZGUgIldlYlNXU2VydmVyQ29ubmVjdGlv
bk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAorI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKKyNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIK
KyNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2Vu
ZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApA
QCAtODUsNiArOTAsMTEgQEAgdm9pZCBTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW8KICAgICAgICAgICAgIGl0
ZXJhdG9yLT52YWx1ZS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJO
YW1lKCkgPT0gTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIFN0b3JhZ2VQcm9jZXNzOjpzaW5nbGV0b24oKS5n
bG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCktPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQogI2VuZGlmCiAKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE0OCwxMCArMTU4LDggQEAgdm9pZCBTdG9yYWdlVG9X
ZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFNlc3Npb25J
RCBzZXNzaW8KIAogICAgIFN0b3JhZ2VQcm9jZXNzOjpzaW5nbGV0b24oKS5yZWdpc3RlclNXU2Vy
dmVyQ29ubmVjdGlvbigqKGNvbm5lY3Rpb25SZXN1bHQuaXRlcmF0b3ItPnZhbHVlKSk7CiAKLSAg
ICBpZiAoYXV0byogY29ubmVjdGlvbiA9IFN0b3JhZ2VQcm9jZXNzOjpzaW5nbGV0b24oKS53b3Jr
ZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oKSkKLSAgICAgICAgY29ubmVjdGlvblJlc3VsdC5p
dGVyYXRvci0+dmFsdWUtPnNldENvbnRleHRDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwotICAgIGVs
c2UKLSAgICAgICAgU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLmNyZWF0ZVdvcmtlckNvbnRl
eHRQcm9jZXNzQ29ubmVjdGlvbigpOworICAgIGlmICghU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRv
bigpLmdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKSkKKyAgICAgICAgU3RvcmFnZVBy
b2Nlc3M6OnNpbmdsZXRvbigpLmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKIH0K
IAogdm9pZCBTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6cmVtb3ZlU1dTZXJ2ZXJDb25u
ZWN0aW9uKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKQpAQCAtMTY1LDExICsx
NzMsOCBAQCB2b2lkIFN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjpyZW1vdmVTV1NlcnZl
ckNvbm5lY3Rpb24odWludDY0X3Qgc2VydmVyQ29ubgogCiB2b2lkIFN0b3JhZ2VUb1dlYlByb2Nl
c3NDb25uZWN0aW9uOjp3b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb25DcmVhdGVkKCkKIHsK
LSAgICBhdXRvKiBpcGNDb25uZWN0aW9uID0gU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLndv
cmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbigpOwotICAgIEFTU0VSVChpcGNDb25uZWN0aW9u
KTsKLQotICAgIGZvciAoYXV0byYgc3dDb25uZWN0aW9uIDogbV9zd0Nvbm5lY3Rpb25zLnZhbHVl
cygpKQotICAgICAgICBzd0Nvbm5lY3Rpb24tPnNldENvbnRleHRDb25uZWN0aW9uKGlwY0Nvbm5l
Y3Rpb24pOworICAgIGZvciAoYXV0byogc2VydmVyIDogU1dTZXJ2ZXI6OmFsbFNlcnZlcnMoKSkK
KyAgICAgICAgc2VydmVyLT5zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uQ3JlYXRlZCgpOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDEzY2ZiN2ZhM2ZhLi4wZTc3OGEwYTBkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDE5LDYgKzEwMTksOCBAQAog
CQk1MTRCREVEMzE2Qzk4RUREMDBFNEUyNUUgLyogU3RhdGlzdGljc1JlcXVlc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEJERUQyMTZDOThFREQw
MEU0RTI1RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5oICovOyB9OwogCQk1MTREOUY1NzE5MTE5RDM1
MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTREOUY1NTE5MTE5RDM1MDAwMDYzQTcgLyogU2Vydmlj
ZXNDb250cm9sbGVyLmggKi87IH07CiAJCTUxNEQ5RjU4MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2
aWNlc0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTREOUY1NjE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLm1t
ICovOyB9OworCQk1MTUyNjJCQzFGQjk1MTVEMDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxNTI2MkJCMUZCOTUxMzEwMDcwRTU3OSAvKiBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oICovOyB9OworCQk1MTUyNjJCRDFGQjk1MTYxMDA3MEU1
NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNTI2MkJBMUZC
OTUxMzEwMDcwRTU3OSAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlUmVj
ZWl2ZXIuY3BwICovOyB9OwogCQk1MTU3OEI4MzEyMDlFQ0VGMDBBMzdDNEEgLyogQVBJRGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1NzhCODIx
MjA5RUNFRjAwQTM3QzRBIC8qIEFQSURhdGEuaCAqLzsgfTsKIAkJNTE1QkUxNzcxRDUzRkU4NzAw
REQ3QzY4IC8qIFdlYkdhbWVwYWRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVCRTE3MzFENTNGRERDMDBERDdDNjggLyogV2ViR2Ft
ZXBhZFByb3ZpZGVyLmNwcCAqLzsgfTsKIAkJNTE1QkUxNzkxRDUzRkU4RjAwREQ3QzY4IC8qIFdl
YkdhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE1QkUxNzQxRDUzRkREQzAwREQ3QzY4IC8qIFdlYkdhbWVwYWRQcm92aWRlci5o
ICovOyB9OwpAQCAtMTA1OCw2ICsxMDYwLDcgQEAKIAkJNTE3REQ1QkUxODBEQTdEMzAwODE2NjBC
IC8qIFN0b3JhZ2VQcm9jZXNzUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE3REQ1QkMxODBEQTdEMzAwODE2NjBCIC8qIFN0b3JhZ2VQcm9j
ZXNzUHJveHkuY3BwICovOyB9OwogCQk1MTdERDVCRjE4MERBN0QzMDA4MTY2MEIgLyogU3RvcmFn
ZVByb2Nlc3NQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE3REQ1QkQxODBEQTdEMzAwODE2NjBCIC8qIFN0b3JhZ2VQcm9jZXNzUHJveHkuaCAq
LzsgfTsKIAkJNTE4M0RERUMxNjMwQkRGQzAwOEJFNUM3IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTA1QjBENDE2MkY3QTdBMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCAq
LzsgfTsKKwkJNTE4NTQzMEUxRkI2ODE2MTAwNDc4Rjk1IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTg1NDMwRDFGQjY4MEZBMDA0NzhGOTUgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcCAqLzsgfTsKIAkJNTE4NzFCNUIxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRl
eHRNZW51LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxODcxQjU5MTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5jcHAgKi87IH07CiAJ
CTUxODcxQjVDMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4NzFCNUExMjdDQjg5RDAwRjc2
MjMyIC8qIFdlYkNvbnRleHRNZW51LmggKi87IH07CiAJCTUxOEFDQUVBMTJBRUU2QkIwMEIwNEI4
MyAvKiBXS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MThBQ0FFOTEyQUVFNkJCMDBCMDRCODMgLyogV0tQcm90ZWN0
aW9uU3BhY2VUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0zMzU5LDYgKzMzNjIsOSBAQAogCQk1MTRCREVEMjE2Qzk4RUREMDBFNEUyNUUg
LyogU3RhdGlzdGljc1JlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3RhdGlzdGljc1JlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0RDlG
NTUxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlc0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTE0RDlGNTYxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJv
bGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNlcnZpY2Vz
Q29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE1MjYyQjkxRkI5
NTAzNTAwNzBFNTc5IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5p
biAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNTI2MkJBMUZCOTUx
MzEwMDcwRTU3OSAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTE1MjYyQkIxRkI5NTEzMTAwNzBFNTc5IC8qIFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxNTc4QjgyMTIwOUVDRUYwMEEzN0M0QSAvKiBBUElEYXRhLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSURhdGEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTE1QkUxNzMxRDUzRkREQzAwREQ3QzY4IC8qIFdlYkdhbWVwYWRQcm92
aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHYW1lcGFk
UHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVCRTE3NDFENTNG
RERDMDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkdhbWVwYWRQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMzM5Niw2ICszNDAyLDggQEAKIAkJNTE3REQ1QkMxODBEQTdEMzAwODE2NjBCIC8q
IFN0b3JhZ2VQcm9jZXNzUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU3RvcmFnZVByb2Nlc3NQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxN0RENUJEMTgwREE3RDMwMDgxNjYwQiAvKiBTdG9yYWdlUHJvY2Vzc1Byb3h5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VQcm9jZXNzUHJveHkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4M0IzOTMxMzc5Rjg1QzAwRTg3NTRFIC8qIFNo
aW0ueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gU2hpbS54Y2NvbmZp
Zzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4NTQzMEMxRkI2ODBGOTAwNDc4Rjk1
IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4NTQzMEQxRkI2ODBGQTAwNDc4Rjk1IC8qIFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MTg3MUI1OTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1l
bnUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29udGV4dE1l
bnUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTg3MUI1QTEyN0NCODlEMDBG
NzYyMzIgLyogV2ViQ29udGV4dE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViQ29udGV4dE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4QUNB
RTkxMkFFRTZCQjAwQjA0QjgzIC8qIFdLUHJvdGVjdGlvblNwYWNlVHlwZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjM4MSw2ICs2Mzg5LDkgQEAKIAkJCQk1MTdBNTMwOTFG
NDc5RTMxMDBEQ0RDMEEgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLywKIAkJCQk1MTdB
NTMwNzFGNDc5RTMxMDBEQ0RDMEEgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggKi8sCiAJCQkJ
NTE3QTUzMDgxRjQ3OUUzMTAwRENEQzBBIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbiAqLywKKwkJCQk1MTg1NDMwRDFGQjY4MEZBMDA0NzhGOTUgLyogV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk1MTg1NDMwQzFGQjY4MEY5MDA0NzhGOTUgLyog
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi8sCisJCQkJNTE1MjYyQjkxRkI5NTAz
NTAwNzBFNTc5IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAq
LywKIAkJCSk7CiAJCQlwYXRoID0gU2VydmljZVdvcmtlcjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CkBAIC04MjAwLDYgKzgyMTEsOCBAQAogCQkJCTQ2MEY0ODhFMUY5OTZGNkMwMENGNEI4
NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi8sCiAJCQkJNTE3
QTUyRDcxRjQzQTlCNjAwRENEQzBBIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNl
aXZlci5jcHAgKi8sCiAJCQkJNTE3QTUyRDYxRjQzQTlCNjAwRENEQzBBIC8qIFdlYlNXU2VydmVy
Q29ubmVjdGlvbk1lc3NhZ2VzLmggKi8sCisJCQkJNTE1MjYyQkExRkI5NTEzMTAwNzBFNTc5IC8q
IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJ
CQkJNTE1MjYyQkIxRkI5NTEzMTAwNzBFNTc5IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbk1lc3NhZ2VzLmggKi8sCiAJCQkJMUFBRjA4QjUxOTI2OUU2RDAwQjYzOTBDIC8qIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMUFBRjA4QjYx
OTI2OUU2RDAwQjYzOTBDIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlck1lc3NhZ2VzLmggKi8s
CiAJCQkJN0MzNjFENzYxOTI4MDNCRDAwMzZBNTlEIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTkwNTksNiArOTA3Miw3IEBACiAJCQkJ
QkM3QjYyNTIxMkE0M0M5NjAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cERhdGEuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDN0I2MjE1MTJBNDIxOUEwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXBQcm94eS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ5RUEzMEYxQTk2Q0JGRjAwMkQyODA3IC8qIFdlYlBhZ2VJ
bmplY3RlZEJ1bmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE1MjYyQkMxRkI5NTE1
RDAwNzBFNTc5IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDMENFNzJBMTEyNDdFNzFEMDBCQzBFQzQgLyogV2ViUGFnZU1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDVDOUQwNjE5QzgxRDhGMDBCM0M1QzEgLyogV2Vi
UGFnZU92ZXJsYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDMyREQxMTBGNDM4OUYwMDU4QzE1
QSAvKiBXZWJQYWdlUHJveHkuaCBpbiBIZWFkZXJzICovLApAQCAtMTA4NTgsNiArMTA4NzIsNyBA
QAogCQkJCTlGQjVGMzk0MTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzMwOTM0NUExMzE1Qjk5ODAwOTdBN0JDIC8qIFdLQ29va2ll
TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUZCNjgyNTFGNkU1MTgyMDBDNDNGOUYg
LyogV0tDcmFzaFJlcG9ydGVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTE1MjYyQkQxRkI5NTE2
MTAwNzBFNTc5IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTJGNThGOTEyQTg4QTU0MDA2Mjk1MzAgLyogV0tD
cmVkZW50aWFsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNDA3NUY3MTI0RkYwMjcwMDY4RjIw
QSAvKiBXS0RhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFGRjQ5MDAxODMzREU3ODAwOUFC
MTVBIC8qIFdLRGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEwOTI2
LDYgKzEwOTQxLDcgQEAKIAkJCQkzN0M0QzA5MzE4MTRCM0FGMDAzNjg4QjkgLyogV0tOU0FycmF5
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzczQ0VBRDUxODU0MTdBRTAwOEMzNjNEIC8qIFdLTlNE
YXRhLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzcxQTE5NDExODI0RDI5MzAwRjMyQTVFIC8qIFdL
TlNEaWN0aW9uYXJ5Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4NTQzMEUxRkI2ODE2MTAwNDc4
Rjk1IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkzNzJDQUYwQzE4MzNGRDkxMDA0MEFDMjcgLyogV0tOU0Vycm9yLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMzc1RTBFMTMxRDY2NDMyNzAwRUZFQzJDIC8qIFdLTlNOdW1iZXIubW0gaW4gU291
cmNlcyAqLywKIAkJCQkzNzhFMUE0OTE4MjA4Q0Q2MDAzMTAwN0EgLyogV0tOU1N0cmluZy5tbSBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IGVk
YjI0NTQ3Mzk5Li5kZmRjNjJmODZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzS2V5cy5oIgog
I2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgi
CisjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2Vi
U29ja2V0UHJvdmlkZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvckNsaWVudC5oPgpAQCAt
OTUsOCArOTYsMTAgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6dXBkYXRl
UHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYKICAgICBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldEZldGNoQVBJRW5hYmxlZChzdG9yZS5nZXRC
b29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmZldGNoQVBJRW5hYmxlZEtleSgpKSk7
CiB9CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNl
V29ya2VyKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEmIGRhdGEpCit2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjppbnN0YWxsU2VydmljZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEm
IGRhdGEpCiB7CisgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIgZm9yIHdvcmtlciAlcyIsIGRhdGEuc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCiAgICAg
Ly8gRklYTUU6IFByb3ZpZGUgYSBzZW5zaWNhbCBzZXNzaW9uIElELgogICAgIGF1dG8gc2Vzc2lv
bklEID0gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKIApAQCAtMTEzLDcgKzEx
Niw3IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNl
V29ya2VyKHVpbnQ2NF90IHNlcnZlckNvbm5lY3RpCiAgICAgYXV0byBmcmFtZUxvYWRlckNsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50PihzZXNz
aW9uSUQsIG1fcGFnZUlELCArK21fcHJldmlvdXNTZXJ2aWNlV29ya2VySUQpOwogICAgIHBhZ2VD
b25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSA9IGZyYW1lTG9hZGVyQ2xpZW50
LnJlbGVhc2UoKTsKIAotICAgIGF1dG8gc2VydmljZVdvcmtlclRocmVhZFByb3h5ID0gU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5OjpjcmVhdGUoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbiksIHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBkYXRhLCBzZXNzaW9uSUQsIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmNhY2hlU3RvcmFnZVByb3ZpZGVyKCkpOworICAgIGF1dG8gc2VydmljZVdvcmtl
clRocmVhZFByb3h5ID0gU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpjcmVhdGUoV1RGTW92ZShw
YWdlQ29uZmlndXJhdGlvbiksIGRhdGEsIHNlc3Npb25JRCwgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuY2FjaGVTdG9yYWdlUHJvdmlkZXIoKSk7CiAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkucmVnaXN0ZXJTZXJ2aWNlV29ya2VyVGhyZWFkRm9ySW5zdGFsbChXVEZNb3ZlKHNlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eSkpOwogCiAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJDb250ZXh0
IHByb2Nlc3MgUElEOiAlaSBjcmVhdGVkIHdvcmtlciB0aHJlYWRcbiIsIGdldHBpZCgpKTsKQEAg
LTEyMSwxNSArMTI0LDEwIEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Omlu
c3RhbGxTZXJ2aWNlV29ya2VyKHVpbnQ2NF90IHNlcnZlckNvbm5lY3RpCiAKIHZvaWQgV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnNlcnZpY2VXb3JrZXJTdGFydGVkV2l0aE1lc3NhZ2Uo
U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgZXhjZXB0aW9uTWVzc2FnZSkKIHsKLSAgICBhdXRvKiB0aHJlYWRQcm94eSA9IFNXQ29u
dGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShzZXJ2aWNl
V29ya2VySWRlbnRpZmllcik7Ci0gICAgQVNTRVJUKHRocmVhZFByb3h5KTsKLSAgICAKLSAgICBh
dXRvJiBkYXRhID0gdGhyZWFkUHJveHktPnRocmVhZCgpLmNvbnRleHREYXRhKCk7Ci0gICAgCiAg
ICAgaWYgKGV4Y2VwdGlvbk1lc3NhZ2UuaXNFbXB0eSgpKQotICAgICAgICBtX2Nvbm5lY3Rpb25U
b1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6U2VydmljZVdv
cmtlckNvbnRleHRTdGFydGVkKHRocmVhZFByb3h5LT50aHJlYWQoKS5zZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllcigpLCBkYXRhLnJlZ2lzdHJhdGlvbktleSwgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIpLCAwKTsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTY3JpcHRDb250ZXh0U3RhcnRl
ZChzZXJ2aWNlV29ya2VySWRlbnRpZmllciksIDApOwogICAgIGVsc2UKLSAgICAgICAgbV9jb25u
ZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OlNl
cnZpY2VXb3JrZXJDb250ZXh0RmFpbGVkVG9TdGFydCh0aHJlYWRQcm94eS0+dGhyZWFkKCkuc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSwgZGF0YS5yZWdpc3RyYXRpb25LZXksIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBleGNlcHRpb25NZXNzYWdlKSwgMCk7CisgICAgICAgIG1fY29ubmVj
dGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6U2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGV4Y2VwdGlvbk1lc3NhZ2UpLCAwKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucykKQEAgLTE0OSwxNSArMTQ3LDEzIEBAIHZv
aWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUoU2VydmljCiAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCku
cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShkZXN0aW5hdGlvbklkZW50aWZp
ZXIsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQobWVzc2FnZS52ZWN0b3IoKSksIHNvdXJj
ZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbik7CiB9CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OmZpcmVJbnN0YWxsRXZlbnQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCit2b2lkIFdlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpmaXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyKTsKICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5maXJlSW5z
dGFsbEV2ZW50KGlkZW50aWZpZXIpOwogfQogCi12b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpmaXJlQWN0aXZhdGVFdmVudCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyKTsKICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5maXJlQWN0aXZh
dGVFdmVudChpZGVudGlmaWVyKTsKIH0KIApAQCAtMTY4LDI4ICsxNjQsMTcgQEAgdm9pZCBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGll
bnQoY29uc3QgU2VydmkKIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlk
RmluaXNoSW5zdGFsbChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKQogewotICAgIGF1dG8qIHRocmVhZFByb3h5ID0gU1dD
b250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlclRocmVhZFByb3h5KHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICBBU1NFUlQodGhyZWFkUHJveHkpOwotCi0gICAgYXV0
byYgZGF0YSA9IHRocmVhZFByb3h5LT50aHJlYWQoKS5jb250ZXh0RGF0YSgpOwotICAgIG1fY29u
bmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpE
aWRGaW5pc2hTZXJ2aWNlV29ya2VySW5zdGFsbCh0aHJlYWRQcm94eS0+dGhyZWFkKCkuc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIoKSwgZGF0YS5yZWdpc3RyYXRpb25LZXksIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCB3YXNTdWNjZXNzZnVsKSwgMCk7CisgICAgbV9jb25uZWN0aW9uVG9TdG9y
YWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjpEaWRGaW5pc2hJbnN0YWxsKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCB3YXNTdWNjZXNzZnVs
KSwgMCk7CiB9CiAKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmRpZEZpbmlz
aEFjdGl2YXRpb24oU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIpCiB7Ci0gICAgYXV0byogdGhyZWFkUHJveHkgPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0
b24oKS5zZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwot
ICAgIEFTU0VSVCh0aHJlYWRQcm94eSk7Ci0KLSAgICBhdXRvJiBkYXRhID0gdGhyZWFkUHJveHkt
PnRocmVhZCgpLmNvbnRleHREYXRhKCk7Ci0gICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkRpZEZpbmlzaFNlcnZpY2VXb3JrZXJB
Y3RpdmF0aW9uKHRocmVhZFByb3h5LT50aHJlYWQoKS5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
cigpLCBkYXRhLnJlZ2lzdHJhdGlvbktleSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIpLCAwKTsK
KyAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OkRpZEZpbmlzaEFjdGl2YXRpb24oc2VydmljZVdvcmtl
cklkZW50aWZpZXIpLCAwKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6c2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHMoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgaGFzUGVuZGluZ0V2ZW50cykKIHsKLSAg
ICBhdXRvKiB0aHJlYWRQcm94eSA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eShzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgQVNTRVJU
KHRocmVhZFByb3h5KTsKLQotICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpTZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50
cyh0aHJlYWRQcm94eS0+dGhyZWFkKCkuc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSwgc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIGhhc1BlbmRpbmdFdmVudHMpLCAwKTsKKyAgICBtX2Nvbm5l
Y3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OlNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBoYXNQZW5kaW5nRXZlbnRzKSwgMCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCmluZGV4IDhkYTZhNWQ2ZWFk
Li5mYTJhYzgzOTJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC01OCwx
MSArNTgsMTEgQEAgcHJpdmF0ZToKIAogICAgIC8vIElQQyBtZXNzYWdlcy4KICAgICB2b2lkIHNl
cnZpY2VXb3JrZXJTdGFydGVkV2l0aE1lc3NhZ2UoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgZXhjZXB0aW9uTWVzc2FnZSkgZmluYWw7Ci0gICAgdm9pZCBp
bnN0YWxsU2VydmljZVdvcmtlcih1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJik7CisgICAgdm9pZCBpbnN0
YWxsU2VydmljZVdvcmtlcihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEm
KTsKICAgICB2b2lkIHN0YXJ0RmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllcj4sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3Jl
OjpGZXRjaE9wdGlvbnMmJik7CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckds
b2JhbFNjb3BlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRl
bnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBjb25zdCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgc291cmNlSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VPcmlnaW4pOwotICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudCh1aW50NjRf
dCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIpOwotICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQodWludDY0X3Qgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICB2
b2lkIGZpcmVJbnN0YWxsRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwor
ICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIpOwogCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJv
Y2VzczsKICAgICB1aW50NjRfdCBtX3BhZ2VJRCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggNWQyNTU1YWRjYzkuLjE0OThkMjcy
MTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5p
bgpAQCAtMjMsMTEgKzIzLDExIEBACiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCiBtZXNz
YWdlcyAtPiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiB7Ci0gICAgSW5zdGFsbFNlcnZp
Y2VXb3JrZXIodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgY29udGV4dERhdGEpCisgICAgSW5zdGFsbFNl
cnZpY2VXb3JrZXIoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBjb250
ZXh0RGF0YSkKICAgICBTdGFydEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyBvcHRp
b25zKQogICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBJUEM6OkRhdGFS
ZWZlcmVuY2UgbWVzc2FnZSwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0cmluZyBzb3VyY2VPcmlnaW4pCi0gICAgRmlyZUlu
c3RhbGxFdmVudCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKLSAgICBGaXJlQWN0aXZhdGVFdmVu
dCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBGaXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgRmlyZUFjdGl2YXRlRXZl
bnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIH0KIAogI2Vu
ZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326809</attachid>
            <date>2017-11-13 15:00:28 -0800</date>
            <delta_ts>2017-11-13 16:28:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>116149</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggMGRhYmI3MzJhM2IuLjZhOGNjMzQyYTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3
LTExLTEzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNYXNz
aXZlICJTZXJ2ZXItcHJvY2Vzcy10by1jb250ZXh0LXByb2Nlc3MiIGNvbm5lY3Rpb24gb3Zlcmhh
dWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk1
NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0
Zi9PYmplY3RJZGVudGlmaWVyLmg6CisgICAgICAgIChXVEY6OmdlbmVyYXRlT2JqZWN0SWRlbnRp
Zmllcik6CisgICAgICAgIChXVEY6Om1ha2VPYmplY3RJZGVudGlmaWVyKTogRGVsZXRlZC4KKwog
MjAxNy0xMS0xMyAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CiAKICAgICAgICAg
c3RkOjpleHBlY3RlZDogZml4IGFuZCB0ZXN0IG1vdmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL09iamVjdElkZW50aWZpZXIuaCBiL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIu
aAppbmRleCBlZjM3MTU0YTMxZS4uNjdkZWUwMjZiNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL09iamVjdElkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PYmplY3RJZGVudGlm
aWVyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVT4gZnJpZW5kIE9iamVjdElkZW50aWZpZXI8VT4gbWFrZU9iamVj
dElkZW50aWZpZXIodWludDY0X3QpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGZyaWVuZCBP
YmplY3RJZGVudGlmaWVyPFU+IGdlbmVyYXRlT2JqZWN0SWRlbnRpZmllcigpOwogICAgIGZyaWVu
ZCBzdHJ1Y3QgSGFzaFRyYWl0czxPYmplY3RJZGVudGlmaWVyPjsKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVPiBmcmllbmQgc3RydWN0IE9iamVjdElkZW50aWZpZXJIYXNoOwogCkBAIC04MywxMiAr
ODMsMTQgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB1aW50NjRfdCBtX2lkZW50aWZpZXIgeyAw
IH07CisgICAgc3RhdGljIHVpbnQ2NF90IHNfY3VycmVudElkZW50aWZpZXI7CiB9OwogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgT2JqZWN0SWRlbnRpZmllcjxUPiBtYWtlT2JqZWN0SWRl
bnRpZmllcih1aW50NjRfdCBpZGVudGlmaWVyKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gdWludDY0
X3QgT2JqZWN0SWRlbnRpZmllcjxUPjo6c19jdXJyZW50SWRlbnRpZmllcjsKKwordGVtcGxhdGU8
dHlwZW5hbWUgVD4gaW5saW5lIE9iamVjdElkZW50aWZpZXI8VD4gZ2VuZXJhdGVPYmplY3RJZGVu
dGlmaWVyKCkKIHsKLSAgICBBU1NFUlQoT2JqZWN0SWRlbnRpZmllcjxUPjo6aXNWYWxpZElkZW50
aWZpZXIoaWRlbnRpZmllcikpOwotICAgIHJldHVybiBPYmplY3RJZGVudGlmaWVyPFQ+IHsgaWRl
bnRpZmllciB9OworICAgIHJldHVybiBPYmplY3RJZGVudGlmaWVyPFQ+IHsgKytPYmplY3RJZGVu
dGlmaWVyPFQ+OjpzX2N1cnJlbnRJZGVudGlmaWVyIH07CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBPYmplY3RJZGVudGlmaWVySGFzaCB7CkBAIC0xMDYsNCArMTA4LDQgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoPE9iamVjdElkZW50aWZpZXI8VD4+
IHsKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6Ok9iamVjdElkZW50aWZpZXI7Ci11
c2luZyBXVEY6Om1ha2VPYmplY3RJZGVudGlmaWVyOwordXNpbmcgV1RGOjpnZW5lcmF0ZU9iamVj
dElkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjQ0ZjBhOWQ2NDcuLmNmOGZiMmU2YTQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTE3IEBACisyMDE3LTExLTEzICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBNYXNzaXZlICJTZXJ2ZXItcHJvY2Vzcy10by1jb250
ZXh0LXByb2Nlc3MiIGNvbm5lY3Rpb24gb3ZlcmhhdWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk1NTQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKFJlZmFjdG9yLCBubyBiZWhh
dmlvciBjaGFuZ2UpLgorCisgICAgICAgIEhhdmluZyB0aGUgU1dTZXJ2ZXI6OkNvbm5lY3Rpb24g
b2JqZWN0IGJlIG92ZXJsb2FkZWQgdG8gbWVhbiBib3RoIGNsaWVudC0+c2VydmVyIGFuZCBzZXJ2
ZXItPmNvbnRleHQgCisgICAgICAgIHdhcyB0aGUgd3JvbmcgZGVzaWduIGFuZCB3YXMgc3RhcnRp
bmcgdG8gY3J1bWJsZSB1bmRlciBpdHMgb3duIHdlaWdodC4KKworICAgICAgICBTbyB0aGlzIHBh
dGNoIGludHJvZHVjZXMgYSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gdG8gbWFuYWdlIHRo
ZSBTdG9yYWdlUHJvY2Vzcy1zaWRlIG9mIGNvbm5lY3Rpb25zCisgICAgICAgIHRvIGNvbnRleHQg
cHJvY2Vzc2VzLgorCisgICAgICAgIEFueSBtZXNzYWdlIHRoYXQgaXMgc3BlY2lmaWNhbGx5IGFi
b3V0IHRoZSBjb25uZWN0aW9uIGJldHdlZW4gdGhlIFN0b3JhZ2VQcm9jZXNzIGFuZCBjb250ZXh0
IHByb2Nlc3MKKyAgICAgICAgc2hvdWxkIHVzZSB0aGlzIGNvbm5lY3Rpb24gZ29pbmcgZm9yd2Fy
ZC4KKworICAgICAgICBSaWdodCBub3cgdGhlcmUgaXMgb25seSBvbmUgY29udGV4dCBwcm9jZXNz
LCBidXQgdGhpcyBkZXNpZ24ga2VlcHMgdXMgcmVhZHkgZm9yIHRoYXQgdG8gY2hhbmdlLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBnZXRzIHJpZCBvZiBhIGxvdCBvZiAic2VydmVyIGNvbm5l
Y3Rpb24gaWRlbnRpZmllciIgaW50ZWdlcnMgYmVpbmcgcGFzc2VkIGFtb25nc3QgcHJvY2Vzc2Vz
CisgICAgICAgIHRoYXQgd2VyZSBhY3R1YWxseSBwb2ludGxlc3MuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBpcyBhbHNvIGEgcHJlcmVxdWlzaXRlIGZvciBtYW55IHRoaW5ncyB0aGF0IGFyZSBjb21p
bmcgdXAgc29vbiwgc3VjaCBhcyB0ZXJtaW5hdGlvbi4KKworICAgICAgICAqIFNvdXJjZXMudHh0
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjppc29sYXRlZENvcHkgY29uc3Qp
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVjb2RlKToK
KworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZTo6c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgorCisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJUeXBlcy5oOgorCisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OmNyZWF0ZVdvcmtlckdsb2JhbFNjb3Bl
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpjcmVhdGUpOiBEZWxl
dGVkLgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eS5oOgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpnZW5lcmF0ZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp+U1dTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U1dTZXJ2ZXI6OlNXU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzY3Jp
cHRDb250ZXh0RmFpbGVkVG9TdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c2Ny
aXB0Q29udGV4dFN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmRpZEZpbmlz
aEluc3RhbGwpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmRpZEZpbmlzaEFjdGl2YXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmRpZFJlc29sdmVSZWdpc3RyYXRpb25Q
cm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1cGRhdGVXb3JrZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjppbnN0YWxsQ29udGV4dERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmZpcmVJbnN0YWxsRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U1dTZXJ2ZXI6OmZpcmVBY3RpdmF0ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNX
U2VydmVyOjpDb25uZWN0aW9uOjpkaWRGaW5pc2hJbnN0YWxsKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNXU2VydmVyOjpDb25uZWN0aW9uOjpkaWRGaW5pc2hBY3RpdmF0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpDb25uZWN0aW9uOjpzZXRTZXJ2aWNl
V29ya2VySGFzUGVuZGluZ0V2ZW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTV1Nl
cnZlcjo6Q29ubmVjdGlvbjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OkNvbm5lY3Rpb246OnNjcmlwdENvbnRleHRTdGFy
dGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzZXRTZXJ2aWNlV29y
a2VySGFzUGVuZGluZ0V2ZW50cyk6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5oOgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlckpvYlF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6
OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVy
Sm9iUXVldWU6OnNjcmlwdENvbnRleHRTdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2Vy
dmVySm9iUXVldWU6Omluc3RhbGwpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1
ZTo6ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6U1dT
ZXJ2ZXJKb2JRdWV1ZTo6ZGlkRmluaXNoSW5zdGFsbCk6CisgICAgICAgIChXZWJDb3JlOjpTV1Nl
cnZlckpvYlF1ZXVlOjp0cnlBY3RpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpv
YlF1ZXVlOjphY3RpdmF0ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlckpvYlF1ZXVlLmg6CisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyUmVnaXN0cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmdlbmVyYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjp+U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvcklkZW50aWZpZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpnbG9iYWxT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQpOgorICAgICAgICAo
V2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzY3JpcHRDb250ZXh0U3RhcnRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZEZp
bmlzaEluc3RhbGwpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjpkaWRGaW5pc2hBY3RpdmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6c2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHMpOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6aWRlbnRpZmllciBjb25zdCk6CisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2Vy
OjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2
ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29y
a2VyOjp+U1dTZXJ2ZXJXb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6
OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVy
V29ya2VyOjpzY3JpcHRDb250ZXh0U3RhcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZl
cldvcmtlcjo6ZGlkRmluaXNoSW5zdGFsbCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldv
cmtlcjo6ZGlkRmluaXNoQWN0aXZhdGlvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlcldvcmtlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6cmVnaXN0cmF0aW9u
S2V5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpjb250ZXh0Q29u
bmVjdGlvbklkZW50aWZpZXIgY29uc3QpOgorCiAyMDE3LTExLTEzICBBbnR0aSBLb2l2aXN0byAg
PGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBlbGltaW5hdGUgd2hpdGVzcGFjZSBy
ZW5kZXJlciBpZiB0aGUgcHJldmlvdXMgc2libGluZyBpcyBhIHRleHQgcmVuZGVyZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKaW5kZXggMjM5ZDY5OWU2MDUuLjY3NDk3ZjQxYTFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAt
MjE5MSw2ICsyMTkxLDcgQEAgd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rp
b24uY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKK3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldv
cmtlci5jcHAKIAogeG1sL0RPTVBhcnNlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiZGViMDQwYmJiZi4uNzBmZmYxOTFi
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTEzNTQsNiArMTM1NCw3IEBACiAJCTUxODJDMjU4MUYzMTQzQ0QwMDU5QkE3QyAv
KiBKU1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxODJDMjU0MUYzMTQyNTAwMDU5QkE3QyAvKiBKU1NlcnZpY2VX
b3JrZXJDb250YWluZXIuaCAqLzsgfTsKIAkJNTE4MkMyNUExRjMxNDNDRDAwNTlCQTdDIC8qIEpT
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTgyQzI0RDFGMzE0MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUuaCAqLzsgfTsKIAkJNTE4MkMyNUMxRjMxNDNDRDAwNTlCQTdDIC8qIEpT
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE4MkMyNTAxRjMxNDI1MDAwNTlCQTdDIC8qIEpTU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbi5oICovOyB9OworCQk1MTg1NDMwQjFGQjY3ODQ1MDA0NzhGOTUgLyog
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg1NDMwOTFGQjY3ODNFMDA0NzhGOTUgLyogU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTE4NUZDNzUxQkI0QzRFODAwMTI4OThGIC8qIERPTVdpbmRvd0luZGV4
ZWREYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFENzE5NkQxODExMDZERjAwMTZEQzUxIC8qIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5o
ICovOyB9OwogCQk1MTg1RkM3QjFCQjRDNEU4MDAxMjg5OEYgLyogSURCQ3Vyc29yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTY0NUI0MTFCOUY4ODlC
MDBGNzg5Q0UgLyogSURCQ3Vyc29yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNTE4NUZDN0UxQkI0QzRFODAwMTI4OThGIC8qIElEQkN1cnNvcldp
dGhWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE2NDVCNDMxQjlGODg5QjAwRjc4OUNFIC8qIElEQkN1cnNvcldpdGhWYWx1ZS5oICovOyB9OwpA
QCAtMTQyNSw3ICsxNDI2LDcgQEAKIAkJNTFFNjgyMTAxNjM4NzMwMjAwM0JCRjNDIC8qIExvYWRl
clN0cmF0ZWd5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUU2ODIwRjE2Mzg3MzAyMDAzQkJGM0MgLyogTG9hZGVyU3RyYXRlZ3kuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUVFN0IzODFBQTUwQjA1
MDBGOTJCMjEgLyogUmVzb3VyY2VMb2FkSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFRTdCMzcxQUE1MEIwNTAwRjkyQjIxIC8qIFJlc291cmNl
TG9hZEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MUVFQUE3NDFCRUZGQUIxMDAyMTgwMDggLyogSW5kZXhWYWx1ZUVudHJ5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVFQUE3MjFCRUZGQTc5
MDAyMTgwMDggLyogSW5kZXhWYWx1ZUVudHJ5LmggKi87IH07Ci0JCTUxRjE3NEZFMUYzNTg5OTIw
MEM3NDk1MCAvKiBXb3JrZXJUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUYxNzRGQzFGMzU4OTg4MDBDNzQ5NTAgLyogV29ya2VyVHlwZS5oICov
OyB9OworCQk1MUYxNzRGRTFGMzU4OTkyMDBDNzQ5NTAgLyogV29ya2VyVHlwZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMTc0RkMxRjM1ODk4ODAw
Qzc0OTUwIC8qIFdvcmtlclR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MUYxNzUwMzFGMzU4QjNCMDBDNzQ5NTAgLyogSlNTZXJ2aWNlV29y
a2VyVXBkYXRlVmlhQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxRjE3NTAxMUYzNThCMzYwMEM3NDk1MCAvKiBKU1NlcnZpY2VXb3JrZXJVcGRh
dGVWaWFDYWNoZS5oICovOyB9OwogCQk1MUYxNzUwNjFGMzU4QkY3MDBDNzQ5NTAgLyogSlNXb3Jr
ZXJUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUYxNzUwNTFGMzU4QkRFMDBDNzQ5NTAgLyogSlNXb3JrZXJUeXBlLmggKi87IH07CiAJCTUxRjE3
NTVEMUYzRUJDODMwMEM3NDk1MCAvKiBTZXJ2aWNlV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYxNzU1QTFGM0VCQzBDMDBDNzQ5NTAgLyog
U2VydmljZVdvcmtlci5oICovOyB9OwpAQCAtNzcwNiw2ICs3NzA3LDggQEAKIAkJNTE4MkMyNTIx
RjMxNDI1MDAwNTlCQTdDIC8qIEpTU2VydmljZVdvcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Nl
cnZpY2VXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4MkMyNTMxRjMx
NDI1MDAwNTlCQTdDIC8qIEpTU2VydmljZVdvcmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1NlcnZpY2VXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTgyQzI1
NDFGMzE0MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTU2VydmljZVdvcmtlckNvbnRhaW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MTg1NDMwOTFGQjY3ODNFMDA0NzhGOTUgLyogU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTg1NDMwQTFG
QjY3ODNGMDA0NzhGOTUgLyogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODVGQ0JDMUJCNUNCNzcwMDEy
ODk4RiAvKiBJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTE4NUZDQkQxQkI1Q0I3NzAwMTI4OThGIC8qIElEQkNvbm5lY3Rpb25U
b1NlcnZlckRlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQkNv
bm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxODg2NERFMUJCQUYzMEYwMEU1NDBDOSAvKiBVbmlxdWVJREJEYXRhYmFzZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmlxdWVJREJEYXRhYmFzZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzEzMSw2ICsxNzEzNCw4IEBACiAJCQkJODMx
MUMwMDIxRkFBMkU4OTAwRTNDOEU1IC8qIFNXU2VydmVySm9iUXVldWUuaCAqLywKIAkJCQk1MUY2
NDU5NTFGNEE2ODYxMDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwICovLAogCQkJ
CTUxRjY0NTk0MUY0QTY4NEYwMEI1NERFRCAvKiBTV1NlcnZlclJlZ2lzdHJhdGlvbi5oICovLAor
CQkJCTUxODU0MzBBMUZCNjc4M0YwMDQ3OEY5NSAvKiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uY3BwICovLAorCQkJCTUxODU0MzA5MUZCNjc4M0UwMDQ3OEY5NSAvKiBTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaCAqLywKIAkJCQk1MTdBNTM0MzFGNTBDMTYxMDBEQ0RDMEEgLyogU1dT
ZXJ2ZXJXb3JrZXIuY3BwICovLAogCQkJCTUxN0E1MzQyMUY1MEMxNjEwMERDREMwQSAvKiBTV1Nl
cnZlcldvcmtlci5oICovLAogCQkJKTsKQEAgLTI3NDE1LDYgKzI3NDIwLDcgQEAKIAkJCQk3QzhF
MzRCOTFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252ZXJ0SlNPTi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJN0M4RTM0QkExRTRBMzNCMDAwNTRDRTIzIC8qIEpTRE9NQ29udmVydE51bGwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTdDOEUzNEJCMUU0QTMzQjAwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRO
dWxsYWJsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4NTQzMEIxRkI2Nzg0NTAwNDc4Rjk1IC8q
IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4RTM0
QkQxRTRBMzNCMDAwNTRDRTIzIC8qIEpTRE9NQ29udmVydE51bWJlcnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTdDOEUzNEJFMUU0QTMzQjAwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRPYmplY3QuaCBp
biBIZWFkZXJzICovLAogCQkJCUUzMjNDRkZBMUU1QUY2QUYwMEYwQjRBMCAvKiBKU0RPTUNvbnZl
cnRQcm9taXNlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKaW5kZXggNGQz
MzUwMWM2ZGEuLmYwZWM3NjZlMzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcApAQCAtMzIsNyAr
MzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIHsgcmVnaXN0cmF0aW9uS2V5Lmlzb2xhdGVkQ29weSgpLCBzZXJ2aWNlV29ya2VySWRlbnRp
Zmllciwgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLCBzY3JpcHRVUkwuaXNvbGF0ZWRDb3B5KCkgfTsK
KyAgICByZXR1cm4geyByZWdpc3RyYXRpb25LZXkuaXNvbGF0ZWRDb3B5KCksIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBzY3JpcHQuaXNvbGF0ZWRDb3B5KCksIHNjcmlwdFVSTC5pc29sYXRlZENv
cHkoKSwgd29ya2VyVHlwZSB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHRE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRl
eHREYXRhLmgKaW5kZXggMDhjMzFiYzk1NDAuLjdhMGI0NDNjYjMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlcklkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgiCiAjaW5jbHVkZSAi
VVJMLmgiCisjaW5jbHVkZSAiV29ya2VyVHlwZS5oIgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQogCkBAIC0zOCw2ICszOSw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEg
ewogICAgIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOwog
ICAgIFN0cmluZyBzY3JpcHQ7CiAgICAgVVJMIHNjcmlwdFVSTDsKKyAgICBXb3JrZXJUeXBlIHdv
cmtlclR5cGU7CiAgICAgCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gZGVjb2RlKERlY29kZXImKTsKQEAg
LTQ5LDYgKzUxLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNv
ZGVyIDw8IHJlZ2lzdHJhdGlvbktleSA8PCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA8PCBzY3Jp
cHQgPDwgc2NyaXB0VVJMOworICAgIGVuY29kZXIuZW5jb2RlRW51bSh3b3JrZXJUeXBlKTsKIH0K
IAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTY5LDggKzcyLDEyIEBAIHN0ZDo6b3B0aW9u
YWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRl
Y29kZShEZWNvZGVyCiAgICAgVVJMIHNjcmlwdFVSTDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHNjcmlwdFVSTCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4g
e3sgV1RGTW92ZSgqcmVnaXN0cmF0aW9uS2V5KSwgV1RGTW92ZSgqc2VydmljZVdvcmtlcklkZW50
aWZpZXIpLCBXVEZNb3ZlKHNjcmlwdCksIFdURk1vdmUoc2NyaXB0VVJMKSB9fTsKKyAgICAKKyAg
ICBXb3JrZXJUeXBlIHdvcmtlclR5cGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0od29y
a2VyVHlwZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAgcmV0dXJu
IHt7IFdURk1vdmUoKnJlZ2lzdHJhdGlvbktleSksIFdURk1vdmUoKnNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKSwgV1RGTW92ZShzY3JpcHQpLCBXVEZNb3ZlKHNjcmlwdFVSTCksIHdvcmtlclR5cGUg
fX07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5k
ZXggNGJmMTlkODViMjIuLjNhMjBiM2E5ZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAt
MzMsOSArMzMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZTo6U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50LCBib29sIGlzT25saW5lLCBTZXJ2aWNlV29ya2VyVGhyZWFkJiB0aHJlYWQsIGJvb2wgc2hv
dWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBSZWY8U2VjdXJpdHlPcmln
aW4+JiYgdG9wT3JpZ2luLCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIElEQkNsaWVudDo6SURC
Q29ubmVjdGlvblByb3h5KiBjb25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQ
cm92aWRlciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlOjpTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgU2VydmljZVdvcmtlclRocmVhZCYg
dGhyZWFkLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwg
UmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2lu
LCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQ
cm92aWRlciogc29ja2V0UHJvdmlkZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICA6
IFdvcmtlckdsb2JhbFNjb3BlKHVybCwgaWRlbnRpZmllciwgdXNlckFnZW50LCBpc09ubGluZSwg
dGhyZWFkLCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFdURk1v
dmUodG9wT3JpZ2luKSwgdGltZU9yaWdpbiwgY29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRl
ciwgc2Vzc2lvbklEKQotICAgICwgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcihzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllcikKICAgICAsIG1fY29udGV4dERhdGEoY3Jvc3NUaHJlYWRDb3B5
KGRhdGEpKQogICAgICwgbV9jbGllbnRzKFNlcnZpY2VXb3JrZXJDbGllbnRzOjpjcmVhdGUoKnRo
aXMpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IGVlNDk1ODY5MjQwLi45MDAxNTE3ZGRmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuaApAQCAtNTEsOCArNTEsNiBAQCBwdWJsaWM6CiAgICAgU2Vydmlj
ZVdvcmtlckNsaWVudHMmIGNsaWVudHMoKSB7IHJldHVybiBtX2NsaWVudHMuZ2V0KCk7IH0KICAg
ICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKiByZWdpc3RyYXRpb24oKTsKICAgICAKLSAgICB1
aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXI7IH0KLQogICAgIHZvaWQgc2tpcFdhaXRpbmcoUmVmPERl
ZmVycmVkUHJvbWlzZT4mJik7CiAKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdl
dEludGVyZmFjZSgpIGNvbnN0IGZpbmFsOwpAQCAtNjAsOSArNTgsOCBAQCBwdWJsaWM6CiAgICAg
U2VydmljZVdvcmtlclRocmVhZCYgdGhyZWFkKCk7CiAKIHByaXZhdGU6Ci0gICAgU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25z
dCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBib29sIGlzT25saW5lLCBTZXJ2aWNl
V29ya2VyVGhyZWFkJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQ
b2xpY3ksIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIE1vbm90b25pY1RpbWUgdGlt
ZU9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlcios
IFBBTDo6U2Vzc2lvbklEKTsKKyAgICBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgU2VydmljZVdvcmtl
clRocmVhZCYsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5
LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBNb25vdG9uaWNUaW1lIHRpbWVPcmln
aW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqLCBQQUw6
OlNlc3Npb25JRCk7CiAKLSAgICB1aW50NjRfdCBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
OwogICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBtX2NvbnRleHREYXRhOwogICAgIFJlZjxT
ZXJ2aWNlV29ya2VyQ2xpZW50cz4gbV9jbGllbnRzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyVHlwZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyVHlwZXMuaAppbmRleCBhM2M2YzNlNjE3
OC4uYzcwYWUwOGFhNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlclR5cGVzLmgKQEAgLTUwLDYgKzUwLDkgQEAgZW51bSBjbGFzcyBTaG91
bGROb3RpZnlXaGVuUmVzb2x2ZWQgeyBObywgWWVzIH07CiBlbnVtIFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyVHlwZSB7IH07CiB1c2luZyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXJUeXBlPjsKIAorZW51bSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVu
dGlmaWVyVHlwZSB7IH07Cit1c2luZyBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlm
aWVyID0gT2JqZWN0SWRlbnRpZmllcjxTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlm
aWVyVHlwZT47CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggNjMzOGU0ZTc1
NWUuLjIzYzZiYjZmOGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcApAQCAtNzMsOSAr
NzMsOCBAQCBwcml2YXRlOgogLy8gRklYTUU6IFVzZSBhIHZhbGlkIGlzT25saW5lIGZsYWcKIC8v
IEZJWE1FOiBVc2UgdmFsaWQgcnVudGltZSBmbGFncwogCi1TZXJ2aWNlV29ya2VyVGhyZWFkOjpT
ZXJ2aWNlV29ya2VyVGhyZWFkKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBj
b25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEsIFBBTDo6U2Vzc2lvbklELCBXb3Jr
ZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkmIGRlYnVnZ2Vy
UHJveHkpCitTZXJ2aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhyZWFkKGNvbnN0IFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSwgUEFMOjpTZXNzaW9uSUQsIFdvcmtlckxvYWRl
clByb3h5JiBsb2FkZXJQcm94eSwgV29ya2VyRGVidWdnZXJQcm94eSYgZGVidWdnZXJQcm94eSkK
ICAgICA6IFdvcmtlclRocmVhZChkYXRhLnNjcmlwdFVSTCwgInNlcnZpY2V3b3JrZXI6IiArIElu
c3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCksIEFTQ0lJTGl0
ZXJhbCgiV29ya2VyVXNlckFnZW50IiksIC8qIGlzT25saW5lICovIGZhbHNlLCBkYXRhLnNjcmlw
dCwgbG9hZGVyUHJveHksIGRlYnVnZ2VyUHJveHksIER1bW15U2VydmljZVdvcmtlclRocmVhZFBy
b3h5OjpzaGFyZWQoKSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIENvbnRlbnRTZWN1
cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyB7IH0sIGZhbHNlLCBTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKGRhdGEuc2NyaXB0VVJMKS5nZXQoKSwgTW9ub3RvbmljVGltZTo6bm93KCksIG51bGxwdHIs
IG51bGxwdHIsIEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVkKCksIFNlc3Npb25J
RDo6ZGVmYXVsdFNlc3Npb25JRCgpKQotICAgICwgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
cihzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikKICAgICAsIG1fZGF0YShkYXRhLmlzb2xhdGVk
Q29weSgpKQogICAgICwgbV93b3JrZXJPYmplY3RQcm94eShEdW1teVNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eTo6c2hhcmVkKCkpCiB7CkBAIC04Niw3ICs4NSw3IEBAIFNlcnZpY2VXb3JrZXJUaHJl
YWQ6On5TZXJ2aWNlV29ya2VyVGhyZWFkKCkgPSBkZWZhdWx0OwogCiBSZWY8V29ya2VyR2xvYmFs
U2NvcGU+IFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50LCBib29sIGlzT25saW5lLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMmLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwg
UmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2lu
LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgcmV0dXJuIFNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZTo6Y3JlYXRlKG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIG1fZGF0YSwg
dXJsLCBpZGVudGlmaWVyLCB1c2VyQWdlbnQsIGlzT25saW5lLCAqdGhpcywgc2hvdWxkQnlwYXNz
TWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBXVEZNb3ZlKHRvcE9yaWdpbiksIHRpbWVP
cmlnaW4sIGlkYkNvbm5lY3Rpb25Qcm94eSgpLCBzb2NrZXRQcm92aWRlcigpLCBzZXNzaW9uSUQp
OworICAgIHJldHVybiBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZShtX2RhdGEsIHVy
bCwgaWRlbnRpZmllciwgdXNlckFnZW50LCBpc09ubGluZSwgKnRoaXMsIHNob3VsZEJ5cGFzc01h
aW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgV1RGTW92ZSh0b3BPcmlnaW4pLCB0aW1lT3Jp
Z2luLCBpZGJDb25uZWN0aW9uUHJveHkoKSwgc29ja2V0UHJvdmlkZXIoKSwgc2Vzc2lvbklEKTsK
IH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpydW5FdmVudExvb3AoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRo
cmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZC5oCmluZGV4IDczZGVjZDUwMzkwLi44NGE4ZTNiNDc2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWQuaApAQCAtNjAsNyArNjAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaXJlSW5z
dGFsbEV2ZW50KCk7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudCgpOwogCi0gICAgdWludDY0
X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyOyB9CiAgICAgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRh
JiBjb250ZXh0RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCiAgICAgU2VydmljZVdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5zZXJ2aWNl
V29ya2VySWRlbnRpZmllcjsgfQpAQCAtNzAsMTIgKzY5LDExIEBAIHByb3RlY3RlZDoKICAgICB2
b2lkIHJ1bkV2ZW50TG9vcCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFdFQkNPUkVfRVhQ
T1JUIFNlcnZpY2VXb3JrZXJUaHJlYWQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYsIFBBTDo6U2Vzc2lvbklELCBXb3Jr
ZXJMb2FkZXJQcm94eSYsIFdvcmtlckRlYnVnZ2VyUHJveHkmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBTZXJ2aWNlV29ya2VyVGhyZWFkKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYsIFBB
TDo6U2Vzc2lvbklELCBXb3JrZXJMb2FkZXJQcm94eSYsIFdvcmtlckRlYnVnZ2VyUHJveHkmKTsK
IAogICAgIHZvaWQgdXBkYXRlRXh0ZW5kZWRFdmVudHNTZXQoRXh0ZW5kYWJsZUV2ZW50KiBuZXdF
dmVudCA9IG51bGxwdHIpOwogICAgIGJvb2wgaGFzUGVuZGluZ0V2ZW50cygpIGNvbnN0IHsgcmV0
dXJuICFtX2V4dGVuZGVkRXZlbnRzLmlzRW1wdHkoKTsgfQogCi0gICAgdWludDY0X3QgbV9zZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgbV9k
YXRhOwogICAgIFdvcmtlck9iamVjdFByb3h5JiBtX3dvcmtlck9iamVjdFByb3h5OwogICAgIFZl
Y3RvcjxSZWY8RXh0ZW5kYWJsZUV2ZW50Pj4gbV9leHRlbmRlZEV2ZW50czsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCmluZGV4IDE1NzBjZjBmMGJhLi5lN2RiZDQwOWU4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCkBAIC0zNiwxMSArMzYsNiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk+
IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFn
ZUNvbmZpZ3VyYXRpb24sIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25z
dCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImIGNhY2hlU3RvcmFnZVByb3ZpZGVyKQotewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSB7IFdURk1vdmUocGFn
ZUNvbmZpZ3VyYXRpb24pLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZGF0YSwgc2Vzc2lv
bklELCBjYWNoZVN0b3JhZ2VQcm92aWRlciB9KTsKLX0KLQogc3RhdGljIGlubGluZSBVbmlxdWVS
ZWY8UGFnZT4gY3JlYXRlUGFnZUZvclNlcnZpY2VXb3JrZXIoUGFnZUNvbmZpZ3VyYXRpb24mJiBj
b25maWd1cmF0aW9uLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBhdXRvIHBhZ2UgPSBtYWtlVW5p
cXVlUmVmPFBhZ2U+KFdURk1vdmUoY29uZmlndXJhdGlvbikpOwpAQCAtNTIsMTAgKzQ3LDEwIEBA
IHN0YXRpYyBpbmxpbmUgVW5pcXVlUmVmPFBhZ2U+IGNyZWF0ZVBhZ2VGb3JTZXJ2aWNlV29ya2Vy
KFBhZ2VDb25maWd1cmF0aW9uJiYgY29uCiAgICAgcmV0dXJuIHBhZ2U7CiB9CiAKLVNlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5KFBhZ2VDb25maWd1cmF0
aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24sIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEsIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImIGNhY2hlU3RvcmFnZVByb3ZpZGVyKQor
U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoUGFnZUNv
bmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbiwgY29uc3QgU2VydmljZVdvcmtlckNvbnRl
eHREYXRhJiBkYXRhLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENhY2hlU3RvcmFnZVByb3Zp
ZGVyJiBjYWNoZVN0b3JhZ2VQcm92aWRlcikKICAgICA6IG1fcGFnZShjcmVhdGVQYWdlRm9yU2Vy
dmljZVdvcmtlcihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSwgZGF0YS5zY3JpcHRVUkwpKQog
ICAgICwgbV9kb2N1bWVudCgqbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQotICAgICwg
bV9zZXJ2aWNlV29ya2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmNyZWF0ZShzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgZGF0YSwgc2Vzc2lvbklELCAqdGhpcywgKnRoaXMpKQorICAg
ICwgbV9zZXJ2aWNlV29ya2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmNyZWF0ZShkYXRh
LCBzZXNzaW9uSUQsICp0aGlzLCAqdGhpcykpCiAgICAgLCBtX2NhY2hlU3RvcmFnZVByb3ZpZGVy
KGNhY2hlU3RvcmFnZVByb3ZpZGVyKQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogICAg
ICwgbV9pbnNwZWN0b3JQcm94eSgqdGhpcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5
LmgKaW5kZXggNDEwYjBlYWUxYzEuLmE5YzU5N2U2ZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkuaApAQCAtNDcsMTQgKzQ3LDE3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE7CiAKIGNsYXNzIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSBmaW5hbCA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk+LCBwdWJsaWMg
V29ya2VyTG9hZGVyUHJveHksIHB1YmxpYyBXb3JrZXJEZWJ1Z2dlclByb3h5IHsKIHB1YmxpYzoK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eT4g
Y3JlYXRlKFBhZ2VDb25maWd1cmF0aW9uJiYsIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBQQUw6OlNlc3Npb25JRCwg
Q2FjaGVTdG9yYWdlUHJvdmlkZXImKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBz
dGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eT4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdz
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlclRocmVh
ZFByb3h5KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgIH0KIAogICAgIFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VX
b3JrZXJUaHJlYWQtPmlkZW50aWZpZXIoKTsgfQogICAgIFNlcnZpY2VXb3JrZXJUaHJlYWQmIHRo
cmVhZCgpIHsgcmV0dXJuIG1fc2VydmljZVdvcmtlclRocmVhZC5nZXQoKTsgfQogICAgIFNlcnZp
Y2VXb3JrZXJJbnNwZWN0b3JQcm94eSYgaW5zcGVjdG9yUHJveHkoKSB7IHJldHVybiBtX2luc3Bl
Y3RvclByb3h5OyB9CiAKIHByaXZhdGU6Ci0gICAgU2VydmljZVdvcmtlclRocmVhZFByb3h5KFBh
Z2VDb25maWd1cmF0aW9uJiYsIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBj
b25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBQQUw6OlNlc3Npb25JRCwgQ2FjaGVTdG9y
YWdlUHJvdmlkZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHkoUGFnZUNvbmZpZ3VyYXRpb24mJiwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiwg
UEFMOjpTZXNzaW9uSUQsIENhY2hlU3RvcmFnZVByb3ZpZGVyJik7CiAKICAgICAvLyBXb3JrZXJM
b2FkZXJQcm94eQogICAgIGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYsIGNvbnN0IFN0cmluZyYgbW9kZSkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
Y3BwCmluZGV4IDVlYTU0NGZlMzYyLi4wNzliNWU3YjA0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTMzLDE5ICszMywy
MCBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTV1NlcnZlckpvYlF1ZXVlLmgi
CiAjaW5jbHVkZSAiU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCIKKyNpbmNsdWRlICJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJTV1NlcnZlcldvcmtlci5oIgogI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRleHREYXRh
LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoUmVzdWx0LmgiCiAjaW5jbHVkZSAiU2Vy
dmljZVdvcmtlckpvYkRhdGEuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dGF0aWMgU2VydmljZVdvcmtlcklkZW50aWZpZXIgZ2VuZXJhdGVTZXJ2aWNlV29ya2VySWRlbnRp
ZmllcigpCiB7Ci0gICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZpZXIgPSAwOwotICAgIHJldHVy
biBtYWtlT2JqZWN0SWRlbnRpZmllcjxTZXJ2aWNlV29ya2VySWRlbnRpZmllclR5cGU+KCsraWRl
bnRpZmllcik7CisgICAgcmV0dXJuIGdlbmVyYXRlT2JqZWN0SWRlbnRpZmllcjxTZXJ2aWNlV29y
a2VySWRlbnRpZmllclR5cGU+KCk7CiB9CiAKIFNXU2VydmVyOjpDb25uZWN0aW9uOjpDb25uZWN0
aW9uKFNXU2VydmVyJiBzZXJ2ZXIsIHVpbnQ2NF90IGlkZW50aWZpZXIpCkBAIC02MCw2ICs2MSwx
MiBAQCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6fkNvbm5lY3Rpb24oKQogICAgIG1fc2VydmVyLnVu
cmVnaXN0ZXJDb25uZWN0aW9uKCp0aGlzKTsKIH0KIAorSGFzaFNldDxTV1NlcnZlcio+JiBTV1Nl
cnZlcjo6YWxsU2VydmVycygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8
U1dTZXJ2ZXIqPj4gc2VydmVyczsKKyAgICByZXR1cm4gc2VydmVyczsKK30KKwogU1dTZXJ2ZXI6
On5TV1NlcnZlcigpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9jb25uZWN0aW9ucy5pc0VtcHR5
KCkpOwpAQCAtNzQsNiArODEsOCBAQCBTV1NlcnZlcjo6flNXU2VydmVyKCkKICAgICAvLyBCdXQg
b25jZSBpdCBkb2VzIHN0YXJ0IGhhcHBlbmluZywgdGhpcyBBU1NFUlQgd2lsbCBjYXRjaCB1cyBk
b2luZyBpdCB3cm9uZy4KICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fdGFza1RocmVhZExvY2sp
OwogICAgIEFTU0VSVCghbV90YXNrVGhyZWFkKTsKKyAgICAKKyAgICBhbGxTZXJ2ZXJzKCkucmVt
b3ZlKHRoaXMpOwogfQogCiBTV1NlcnZlclJlZ2lzdHJhdGlvbiogU1dTZXJ2ZXI6OmdldFJlZ2lz
dHJhdGlvbihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25L
ZXkpCkBAIC0xMTIsMjEgKzEyMSw2IEBAIHZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OmZpbmlz
aEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckZldGNoCiAgICAgbV9z
ZXJ2ZXIuc2NyaXB0RmV0Y2hGaW5pc2hlZCgqdGhpcywgcmVzdWx0KTsKIH0KIAotdm9pZCBTV1Nl
cnZlcjo6Q29ubmVjdGlvbjo6ZGlkRmluaXNoSW5zdGFsbChjb25zdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5JiBrZXksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCi17Ci0gICAgbV9zZXJ2ZXIuZGlkRmluaXNo
SW5zdGFsbCgqdGhpcywga2V5LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgd2FzU3VjY2Vzc2Z1
bCk7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OmRpZEZpbmlzaEFjdGl2YXRpb24o
Y29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYga2V5LCBTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKLXsKLSAgICBtX3NlcnZlci5kaWRGaW5p
c2hBY3RpdmF0aW9uKCp0aGlzLCBrZXksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLX0KLQot
dm9pZCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6c2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVu
dHMoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wg
aGFzUGVuZGluZ0V2ZW50cykKLXsKLSAgICBtX3NlcnZlci5zZXRTZXJ2aWNlV29ya2VySGFzUGVu
ZGluZ0V2ZW50cygqdGhpcywgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGhhc1BlbmRpbmdFdmVu
dHMpOwotfQotCiB2b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpkaWRSZXNvbHZlUmVnaXN0cmF0
aW9uUHJvbWlzZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXkpCiB7CiAg
ICAgbV9zZXJ2ZXIuZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoKnRoaXMsIGtleSk7CkBA
IC0xNDIsMTggKzEzNiw5IEBAIHZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OnJlbW92ZVNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihjb25zdCBTZXJ2aWNlCiAgICAgbV9zZXJ2ZXIu
cmVtb3ZlQ2xpZW50U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbigqdGhpcywga2V5LCBpZGVudGlm
aWVyKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6c2NyaXB0Q29udGV4dEZhaWxl
ZFRvU3RhcnQoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9u
S2V5LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCi17Ci0gICAgbV9zZXJ2ZXIuc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoKnRoaXMs
IHJlZ2lzdHJhdGlvbktleSwgaWRlbnRpZmllciwgbWVzc2FnZSk7Ci19Ci0KLXZvaWQgU1dTZXJ2
ZXI6OkNvbm5lY3Rpb246OnNjcmlwdENvbnRleHRTdGFydGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIg
aWRlbnRpZmllcikKLXsKLSAgICBtX3NlcnZlci5zY3JpcHRDb250ZXh0U3RhcnRlZCgqdGhpcywg
cmVnaXN0cmF0aW9uS2V5LCBpZGVudGlmaWVyKTsKLX0KLQogU1dTZXJ2ZXI6OlNXU2VydmVyKCkK
IHsKKyAgICBhbGxTZXJ2ZXJzKCkuYWRkKHRoaXMpOwogICAgIG1fdGFza1RocmVhZCA9IFRocmVh
ZDo6Y3JlYXRlKEFTQ0lJTGl0ZXJhbCgiU2VydmljZVdvcmtlciBUYXNrIFRocmVhZCIpLCBbdGhp
c10gewogICAgICAgICB0YXNrVGhyZWFkRW50cnlQb2ludCgpOwogICAgIH0pOwpAQCAtMjI4LDUy
ICsyMTMsMzYgQEAgdm9pZCBTV1NlcnZlcjo6c2NyaXB0RmV0Y2hGaW5pc2hlZChDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyRmUKICAgICBqb2JRdWV1ZS0+c2NyaXB0
RmV0Y2hGaW5pc2hlZChjb25uZWN0aW9uLCByZXN1bHQpOwogfQogCi12b2lkIFNXU2VydmVyOjpz
Y3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgU1dT
ZXJ2ZXI6OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KFNXU2VydmVyV29ya2VyJiB3b3JrZXIs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250
YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOwotICAgIAotICAgIGlmIChhdXRvKiBqb2JR
dWV1ZSA9IG1fam9iUXVldWVzLmdldChyZWdpc3RyYXRpb25LZXkpKQotICAgICAgICBqb2JRdWV1
ZS0+c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29ubmVjdGlvbiwgaWRlbnRpZmllciwgbWVz
c2FnZSk7CisgICAgaWYgKGF1dG8qIGpvYlF1ZXVlID0gbV9qb2JRdWV1ZXMuZ2V0KHdvcmtlci5y
ZWdpc3RyYXRpb25LZXkoKSkpCisgICAgICAgIGpvYlF1ZXVlLT5zY3JpcHRDb250ZXh0RmFpbGVk
VG9TdGFydCh3b3JrZXIuaWRlbnRpZmllcigpLCBtZXNzYWdlKTsKIH0KIAotdm9pZCBTV1NlcnZl
cjo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBTV1NlcnZlcjo6c2NyaXB0Q29udGV4dFN0YXJ0
ZWQoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikKIHsKLSAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5j
b250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOwotCi0gICAgaWYgKGF1dG8qIGpvYlF1
ZXVlID0gbV9qb2JRdWV1ZXMuZ2V0KHJlZ2lzdHJhdGlvbktleSkpCi0gICAgICAgIGpvYlF1ZXVl
LT5zY3JpcHRDb250ZXh0U3RhcnRlZChjb25uZWN0aW9uLCBpZGVudGlmaWVyKTsKKyAgICBpZiAo
YXV0byogam9iUXVldWUgPSBtX2pvYlF1ZXVlcy5nZXQod29ya2VyLnJlZ2lzdHJhdGlvbktleSgp
KSkKKyAgICAgICAgam9iUXVldWUtPnNjcmlwdENvbnRleHRTdGFydGVkKHdvcmtlci5pZGVudGlm
aWVyKCkpOwogfQogCi12b2lkIFNXU2VydmVyOjpkaWRGaW5pc2hJbnN0YWxsKENvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJh
dGlvbktleSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IGJvb2wgd2FzU3VjY2Vzc2Z1bCkKK3ZvaWQgU1dTZXJ2ZXI6OmRpZEZpbmlzaEluc3RhbGwoU1dT
ZXJ2ZXJXb3JrZXImIHdvcmtlciwgYm9vbCB3YXNTdWNjZXNzZnVsKQogewotICAgIEFTU0VSVCht
X2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKSk7Ci0KLSAgICBp
ZiAoYXV0byogam9iUXVldWUgPSBtX2pvYlF1ZXVlcy5nZXQocmVnaXN0cmF0aW9uS2V5KSkKLSAg
ICAgICAgam9iUXVldWUtPmRpZEZpbmlzaEluc3RhbGwoY29ubmVjdGlvbiwgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIHdhc1N1Y2Nlc3NmdWwpOworICAgIGlmIChhdXRvKiBqb2JRdWV1ZSA9IG1f
am9iUXVldWVzLmdldCh3b3JrZXIucmVnaXN0cmF0aW9uS2V5KCkpKQorICAgICAgICBqb2JRdWV1
ZS0+ZGlkRmluaXNoSW5zdGFsbCh3b3JrZXIuaWRlbnRpZmllcigpLCB3YXNTdWNjZXNzZnVsKTsK
IH0KIAotdm9pZCBTV1NlcnZlcjo6ZGlkRmluaXNoQWN0aXZhdGlvbihDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25L
ZXksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQordm9p
ZCBTV1NlcnZlcjo6ZGlkRmluaXNoQWN0aXZhdGlvbihTV1NlcnZlcldvcmtlciYgd29ya2VyKQog
ewotICAgIEFTU0VSVF9VTlVTRUQoY29ubmVjdGlvbiwgbV9jb25uZWN0aW9ucy5jb250YWlucyhj
b25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOwotCi0gICAgaWYgKGF1dG8qIHJlZ2lzdHJhdGlvbiA9
IGdldFJlZ2lzdHJhdGlvbihyZWdpc3RyYXRpb25LZXkpKQotICAgICAgICBTV1NlcnZlckpvYlF1
ZXVlOjpkaWRGaW5pc2hBY3RpdmF0aW9uKCpyZWdpc3RyYXRpb24sIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKTsKLX0KLQotdm9pZCBTV1NlcnZlcjo6c2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdF
dmVudHMoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgaGFzUGVuZGluZ0V2ZW50cykKLXsKLSAgICBBU1NF
UlRfVU5VU0VEKGNvbm5lY3Rpb24sIG1fY29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5p
ZGVudGlmaWVyKCkpKTsKLQotICAgIGlmIChhdXRvKiBzZXJ2aWNlV29ya2VyID0gbV93b3JrZXJz
QnlJRC5nZXQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKQotICAgICAgICBzZXJ2aWNlV29ya2Vy
LT5zZXRIYXNQZW5kaW5nRXZlbnRzKGhhc1BlbmRpbmdFdmVudHMpOworICAgIGlmIChhdXRvKiBy
ZWdpc3RyYXRpb24gPSBnZXRSZWdpc3RyYXRpb24od29ya2VyLnJlZ2lzdHJhdGlvbktleSgpKSkK
KyAgICAgICAgU1dTZXJ2ZXJKb2JRdWV1ZTo6ZGlkRmluaXNoQWN0aXZhdGlvbigqcmVnaXN0cmF0
aW9uLCB3b3JrZXIuaWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6ZGlkUmVzb2x2
ZVJlZ2lzdHJhdGlvblByb21pc2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQogewotICAgIEFTU0VSVCht
X2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKSk7CisgICAgQVNT
RVJUX1VOVVNFRChjb25uZWN0aW9uLCBtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24u
aWRlbnRpZmllcigpKSk7CiAKICAgICBpZiAoYXV0byogam9iUXVldWUgPSBtX2pvYlF1ZXVlcy5n
ZXQocmVnaXN0cmF0aW9uS2V5KSkKLSAgICAgICAgam9iUXVldWUtPmRpZFJlc29sdmVSZWdpc3Ry
YXRpb25Qcm9taXNlKGNvbm5lY3Rpb24pOworICAgICAgICBqb2JRdWV1ZS0+ZGlkUmVzb2x2ZVJl
Z2lzdHJhdGlvblByb21pc2UoKTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6YWRkQ2xpZW50U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXksIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyIGlkZW50aWZpZXIpCkBAIC0zMDQsMjYgKzI3Myw3NSBAQCB2b2lkIFNXU2VydmVyOjpy
ZW1vdmVDbGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIGNvbgogICAgIHJlZ2lzdHJhdGlvbi0+cmVtb3ZlQ2xpZW50U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbihjb25uZWN0aW9uLmlkZW50aWZpZXIoKSk7CiB9CiAKLVJlZjxTV1NlcnZlcldvcmtl
cj4gU1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgV29ya2VyVHlwZSB0eXBlKQordm9pZCBTV1NlcnZl
cjo6dXBkYXRlV29ya2VyKENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHNj
cmlwdCwgV29ya2VyVHlwZSB0eXBlKQogewogICAgIGF1dG8gc2VydmljZVdvcmtlcklkZW50aWZp
ZXIgPSBnZW5lcmF0ZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCk7CiAKLSAgICBhdXRvIHJlc3Vs
dCA9IG1fd29ya2Vyc0J5SUQuYWRkKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTV1NlcnZlcldv
cmtlcjo6Y3JlYXRlKHJlZ2lzdHJhdGlvbktleSwgdXJsLCBzY3JpcHQsIHR5cGUsIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKSk7Ci0gICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgZGF0YSA9IHsgcmVnaXN0cmF0aW9uS2V5LCBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgc2NyaXB0LCB1cmwsIHR5cGUgfTsKKworICAgIC8vIFJpZ2h0IG5v
dyB3ZSBvbmx5IGV2ZXIga2VlcCB1cCB0byBvbmUgY29ubmVjdGlvbiB0byBvbmUgU1cgY29udGV4
dCBwcm9jZXNzLgorICAgIC8vIEFuZCBpdCBzaG91bGQgYWx3YXlzIGV4aXN0IGlmIHdlJ3JlIGNh
bGxpbmcgdXBkYXRlV29ya2VyCisgICAgYXV0byogY29ubmVjdGlvbiA9IFNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6Z2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOworICAgIGlm
ICghY29ubmVjdGlvbikgeworICAgICAgICBtX3BlbmRpbmdDb250ZXh0RGF0YXMuYXBwZW5kKFdU
Rk1vdmUoZGF0YSkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGluc3RhbGxD
b250ZXh0RGF0YShkYXRhKTsKK30KIAotICAgIGNvbm5lY3Rpb24uaW5zdGFsbFNlcnZpY2VXb3Jr
ZXJDb250ZXh0KHsgcmVnaXN0cmF0aW9uS2V5LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc2Ny
aXB0LCB1cmwgfSk7Cit2b2lkIFNXU2VydmVyOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uQ3Jl
YXRlZCgpCit7CisgICAgQVNTRVJUKFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Z2xvYmFs
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpKTsKKyAgICBmb3IgKGF1dG8mIGRhdGEgOiBtX3Bl
bmRpbmdDb250ZXh0RGF0YXMpCisgICAgICAgIGluc3RhbGxDb250ZXh0RGF0YShkYXRhKTsKICAg
ICAKLSAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKyAgICBtX3BlbmRp
bmdDb250ZXh0RGF0YXMuY2xlYXIoKTsKK30KKwordm9pZCBTV1NlcnZlcjo6aW5zdGFsbENvbnRl
eHREYXRhKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKK3sKKyAgICBhdXRv
KiBjb25uZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpnbG9iYWxTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKCk7CisgICAgQVNTRVJUKGNvbm5lY3Rpb24pOworCisgICAgYXV0
byByZXN1bHQgPSBtX3dvcmtlcnNCeUlELmFkZChkYXRhLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBTV1NlcnZlcldvcmtlcjo6Y3JlYXRlKCp0aGlzLCBkYXRhLnJlZ2lzdHJhdGlvbktleSwgY29u
bmVjdGlvbi0+aWRlbnRpZmllcigpLCBkYXRhLnNjcmlwdFVSTCwgZGF0YS5zY3JpcHQsIGRhdGEu
d29ya2VyVHlwZSwgZGF0YS5zZXJ2aWNlV29ya2VySWRlbnRpZmllcikpOworICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICBjb25uZWN0aW9uLT5pbnN0
YWxsU2VydmljZVdvcmtlckNvbnRleHQoZGF0YSk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OmZpcmVJ
bnN0YWxsRXZlbnQoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCit2b2lkIFNXU2VydmVyOjpmaXJlSW5zdGFsbEV2
ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQogewot
ICAgIGNvbm5lY3Rpb24uZmlyZUluc3RhbGxFdmVudChzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7
CisgICAgYXV0byogd29ya2VyID0gbV93b3JrZXJzQnlJRC5nZXQoc2VydmljZVdvcmtlcklkZW50
aWZpZXIpOworICAgIGlmICghd29ya2VyKSB7CisgICAgICAgIExPR19FUlJPUigiUmVxdWVzdCB0
byBmaXJlIGluc3RhbGwgZXZlbnQgb24gYSB3b3JrZXIgdGhhdCBjYW5ub3QgYmUgZm91bmQgaW4g
dGhlIHNlcnZlciIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byogY29ubmVj
dGlvbiA9IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvcklkZW50aWZp
ZXIod29ya2VyLT5jb250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIoKSk7CisgICAgaWYgKCFjb25u
ZWN0aW9uKSB7CisgICAgICAgIExPR19FUlJPUigiUmVxdWVzdCB0byBmaXJlIGluc3RhbGwgZXZl
bnQgb24gYSB3b3JrZXIgd2hvc2UgY29udGV4dCBjb25uZWN0aW9uIGRvZXMgbm90IGV4aXN0Iik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb25uZWN0aW9uLT5maXJlSW5zdGFsbEV2
ZW50KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6ZmlyZUFj
dGl2YXRlRXZlbnQoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCit2b2lkIFNXU2VydmVyOjpmaXJlQWN0aXZhdGVF
dmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKIHsK
LSAgICBjb25uZWN0aW9uLmZpcmVBY3RpdmF0ZUV2ZW50KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KTsKKyAgICBhdXRvKiB3b3JrZXIgPSBtX3dvcmtlcnNCeUlELmdldChzZXJ2aWNlV29ya2VySWRl
bnRpZmllcik7CisgICAgaWYgKCF3b3JrZXIpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJSZXF1ZXN0
IHRvIGZpcmUgaW5zdGFsbCBldmVudCBvbiBhIHdvcmtlciB0aGF0IGNhbm5vdCBiZSBmb3VuZCBp
biB0aGUgc2VydmVyIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvKiBjb25u
ZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9ySWRlbnRp
Zmllcih3b3JrZXItPmNvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcigpKTsKKyAgICBpZiAoIWNv
bm5lY3Rpb24pIHsKKyAgICAgICAgTE9HX0VSUk9SKCJSZXF1ZXN0IHRvIGZpcmUgaW5zdGFsbCBl
dmVudCBvbiBhIHdvcmtlciB3aG9zZSBjb250ZXh0IGNvbm5lY3Rpb24gZG9lcyBub3QgZXhpc3Qi
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbm5lY3Rpb24tPmZpcmVBY3RpdmF0
ZUV2ZW50KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6dGFz
a1RocmVhZEVudHJ5UG9pbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5oCmluZGV4IGYwYzhjMmMxY2Y1Li5lZjU2ZTQxZGY0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAt
MzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2IuaCIKICNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKICNpbmNs
dWRlIDx3dGYvQ3Jvc3NUaHJlYWRRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFRh
c2suaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNDUsNiArNDYsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNXU2VydmVySm9iUXVldWU7CiBjbGFzcyBTV1NlcnZlclJl
Z2lzdHJhdGlvbjsKK2NsYXNzIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKIGVudW0gY2xh
c3MgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlOwogZW51bSBjbGFzcyBTZXJ2aWNlV29y
a2VyU3RhdGU7CiBzdHJ1Y3QgRXhjZXB0aW9uRGF0YTsKQEAgLTU5LDExICs2MSw2IEBAIHB1Ymxp
YzoKICAgICBwdWJsaWM6CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkNvbm5lY3Rp
b24oKTsKIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRU
b1N0YXJ0KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzY3JpcHRDb250ZXh0U3RhcnRlZChjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAgICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRpZEZpbmlzaEluc3RhbGwoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eSYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpOwotICAgICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oY29uc3QgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleSYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKTsKICAgICAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7CiAgICAgICAgIGNvbnN0IFNXU2VydmVyUmVnaXN0
cmF0aW9uKiBkb1JlZ2lzdHJhdGlvbk1hdGNoaW5nKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
dG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXIu
ZG9SZWdpc3RyYXRpb25NYXRjaGluZyh0b3BPcmlnaW4sIGNsaWVudFVSTCk7IH0KIApAQCAtODgs
MTEgKzg1LDYgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZVVucmVnaXN0
cmF0aW9uSm9iSW5DbGllbnQodWludDY0X3Qgam9iSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleSYsIGJvb2wgcmVnaXN0cmF0aW9uUmVzdWx0KSA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBzdGFydFNjcmlwdEZldGNoSW5DbGllbnQodWludDY0X3Qgam9iSWRl
bnRpZmllcikgPSAwOwogCi0gICAgICAgIC8vIE1lc3NhZ2VzIHRvIHRoZSBTVyBob3N0IFdlYlBy
b2Nlc3MKLSAgICAgICAgdmlydHVhbCB2b2lkIGluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChj
b25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBmaXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikg
PSAwOwotCiAgICAgICAgIFNXU2VydmVyJiBtX3NlcnZlcjsKICAgICB9OwogCkBAIC0xMTQsMTMg
KzEwNiwyMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBwb3N0VGFzayhDcm9zc1RocmVhZFRhc2smJik7
CiAgICAgdm9pZCBwb3N0VGFza1JlcGx5KENyb3NzVGhyZWFkVGFzayYmKTsKIAotICAgIFJlZjxT
V1NlcnZlcldvcmtlcj4gdXBkYXRlV29ya2VyKENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIFdv
cmtlclR5cGUpOwotICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChDb25uZWN0aW9uJiwgU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIpOwotICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoQ29ubmVjdGlv
biYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICB2b2lkIHVwZGF0ZVdvcmtlcihDb25u
ZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXb3JrZXJUeXBlKTsKKyAgICB2b2lkIGZpcmVJbnN0YWxs
RXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZl
bnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIFNXU2VydmVyV29ya2VyKiB3b3JrZXJC
eUlEKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpIGNvbnN0IHsgcmV0dXJuIG1f
d29ya2Vyc0J5SUQuZ2V0KGlkZW50aWZpZXIpOyB9CiAgICAgCiAgICAgQ29ubmVjdGlvbiogZ2V0
Q29ubmVjdGlvbih1aW50NjRfdCBpZGVudGlmaWVyKSB7IHJldHVybiBtX2Nvbm5lY3Rpb25zLmdl
dChpZGVudGlmaWVyKTsgfQogCisgICAgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChT
V1NlcnZlcldvcmtlciYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBzY3JpcHRD
b250ZXh0U3RhcnRlZChTV1NlcnZlcldvcmtlciYpOworICAgIHZvaWQgZGlkRmluaXNoSW5zdGFs
bChTV1NlcnZlcldvcmtlciYsIGJvb2wgd2FzU3VjY2Vzc2Z1bCk7CisgICAgdm9pZCBkaWRGaW5p
c2hBY3RpdmF0aW9uKFNXU2VydmVyV29ya2VyJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKCk7CisgICAgCisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIEhhc2hTZXQ8U1dTZXJ2ZXIqPiYgYWxsU2VydmVycygpOworCiBwcml2YXRl
OgogICAgIHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9uKENvbm5lY3Rpb24mKTsKICAgICB2b2lkIHVu
cmVnaXN0ZXJDb25uZWN0aW9uKENvbm5lY3Rpb24mKTsKQEAgLTEyOSwxMSArMTMwLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGhhbmRsZVRhc2tSZXBsaWVzT25NYWluVGhyZWFkKCk7CiAKICAgICB2
b2lkIHNjcmlwdEZldGNoRmluaXNoZWQoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJG
ZXRjaFJlc3VsdCYpOwotICAgIHZvaWQgc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoQ29ubmVj
dGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICB2b2lkIHNjcmlwdENvbnRl
eHRTdGFydGVkKENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAgIHZvaWQgZGlkRmluaXNoSW5zdGFsbChD
b25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpOwotICAgIHZvaWQgZGlkRmluaXNo
QWN0aXZhdGlvbihDb25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eSYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIHNldFNlcnZpY2VXb3JrZXJI
YXNQZW5kaW5nRXZlbnRzKENvbm5lY3Rpb24mLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9v
bCBoYXNQZW5kaW5nRXZlbnRzKTsKKwogICAgIHZvaWQgZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblBy
b21pc2UoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKTsK
IAogICAgIHZvaWQgYWRkQ2xpZW50U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihDb25uZWN0aW9u
JiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyKTsKQEAgLTE0MSw2ICsxMzgsOCBAQCBwcml2YXRlOgogCiAgICAg
V0VCQ09SRV9FWFBPUlQgY29uc3QgU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIGRvUmVnaXN0cmF0aW9u
TWF0Y2hpbmcoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYg
Y2xpZW50VVJMKSBjb25zdDsKIAorICAgIHZvaWQgaW5zdGFsbENvbnRleHREYXRhKGNvbnN0IFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpOworCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29ubmVj
dGlvbio+IG1fY29ubmVjdGlvbnM7CiAgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5LCBzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+PiBtX3JlZ2lzdHJh
dGlvbnM7CiAgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LCBzdGQ6OnVu
aXF1ZV9wdHI8U1dTZXJ2ZXJKb2JRdWV1ZT4+IG1fam9iUXVldWVzOwpAQCAtMTU1LDYgKzE1NCw4
IEBAIHByaXZhdGU6CiAKICAgICBMb2NrIG1fbWFpblRocmVhZFJlcGx5TG9jazsKICAgICBib29s
IG1fbWFpblRocmVhZFJlcGx5U2NoZWR1bGVkIHsgZmFsc2UgfTsKKworICAgIERlcXVlPFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YT4gbV9wZW5kaW5nQ29udGV4dERhdGFzOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKaW5kZXggZTY5ZmU1N2VjYjMuLjcw
MDljZDVhOGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVySm9iUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBT
V1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkKFNXU2VydmVyOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBjb24KIH0KIAogLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VX
b3JrZXIvI3VwZGF0ZS1hbGdvcml0aG0KLXZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0Q29u
dGV4dEZhaWxlZFRvU3RhcnQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpz
Y3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQogewogICAgIC8vIElmIGFuIHVuY2F1Z2h0IHJ1bnRpbWUgc2NyaXB0
IGVycm9yIG9jY3VycyBkdXJpbmcgdGhlIGFib3ZlIHN0ZXAsIHRoZW46CiAgICAgYXV0byogcmVn
aXN0cmF0aW9uID0gbV9zZXJ2ZXIuZ2V0UmVnaXN0cmF0aW9uKG1fcmVnaXN0cmF0aW9uS2V5KTsK
QEAgLTEwMSwxNiArMTAxLDE2IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0Q29udGV4
dEZhaWxlZFRvU3RhcnQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBTZXJ2aWNlCiAgICAgZmluaXNo
Q3VycmVudEpvYigpOwogfQogCi12b2lkIFNXU2VydmVySm9iUXVldWU6OnNjcmlwdENvbnRleHRT
dGFydGVkKFNXU2VydmVyOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBpZGVudGlmaWVyKQordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRDb250ZXh0
U3RhcnRlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIGF1dG8q
IHJlZ2lzdHJhdGlvbiA9IG1fc2VydmVyLmdldFJlZ2lzdHJhdGlvbihtX3JlZ2lzdHJhdGlvbktl
eSk7CiAgICAgQVNTRVJUKHJlZ2lzdHJhdGlvbik7CiAKLSAgICBpbnN0YWxsKCpyZWdpc3RyYXRp
b24sIGNvbm5lY3Rpb24sIGlkZW50aWZpZXIpOworICAgIGluc3RhbGwoKnJlZ2lzdHJhdGlvbiwg
aWRlbnRpZmllcik7CiB9CiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2Vy
LyNpbnN0YWxsCi12b2lkIFNXU2VydmVySm9iUXVldWU6Omluc3RhbGwoU1dTZXJ2ZXJSZWdpc3Ry
YXRpb24mIHJlZ2lzdHJhdGlvbiwgU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBpbnN0YWxsaW5nV29ya2VyKQordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjppbnN0
YWxsKFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIGluc3RhbGxpbmdXb3JrZXIpCiB7CiAgICAgLy8gVGhlIEluc3RhbGwgYWxnb3JpdGht
IHNob3VsZCBuZXZlciBiZSBpbnZva2VkIHdpdGggYSBudWxsIHdvcmtlci4KICAgICBhdXRvKiB3
b3JrZXIgPSBtX3NlcnZlci53b3JrZXJCeUlEKGluc3RhbGxpbmdXb3JrZXIpOwpAQCAtMTI0LDcg
KzEyNCw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6aW5zdGFsbChTV1NlcnZlclJlZ2lzdHJh
dGlvbiYgcmVnaXN0cmF0aW9uLCBTV1NlcnZlcjo6Q29uCiB9CiAKIC8vIGh0dHBzOi8vdzNjLmdp
dGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNpbnN0YWxsIChhZnRlciByZXNvbHZpbmcgcHJvbWlzZSku
Ci12b2lkIFNXU2VydmVySm9iUXVldWU6OmRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKFNX
U2VydmVyOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpk
aWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZSgpCiB7CiAgICAgYXV0byogcmVnaXN0cmF0aW9u
ID0gbV9zZXJ2ZXIuZ2V0UmVnaXN0cmF0aW9uKG1fcmVnaXN0cmF0aW9uS2V5KTsKICAgICBBU1NF
UlQocmVnaXN0cmF0aW9uKTsKQEAgLTEzNSwxMSArMTM1LDExIEBAIHZvaWQgU1dTZXJ2ZXJKb2JR
dWV1ZTo6ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24m
IGNvbm5lCiAgICAgcmVnaXN0cmF0aW9uLT5maXJlVXBkYXRlRm91bmRFdmVudCgpOwogCiAgICAg
Ly8gUXVldWUgYSB0YXNrIHRvIGZpcmUgdGhlIEluc3RhbGxFdmVudC4KLSAgICBtX3NlcnZlci5m
aXJlSW5zdGFsbEV2ZW50KGNvbm5lY3Rpb24sIHJlZ2lzdHJhdGlvbi0+aW5zdGFsbGluZ1dvcmtl
cigpLT5pZGVudGlmaWVyKCkpOworICAgIG1fc2VydmVyLmZpcmVJbnN0YWxsRXZlbnQocmVnaXN0
cmF0aW9uLT5pbnN0YWxsaW5nV29ya2VyKCktPmlkZW50aWZpZXIoKSk7CiB9CiAKIC8vIGh0dHBz
Oi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNpbnN0YWxsCi12b2lkIFNXU2VydmVySm9i
UXVldWU6OmRpZEZpbmlzaEluc3RhbGwoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkK
K3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6ZGlkRmluaXNoSW5zdGFsbChTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBpZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCiB7CiAgICAgYXV0byogcmVn
aXN0cmF0aW9uID0gbV9zZXJ2ZXIuZ2V0UmVnaXN0cmF0aW9uKG1fcmVnaXN0cmF0aW9uS2V5KTsK
ICAgICBBU1NFUlQocmVnaXN0cmF0aW9uKTsKQEAgLTE3NiwxMSArMTc2LDExIEBAIHZvaWQgU1dT
ZXJ2ZXJKb2JRdWV1ZTo6ZGlkRmluaXNoSW5zdGFsbChTV1NlcnZlcjo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgU2VydmljCiAgICAgZmluaXNoQ3VycmVudEpvYigpOwogCiAgICAgLy8gRklYTUU6
IFdhaXQgZm9yIGFsbCB0aGUgdGFza3MgcXVldWVkIGJ5IFVwZGF0ZSBXb3JrZXIgU3RhdGUgaW52
b2tlZCBpbiB0aGlzIGFsZ29yaXRobSBoYXZlIGV4ZWN1dGVkLgotICAgIHRyeUFjdGl2YXRlKG1f
c2VydmVyLCBjb25uZWN0aW9uLCAqcmVnaXN0cmF0aW9uKTsKKyAgICB0cnlBY3RpdmF0ZShtX3Nl
cnZlciwgKnJlZ2lzdHJhdGlvbik7CiB9CiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2
aWNlV29ya2VyLyN0cnktYWN0aXZhdGUtYWxnb3JpdGhtCi12b2lkIFNXU2VydmVySm9iUXVldWU6
OnRyeUFjdGl2YXRlKFNXU2VydmVyJiBzZXJ2ZXIsIFNXU2VydmVyOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uKQordm9pZCBTV1NlcnZl
ckpvYlF1ZXVlOjp0cnlBY3RpdmF0ZShTV1NlcnZlciYgc2VydmVyLCBTV1NlcnZlclJlZ2lzdHJh
dGlvbiYgcmVnaXN0cmF0aW9uKQogewogICAgIC8vIElmIHJlZ2lzdHJhdGlvbidzIHdhaXRpbmcg
d29ya2VyIGlzIG51bGwsIHJldHVybi4KICAgICBpZiAoIXJlZ2lzdHJhdGlvbi53YWl0aW5nV29y
a2VyKCkpCkBAIC0xOTUsMTEgKzE5NSwxMSBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnRyeUFj
dGl2YXRlKFNXU2VydmVyJiBzZXJ2ZXIsIFNXU2VydmVyOjpDb25uZWN0aW9uJiBjb25uZQogICAg
IC8vICAgYW5kIG5vIHNlcnZpY2Ugd29ya2VyIGNsaWVudCBpcyB1c2luZyByZWdpc3RyYXRpb24K
ICAgICAvLyBGSVhNRTogQ2hlY2sgZm9yIHRoZSBza2lwIHdhaXRpbmcgZmxhZy4KICAgICBpZiAo
IXJlZ2lzdHJhdGlvbi5hY3RpdmVXb3JrZXIoKSB8fCAhcmVnaXN0cmF0aW9uLmFjdGl2ZVdvcmtl
cigpLT5oYXNQZW5kaW5nRXZlbnRzKCkpCi0gICAgICAgIGFjdGl2YXRlKHNlcnZlciwgY29ubmVj
dGlvbiwgcmVnaXN0cmF0aW9uKTsKKyAgICAgICAgYWN0aXZhdGUoc2VydmVyLCByZWdpc3RyYXRp
b24pOwogfQogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jYWN0aXZh
dGUKLXZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6YWN0aXZhdGUoU1dTZXJ2ZXImIHNlcnZlciwgU1dT
ZXJ2ZXI6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdp
c3RyYXRpb24pCit2b2lkIFNXU2VydmVySm9iUXVldWU6OmFjdGl2YXRlKFNXU2VydmVyJiBzZXJ2
ZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24pCiB7CiAgICAgLy8gSWYgcmVn
aXN0cmF0aW9uJ3Mgd2FpdGluZyB3b3JrZXIgaXMgbnVsbCwgYWJvcnQgdGhlc2Ugc3RlcHMuCiAg
ICAgaWYgKCFyZWdpc3RyYXRpb24ud2FpdGluZ1dvcmtlcigpKQpAQCAtMjIzLDcgKzIyMyw3IEBA
IHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6YWN0aXZhdGUoU1dTZXJ2ZXImIHNlcnZlciwgU1dTZXJ2
ZXI6OkNvbm5lY3Rpb24mIGNvbm5lY3RpCiAgICAgLy8gRklYTUU6IEludm9rZSBSdW4gU2Vydmlj
ZSBXb3JrZXIgYWxnb3JpdGhtIHdpdGggYWN0aXZlV29ya2VyIGFzIHRoZSBhcmd1bWVudC4KIAog
ICAgIC8vIFF1ZXVlIGEgdGFzayB0byBmaXJlIHRoZSBhY3RpdmF0ZSBldmVudC4KLSAgICBzZXJ2
ZXIuZmlyZUFjdGl2YXRlRXZlbnQoY29ubmVjdGlvbiwgcmVnaXN0cmF0aW9uLmFjdGl2ZVdvcmtl
cigpLT5pZGVudGlmaWVyKCkpOworICAgIHNlcnZlci5maXJlQWN0aXZhdGVFdmVudChyZWdpc3Ry
YXRpb24uYWN0aXZlV29ya2VyKCktPmlkZW50aWZpZXIoKSk7CiB9CiAKIC8vIGh0dHBzOi8vdzNj
LmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNhY3RpdmF0ZSAocG9zdCBhY3RpdmF0ZSBldmVudCBz
dGVwcykuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVySm9iUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5oCmluZGV4IDJmNzdiMDk3ZjIxLi4zMTBkMThiM2IwMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpv
YlF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlckpvYlF1ZXVlLmgKQEAgLTQ4LDExICs0OCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBydW5O
ZXh0Sm9iKCk7CiAKICAgICB2b2lkIHNjcmlwdEZldGNoRmluaXNoZWQoU1dTZXJ2ZXI6OkNvbm5l
Y3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKTsKLSAgICB2b2lkIHNjcmlw
dENvbnRleHRGYWlsZWRUb1N0YXJ0KFNXU2VydmVyOjpDb25uZWN0aW9uJiwgU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgdm9pZCBzY3JpcHRDb250
ZXh0U3RhcnRlZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KTsKLSAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKTsKKyAgICB2b2lkIHNjcmlw
dENvbnRleHRGYWlsZWRUb1N0YXJ0KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpOworICAgIHZvaWQgc2NyaXB0Q29udGV4dFN0YXJ0ZWQoU2VydmljZVdvcmtl
cklkZW50aWZpZXIpOworICAgIHZvaWQgZGlkRmluaXNoSW5zdGFsbChTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hB
Y3RpdmF0aW9uKFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIp
OwotICAgIHZvaWQgZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoU1dTZXJ2ZXI6OkNvbm5l
Y3Rpb24mKTsKKyAgICB2b2lkIGRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKCk7CiAKIHBy
aXZhdGU6CiAgICAgdm9pZCBqb2JUaW1lckZpcmVkKCk7CkBAIC02Niw5ICs2Niw5IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHRyeUNsZWFyUmVnaXN0cmF0aW9uKFNXU2VydmVyUmVnaXN0cmF0aW9u
Jik7CiAgICAgdm9pZCBjbGVhclJlZ2lzdHJhdGlvbihTV1NlcnZlclJlZ2lzdHJhdGlvbiYpOwot
ICAgIHZvaWQgaW5zdGFsbChTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIFNXU2VydmVyOjpDb25uZWN0
aW9uJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAgIHN0YXRpYyB2b2lkIHRyeUFjdGl2
YXRlKFNXU2VydmVyJiwgU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBTV1NlcnZlclJlZ2lzdHJhdGlv
biYpOwotICAgIHN0YXRpYyB2b2lkIGFjdGl2YXRlKFNXU2VydmVyJiwgU1dTZXJ2ZXI6OkNvbm5l
Y3Rpb24mLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYpOworICAgIHZvaWQgaW5zdGFsbChTV1NlcnZl
clJlZ2lzdHJhdGlvbiYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgdm9p
ZCB0cnlBY3RpdmF0ZShTV1NlcnZlciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJik7CisgICAgc3Rh
dGljIHZvaWQgYWN0aXZhdGUoU1dTZXJ2ZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYpOwogCiAg
ICAgRGVxdWU8U2VydmljZVdvcmtlckpvYkRhdGE+IG1fam9iUXVldWU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJl
Z2lzdHJhdGlvbi5jcHAKaW5kZXggZjczYmVmZWNiNDMuLjczMjc3OTdiODA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyUmVnaXN0cmF0aW9uLmNwcApAQCAtMzcsOCArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0YXRpYyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBnZW5lcmF0ZVNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKCkKIHsKLSAgICBzdGF0aWMgdWludDY0
X3QgaWRlbnRpZmllciA9IDA7Ci0gICAgcmV0dXJuIG1ha2VPYmplY3RJZGVudGlmaWVyPFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyVHlwZT4oKytpZGVudGlmaWVyKTsKKyAgICBy
ZXR1cm4gZ2VuZXJhdGVPYmplY3RJZGVudGlmaWVyPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyVHlwZT4oKTsKIH0KIAogU1dTZXJ2ZXJSZWdpc3RyYXRpb246OlNXU2VydmVyUmVn
aXN0cmF0aW9uKFNXU2VydmVyJiBzZXJ2ZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmIGtleSwgU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlIHVwZGF0ZVZpYUNhY2hlLCBj
b25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmIHNjcmlwdFVSTCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uNWI2MDljNDEzOWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAg
LTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCisKKyNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCisKKyNpbmNsdWRlICJTV1NlcnZlci5oIgorI2luY2x1ZGUgIlNXU2VydmVyV29ya2Vy
LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworc3RhdGljIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgZ2VuZXJh
dGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcigpCit7CisgICAgcmV0dXJuIGdl
bmVyYXRlT2JqZWN0SWRlbnRpZmllcjxTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlm
aWVyVHlwZT4oKTsKK30KKworc3RhdGljIEhhc2hNYXA8U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uSWRlbnRpZmllciwgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4mIGFsbENvbm5lY3Rp
b25zKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25JZGVudGlmaWVyLCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qPj4g
Y29ubmVjdGlvbnM7CisgICAgcmV0dXJuIGNvbm5lY3Rpb25zOworfQorCitTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpCisgICAgOiBtX2lk
ZW50aWZpZXIoZ2VuZXJhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcigpKQor
eworICAgIGF1dG8gcmVzdWx0ID0gYWxsQ29ubmVjdGlvbnMoKS5hZGQobV9pZGVudGlmaWVyLCB0
aGlzKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworfQor
CitTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24oKQoreworICAgIGF1dG8gdGFrZW4gPSBhbGxDb25uZWN0aW9ucygpLnRha2UobV9pZGVudGlm
aWVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHRha2VuLCB0YWtlbiA9IHRoaXMpOworfQorCitTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24qIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29u
bmVjdGlvbkZvcklkZW50aWZpZXIoU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmll
ciBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBhbGxDb25uZWN0aW9ucygpLmdldChpZGVudGlm
aWVyKTsKK30KKworU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQoreworICAgIGlm
IChhbGxDb25uZWN0aW9ucygpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgCisgICAgQVNTRVJUKGFsbENvbm5lY3Rpb25zKCkuc2l6ZSgpID09IDEpOworICAgIHJldHVy
biBhbGxDb25uZWN0aW9ucygpLmJlZ2luKCktPnZhbHVlOworfQorCit2b2lkIFNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoU2VydmljZVdvcmtl
cklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKK3sKKyAgICBpZiAoYXV0byogd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29y
a2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpCisgICAgICAgIHdvcmtl
ci0+c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQobWVzc2FnZSk7Cit9CisKK3ZvaWQgU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzY3JpcHRDb250ZXh0U3RhcnRlZChTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byogd29y
a2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNl
V29ya2VySWRlbnRpZmllcikpCisgICAgICAgIHdvcmtlci0+c2NyaXB0Q29udGV4dFN0YXJ0ZWQo
KTsKK30KKyAgICAKK3ZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRGaW5pc2hJ
bnN0YWxsKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBi
b29sIHdhc1N1Y2Nlc3NmdWwpCit7CisgICAgaWYgKGF1dG8qIHdvcmtlciA9IFNXU2VydmVyV29y
a2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIp
KQorICAgICAgICB3b3JrZXItPmRpZEZpbmlzaEluc3RhbGwod2FzU3VjY2Vzc2Z1bCk7Cit9CisK
K3ZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRGaW5pc2hBY3RpdmF0aW9uKFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQoreworICAgIGlm
IChhdXRvKiB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlm
aWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkKKyAgICAgICAgd29ya2VyLT5kaWRGaW5pc2hB
Y3RpdmF0aW9uKCk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzZXRT
ZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKQoreworICAgIGlmIChh
dXRvKiB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVy
KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkKKyAgICAgICAgd29ya2VyLT5zZXRIYXNQZW5kaW5n
RXZlbnRzKGhhc1BlbmRpbmdFdmVudHMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjRh
NTQ2Y2RhZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNzIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
KworI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlclR5cGVzLmgiCisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1dTZXJ2ZXI7CitzdHJ1Y3QgU2VydmljZVdv
cmtlckNvbnRleHREYXRhOworCitjbGFzcyBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiB7
CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKCk7CisKKyAgICBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVy
IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworICAgIC8vIE1l
c3NhZ2VzIHRvIHRoZSBTVyBob3N0IHByb2Nlc3MKKyAgICB2aXJ0dWFsIHZvaWQgaW5zdGFsbFNl
cnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZmlyZUluc3RhbGxFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmll
cikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcikgPSAwOworCisgICAgLy8gTWVzc2FnZXMgYmFjayBmcm9tIHRoZSBTVyBob3N0
IHByb2Nlc3MKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0
YXJ0KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NyaXB0Q29udGV4dFN0YXJ0ZWQoU2VydmljZVdvcmtlcklk
ZW50aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmluaXNoSW5zdGFsbChTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHMo
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgaGFzUGVuZGluZ0V2ZW50cyk7CisKKyAgICBz
dGF0aWMgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBjb25uZWN0aW9uRm9ySWRlbnRpZmll
cihTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKTsKKworICAgIC8vIEZJWE1F
OiBXaGlsZSB3ZSBvbmx5IGV2ZXIgaGF2ZSBvbmUgU1cgY29udGV4dCBwcm9jZXNzIHRoaXMgbWV0
aG9kIG1ha2VzIHNlbnNlLgorICAgIC8vIE9uY2Ugd2UgaGF2ZSBtdWx0aXBsZSBvbmVzIHRoaXMg
bWV0aG9kIHNob3VsZCBnbyBhd2F5IGZvcmNpbmcgdXNlIG9mIGNvbm5lY3Rpb25Gb3JJZGVudGlm
aWVyKCkKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uKiBnbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7CisKK3Byb3RlY3RlZDoKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKKworcHJpdmF0
ZToKKyAgICBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyIG1faWRlbnRpZmll
cjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKaW5kZXggMTI1YTI2NGY1N2MuLjViYjIzMGNmZjA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyV29ya2VyLmNwcApAQCAtMjgsMjQgKzI4LDY1IEBACiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiAKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1TV1NlcnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIoY29uc3QgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIFdvcmtlclR5cGUgdHlwZSwgU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgaWRlbnRpZmllcikKLSAgICA6IG1fcmVnaXN0cmF0aW9uS2V5KHJlZ2lzdHJhdGlv
bktleSkKK3N0YXRpYyBIYXNoTWFwPFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTV1NlcnZlcldv
cmtlcio+JiBhbGxXb3JrZXJzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1h
cDxTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU1dTZXJ2ZXJXb3JrZXIqPj4gd29ya2VyczsKKyAg
ICByZXR1cm4gd29ya2VyczsKK30KKworU1dTZXJ2ZXJXb3JrZXIqIFNXU2VydmVyV29ya2VyOjpl
eGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllcikKK3sKKyAgICByZXR1cm4gYWxsV29ya2VycygpLmdldChpZGVudGlmaWVyKTsKK30KKwor
U1dTZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKFNXU2VydmVyJiBzZXJ2ZXIsIGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uSWRlbnRpZmllciBjb250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIsIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgV29ya2VyVHlwZSB0eXBlLCBTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIDogbV9zZXJ2ZXIoc2VydmVyKQor
ICAgICwgbV9yZWdpc3RyYXRpb25LZXkocmVnaXN0cmF0aW9uS2V5KQorICAgICwgbV9jb250ZXh0
Q29ubmVjdGlvbklkZW50aWZpZXIoY29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKQogICAgICwg
bV9zY3JpcHRVUkwodXJsKQogICAgICwgbV9zY3JpcHQoc2NyaXB0KQogICAgICwgbV9pZGVudGlm
aWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKKyAgICBhdXRvIHJlc3VsdCA9
IGFsbFdvcmtlcnMoKS5hZGQoaWRlbnRpZmllciwgdGhpcyk7CisgICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotU1dTZXJ2ZXJXb3JrZXI6On5TV1NlcnZl
cldvcmtlcigpID0gZGVmYXVsdDsKK1NXU2VydmVyV29ya2VyOjp+U1dTZXJ2ZXJXb3JrZXIoKQor
eworICAgIGF1dG8gdGFrZW4gPSBhbGxXb3JrZXJzKCkudGFrZShtX2lkZW50aWZpZXIpOworICAg
IEFTU0VSVF9VTlVTRUQodGFrZW4sIHRha2VuID09IHRoaXMpOworfQogCiB2b2lkIFNXU2VydmVy
V29ya2VyOjp0ZXJtaW5hdGUoKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKIH0KIAordm9p
ZCBTV1NlcnZlcldvcmtlcjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQoreworICAgIG1fc2VydmVyLnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KCp0
aGlzLCBtZXNzYWdlKTsKK30KKwordm9pZCBTV1NlcnZlcldvcmtlcjo6c2NyaXB0Q29udGV4dFN0
YXJ0ZWQoKQoreworICAgIG1fc2VydmVyLnNjcmlwdENvbnRleHRTdGFydGVkKCp0aGlzKTsKK30K
Kwordm9pZCBTV1NlcnZlcldvcmtlcjo6ZGlkRmluaXNoSW5zdGFsbChib29sIHdhc1N1Y2Nlc3Nm
dWwpCit7CisgICAgbV9zZXJ2ZXIuZGlkRmluaXNoSW5zdGFsbCgqdGhpcywgd2FzU3VjY2Vzc2Z1
bCk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXJXb3JrZXI6OmRpZEZpbmlzaEFjdGl2YXRpb24oKQorewor
ICAgIG1fc2VydmVyLmRpZEZpbmlzaEFjdGl2YXRpb24oKnRoaXMpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2Vy
LmgKaW5kZXggMWE2ODFlYjI5Y2UuLjM4YjBiNDdhY2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBAIC0zNSwx
MyArMzUsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTV1NlcnZlcjsKIGVu
dW0gY2xhc3MgV29ya2VyVHlwZTsKIAogY2xhc3MgU1dTZXJ2ZXJXb3JrZXIgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8U1dTZXJ2ZXJXb3JrZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFNXU2VydmVyV29ya2VyPiBjcmVhdGUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBzY3Jp
cHQsIFdvcmtlclR5cGUgdHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxTV1NlcnZlcldvcmtl
cj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU1dTZXJ2ZXJXb3JrZXIocmVnaXN0cmF0aW9uS2V5LCB1cmwsIHNjcmlwdCwgdHlwZSwg
aWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTV1NlcnZlcldvcmtl
cihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKICAgICB9CiAgICAgCiAgICAgU1dTZXJ2
ZXJXb3JrZXIoY29uc3QgU1dTZXJ2ZXJXb3JrZXImKSA9IGRlbGV0ZTsKQEAgLTQ5LDExICs1MCwx
NCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHRlcm1pbmF0ZSgpOwogCisgICAgU1dTZXJ2ZXImIHNl
cnZlcigpOworICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJh
dGlvbktleSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmF0aW9uS2V5OyB9CiAgICAgY29uc3Qg
VVJMJiBzY3JpcHRVUkwoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFVSTDsgfQogICAgIGNvbnN0
IFN0cmluZyYgc2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHQ7IH0KICAgICBXb3JrZXJU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAgIFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAg
ICBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyIGNvbnRleHRDb25uZWN0aW9u
SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVy
OyB9CiAKICAgICBTZXJ2aWNlV29ya2VyU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0
YXRlOyB9CiAgICAgdm9pZCBzZXRTdGF0ZShTZXJ2aWNlV29ya2VyU3RhdGUgc3RhdGUpIHsgbV9z
dGF0ZSA9IHN0YXRlOyB9CkBAIC02MSwxMCArNjUsMTkgQEAgcHVibGljOgogICAgIGJvb2wgaGFz
UGVuZGluZ0V2ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzUGVuZGluZ0V2ZW50czsgfQogICAg
IHZvaWQgc2V0SGFzUGVuZGluZ0V2ZW50cyhib29sIHZhbHVlKSB7IG1faGFzUGVuZGluZ0V2ZW50
cyA9IHZhbHVlOyB9CiAKKyAgICB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0
IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBzY3JpcHRDb250ZXh0U3RhcnRlZCgpOworICAg
IHZvaWQgZGlkRmluaXNoSW5zdGFsbChib29sIHdhc1N1Y2Nlc3NmdWwpOworICAgIHZvaWQgZGlk
RmluaXNoQWN0aXZhdGlvbigpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNXU2VydmVy
V29ya2VyKiBleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIpOworCiBwcml2YXRlOgotICAgIFNXU2VydmVyV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgV29ya2Vy
VHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIFNXU2VydmVyV29ya2VyKFNXU2Vy
dmVyJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0
LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAKKyAgICBTV1NlcnZlciYg
bV9zZXJ2ZXI7CiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBtX3JlZ2lzdHJhdGlv
bktleTsKKyAgICBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyIG1fY29udGV4
dENvbm5lY3Rpb25JZGVudGlmaWVyOwogICAgIFVSTCBtX3NjcmlwdFVSTDsKICAgICBTdHJpbmcg
bV9zY3JpcHQ7CiAgICAgU2VydmljZVdvcmtlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBiNTdhMjgxN2M2MS4uYjMzOTZlMzIzN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjgg
QEAKKzIwMTctMTEtMTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIE1hc3NpdmUgIlNlcnZlci1wcm9jZXNzLXRvLWNvbnRleHQtcHJvY2VzcyIgY29ubmVjdGlv
biBvdmVyaGF1bC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3OTU1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aDoKKworICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpz
ZW5kVG9Db250ZXh0UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVj
dGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpmaXJlSW5zdGFsbEV2ZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpmaXJlQWN0aXZhdGVFdmVu
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2V0
Q29udGV4dENvbm5lY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmg6CisKKyAgICAgICAgKiBTdG9yYWdl
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuY3BwLgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3Nh
Z2VTZW5kZXJEZXN0aW5hdGlvbklEKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZpcmVJ
bnN0YWxsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OmZpcmVBY3RpdmF0ZUV2ZW50KToKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclR5cGVzLmguCisgICAg
ICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjppcGNDb25uZWN0
aW9uIGNvbnN0KToKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjogQ29waWVkIGZyb20gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4uCisKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpkaWRDbG9zZSk6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpnbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6ZGlkR2V0V29ya2Vy
Q29udGV4dFByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nl
c3M6OndvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rp
b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6c2VydmljZVdv
cmtlckNvbnRleHRGYWlsZWRUb1N0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZVByb2Nlc3M6OnNlcnZpY2VXb3JrZXJDb250ZXh0U3RhcnRlZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpkaWRGaW5pc2hTZXJ2aWNlV29ya2VySW5zdGFs
bCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpkaWRGaW5pc2hT
ZXJ2aWNlV29ya2VyQWN0aXZhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VQcm9jZXNzOjpzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyk6IERlbGV0ZWQuCisg
ICAgICAgICogU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaDoKKyAgICAgICAgKiBTdG9y
YWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIFN0b3Jh
Z2VQcm9jZXNzL1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmVzdGFibGlz
aFNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUb1dlYlByb2Nl
c3NDb25uZWN0aW9uOjp3b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb25DcmVhdGVkKToKKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpp
bnN0YWxsU2VydmljZVdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpzZXJ2aWNlV29ya2VyU3RhcnRlZFdpdGhNZXNzYWdlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpcmVJbnN0YWxsRXZlbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZmlyZUFj
dGl2YXRlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6ZGlkRmluaXNoSW5zdGFsbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uOjpkaWRGaW5pc2hBY3RpdmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5n
RXZlbnRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisKIDIwMTctMTEtMTMgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgIlNlcnZpY2UgV29ya2Vy
IEhhcyBObyBQZW5kaW5nIEV2ZW50cyIgLyAiVXBkYXRlIFNlcnZpY2UgV29ya2VyIEV4dGVuZGVk
IEV2ZW50cyBTZXQiIGFsZ29yaXRobXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA0
MzliMWVlOGY4OS4uZDcyMWMwYjE4Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAg
LTE2NCw2ICsxNjQsNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBXZWJTV0NsaWVudENv
bm5lY3Rpb24gXAogICAgIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIFwKICAgICBXZWJT
V1NlcnZlckNvbm5lY3Rpb24gXAorICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBc
CiAgICAgUGxheWJhY2tTZXNzaW9uTWFuYWdlciBcCiAgICAgUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5IFwKICAgICBXZWJQcm9jZXNzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggOThkOTdhZGZjODQuLmU5OWNiNmRkODFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNDIsNiArNDIs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1N0b3JlZENyZWRlbnRpYWxzUG9saWN5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Xb3JrZXJUeXBl
Lmg+CiAKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTW9ub3RvbmljVGltZTsKQEAgLTc5Nyw2ICs3
OTgsMTQgQEAgdGVtcGxhdGUgPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3k+IHsKICAgICA+OwogfTsKIAordGVtcGxhdGUgPD4gc3RydWN0IEVudW1U
cmFpdHM8V2ViQ29yZTo6V29ya2VyVHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1
ZXM8CisgICAgICAgIFdlYkNvcmU6OldvcmtlclR5cGUsCisgICAgICAgIFdlYkNvcmU6Oldvcmtl
clR5cGU6OkNsYXNzaWMsCisgICAgICAgIFdlYkNvcmU6OldvcmtlclR5cGU6Ok1vZHVsZQorICAg
ID47Cit9OworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogdGVtcGxhdGUgPD4gc3RydWN0
IEVudW1UcmFpdHM8V2ViQ29yZTo6U2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlPiB7CiAgICAg
dXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3Rv
cmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5jcHAKaW5kZXggNmJjNTg5YTk1NzIuLjZmYWZmNDgxNGI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV09y
aWdpblN0b3JlLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJX
ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0
aW9uRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KQEAgLTExMSwy
NCArMTEyLDYgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnVwZGF0ZVdvcmtlclN0YXRl
SW5DbGllbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgd28KICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJTV0NsaWVudENvbm5lY3Rpb246OlVwZGF0ZVdvcmtlclN0YXRlKHdvcmtlciwgc3RhdGUpKTsK
IH0KIAotdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29ya2VyQ29u
dGV4dChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEpCi17Ci0gICAgaWYgKHNl
bmRUb0NvbnRleHRQcm9jZXNzKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6SW5zdGFsbFNlcnZpY2VXb3JrZXIoaWRlbnRpZmllcigpLCBkYXRhKSkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIG1fcGVuZGluZ0NvbnRleHREYXRhcy5hcHBlbmQoZGF0YSk7Ci19Ci0KLXZv
aWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpmaXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQotewotICAgIHNlbmRUb0NvbnRleHRQ
cm9jZXNzKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6RmlyZUluc3Rh
bGxFdmVudChpZGVudGlmaWVyKCksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSk7Ci19Ci0KLXZv
aWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKLXsKLSAgICBzZW5kVG9Db250ZXh0
UHJvY2VzcyhNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkZpcmVBY3Rp
dmF0ZUV2ZW50KGlkZW50aWZpZXIoKSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIpKTsKLX0KLQog
dm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2godWludDY0X3QgZmV0Y2hJZGVu
dGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyPiBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBGZXRj
aE9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgc2VuZFRvQ29udGV4dFByb2Nlc3MoTWVzc2FnZXM6
OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTdGFydEZldGNoKGlkZW50aWZpZXIoKSwg
ZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9u
cykpOwpAQCAtMTc5LDI1ICsxNjIsMTIgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246Om1h
dGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdEkKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJTV0NsaWVudENvbm5lY3Rpb246OkRpZE1hdGNoUmVnaXN0cmF0aW9u
IHsgcmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpudWxsb3B0IH0pOwog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2Vu
ZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1lc3NhZ2UpCit0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lk
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2VuZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1lc3NhZ2Up
CiB7Ci0gICAgaWYgKCFtX2NvbnRleHRDb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICByZXR1cm4gbV9jb250ZXh0Q29ubmVjdGlvbi0+c2VuZDxVPihXVEZNb3ZlKG1lc3Nh
Z2UpLCAwKTsKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IFN0b3JhZ2VQcm9jZXNzOjpzaW5n
bGV0b24oKS5nbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkpCisgICAgICAgIGNvbm5l
Y3Rpb24tPnNlbmQoV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjpzZXRDb250ZXh0Q29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24p
Ci17Ci0gICAgbV9jb250ZXh0Q29ubmVjdGlvbiA9IGNvbm5lY3Rpb247Ci0KLSAgICAvLyBXZSBj
YW4gbm93IHN0YXJ0IGFueSBwZW5kaW5nIHNlcnZpY2Ugd29ya2VyIHVwZGF0ZXMuCi0gICAgZm9y
IChhdXRvJiBwZW5kaW5nQ29udGV4dERhdGEgOiBtX3BlbmRpbmdDb250ZXh0RGF0YXMpCi0gICAg
ICAgIGluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChwZW5kaW5nQ29udGV4dERhdGEpOwotICAg
IAotICAgIG1fcGVuZGluZ0NvbnRleHREYXRhcy5jbGVhcigpOwotfQotICAgIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggN2YxY2Q1MWVjZjEuLmI4MGIzYmZkNDdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCkBAIC00Niw3ICs0Niw2IEBA
IHB1YmxpYzoKICAgICB+V2ViU1dTZXJ2ZXJDb25uZWN0aW9uKCkgZmluYWw7CiAKICAgICB2b2lk
IGRpc2Nvbm5lY3RlZEZyb21XZWJQcm9jZXNzKCk7Ci0gICAgdm9pZCBzZXRDb250ZXh0Q29ubmVj
dGlvbihJUEM6OkNvbm5lY3Rpb24qKTsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCiAgICAgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KQEAgLTc1LDIyICs3NCwx
NSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBtYXRjaFJlZ2lzdHJhdGlvbih1aW50NjRfdCByZWdp
c3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpVUkwmIGNsaWVudFVSTCk7CiAKLSAgICAvLyBNZXNz
YWdlcyB0byB0aGUgU1cgY29udGV4dCBXZWJQcm9jZXNzCi0gICAgdm9pZCBpbnN0YWxsU2Vydmlj
ZVdvcmtlckNvbnRleHQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJikg
ZmluYWw7Ci0gICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKLQogICAgIElQQzo6Q29ubmVjdGlvbiogbWVz
c2FnZVNlbmRlckNvbm5lY3Rpb24oKSBmaW5hbCB7IHJldHVybiBtX2NvbnRlbnRDb25uZWN0aW9u
LnB0cigpOyB9CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBmaW5h
bCB7IHJldHVybiBpZGVudGlmaWVyKCk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJv
b2wgc2VuZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1lc3NhZ2UpOwogICAgIAorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFU+IHZvaWQgc2VuZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1lc3NhZ2UpOworCiAg
ICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9u
PiBtX2NvbnRlbnRDb25uZWN0aW9uOwogICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29u
dGV4dENvbm5lY3Rpb247Ci0gICAgCi0gICAgRGVxdWU8V2ViQ29yZTo6U2VydmljZVdvcmtlckNv
bnRleHREYXRhPiBtX3BlbmRpbmdDb250ZXh0RGF0YXM7CiB9OyAvLyBjbGFzcyBXZWJTV1NlcnZl
ckNvbm5lY3Rpb24KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi5hOGM1OWVlOTk5MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCisK
KyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCisgICAg
OiBtX2lwY0Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKK3sKK30KKworSVBDOjpDb25u
ZWN0aW9uKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uKCkKK3sKKyAgICByZXR1cm4gbV9pcGNDb25uZWN0aW9uLnB0cigpOworfQorCit1aW50
NjRfdCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJEZXN0aW5h
dGlvbklEKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OmNvbm5lY3Rpb25DbG9zZWQoKQoreworICAgIC8vIEZJWE1FOiBEbyB3aGF0
IGhlcmUuLi4/Cit9CisKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjppbnN0
YWxsU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBk
YXRhKQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpJbnN0YWxsU2VydmljZVdvcmtlcihkYXRhKSk7Cit9CisKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpmaXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpGaXJlSW5zdGFsbEV2ZW50KHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKSk7Cit9CisKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaXJl
QWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6RmlyZUFjdGl2YXRlRXZlbnQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjMwYmQ4Mzg0YjJhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIDogcHVibGljIFdl
YkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2FnZVNl
bmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoKTsKKwor
ICAgIElQQzo6Q29ubmVjdGlvbiogaXBjQ29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXBj
Q29ubmVjdGlvbi5wdHIoKTsgfQorCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZp
bmFsOworCitwcml2YXRlOgorICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihSZWY8
SVBDOjpDb25uZWN0aW9uPiYmKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlcgorICAgIElQ
Qzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBmaW5hbDsKKyAgICB1aW50
NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGZpbmFsOworCisgICAgLy8gTWVzc2Fn
ZXMgdG8gdGhlIFNXIGhvc3QgV2ViUHJvY2VzcworICAgIHZvaWQgaW5zdGFsbFNlcnZpY2VXb3Jr
ZXJDb250ZXh0KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpIGZpbmFs
OworICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllcikgZmluYWw7CisgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllcikgZmluYWw7CisgICAgCisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4g
bV9pcGNDb25uZWN0aW9uOworICAgIAorfTsgLy8gY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uOWRjOGMxNjNiNDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworbWVzc2Fn
ZXMgLT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIHsKKyAgICAjIFdoZW4gcG9zc2li
bGUsIHRoZXNlIG1lc3NhZ2VzIGNhbiBiZSBpbXBsZW1lbnRlZCBkaXJlY3RseSBieSBXZWJDb3Jl
OjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24KKworICAgIFNjcmlwdENvbnRleHRGYWlsZWRU
b1N0YXJ0KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cmlu
ZyBtZXNzYWdlKTsKKyAgICBTY3JpcHRDb250ZXh0U3RhcnRlZChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBpZGVudGlmaWVyKTsKKyAgICBEaWRGaW5pc2hJbnN0YWxsKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCk7
CisgICAgRGlkRmluaXNoQWN0aXZhdGlvbihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBpZGVudGlmaWVyKTsKKyAgICBTZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9v
bCBoYXNQZW5kaW5nRXZlbnRzKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAK
aW5kZXggMTllN2QwMGNhNWEuLmUxYzQ3ZDZmOWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcApAQCAtMzMsMTAgKzMzLDEyIEBACiAjaW5j
bHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViU1dPcmlnaW5TdG9y
ZS5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JREJLZXlE
YXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvU1dTZXJ2ZXJXb3JrZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2lu
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVGV4dEVuY29kaW5nLmg+CkBAIC00NCw2ICs0NiwxMCBAQAogI2lu
Y2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFRhc2suaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorI2luY2x1ZGUgIldlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzksOCArODUsOSBAQCBib29sIFN0b3Jh
Z2VQcm9jZXNzOjpzaG91bGRUZXJtaW5hdGUoKQogdm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlkQ2xv
c2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKLSAgICBpZiAobV93b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPT0gJmNvbm5l
Y3Rpb24pIHsKLSAgICAgICAgbV93b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPSBudWxs
cHRyOworICAgIGlmIChtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gJiYgbV9zZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLT5pcGNDb25uZWN0aW9uKCkgPT0gJmNvbm5lY3Rpb24pIHsKKyAgICAg
ICAgbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2VkKCk7CisgICAg
ICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAjZWxzZQpAQCAtOTgsNiArMTA1LDE2IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6
OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNv
ZGVyCiAgICAgICAgIGRpZFJlY2VpdmVTdG9yYWdlUHJvY2Vzc01lc3NhZ2UoY29ubmVjdGlvbiwg
ZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkg
eworICAgICAgICBpZiAoYXV0byogc3dDb25uZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjpnbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkpIHsKKyAgICAgICAgICAg
IGF1dG8qIHdlYlNXQ29ubmVjdGlvbiA9IHN0YXRpY19jYXN0PFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbio+KHN3Q29ubmVjdGlvbik7CisgICAgICAgICAgICB3ZWJTV0Nvbm5lY3Rpb24t
PmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICAgICAgcmV0
dXJuOyAgICAgICAgCisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKIH0KIAogI2lmIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQpAQCAtMzUxLDE3ICszNjgsMTcgQEAgU1dTZXJ2ZXImIFN0b3JhZ2VQ
cm9jZXNzOjpzd1NlcnZlckZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAg
IHJldHVybiAqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIAotSVBDOjpDb25uZWN0aW9uKiBT
dG9yYWdlUHJvY2Vzczo6d29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKCkKK1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbiogU3RvcmFnZVByb2Nlc3M6Omdsb2JhbFNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24oKQogewotICAgIHJldHVybiBtX3dvcmtlckNvbnRleHRQcm9jZXNzQ29u
bmVjdGlvbi5nZXQoKTsKKyAgICByZXR1cm4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmdl
dCgpOwogfQogCi12b2lkIFN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVXb3JrZXJDb250ZXh0UHJvY2Vz
c0Nvbm5lY3Rpb24oKQordm9pZCBTdG9yYWdlUHJvY2Vzczo6Y3JlYXRlU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbigpCiB7Ci0gICAgaWYgKG1fd2FpdGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNz
Q29ubmVjdGlvbikKKyAgICBpZiAobV93YWl0aW5nRm9yU2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nv
bm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX3dhaXRpbmdGb3JXb3JrZXJD
b250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPSB0cnVlOworICAgIG1fd2FpdGluZ0ZvclNlcnZlclRv
Q29udGV4dFByb2Nlc3NDb25uZWN0aW9uID0gdHJ1ZTsKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpHZXRXb3JrZXJDb250
ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oKSwgMCk7CiB9CiAKQEAgLTM4Miw4ICszOTksOCBAQCBXZWJT
V09yaWdpblN0b3JlKiBTdG9yYWdlUHJvY2Vzczo6c3dPcmlnaW5TdG9yZUZvclNlc3Npb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbgogCiB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaWRHZXRXb3JrZXJD
b250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50JiYgZW5jb2RlZENvbm5lY3Rp
b25JZGVudGlmaWVyKQogewotICAgIEFTU0VSVChtX3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0UHJv
Y2Vzc0Nvbm5lY3Rpb24pOwotICAgIG1fd2FpdGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29u
bmVjdGlvbiA9IGZhbHNlOworICAgIEFTU0VSVChtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQ
cm9jZXNzQ29ubmVjdGlvbik7CisgICAgbV93YWl0aW5nRm9yU2VydmVyVG9Db250ZXh0UHJvY2Vz
c0Nvbm5lY3Rpb24gPSBmYWxzZTsKIAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAg
IElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciA9IGVuY29k
ZWRDb25uZWN0aW9uSWRlbnRpZmllci5yZWxlYXNlRmlsZURlc2NyaXB0b3IoKTsKQEAgLTM5OCwy
NSArNDE1LDE0IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZEdldFdvcmtlckNvbnRleHRQcm9j
ZXNzQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQmJiBlbmNvCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBtX3dvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9IElQQzo6Q29ubmVj
dGlvbjo6Y3JlYXRlQ2xpZW50Q29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwgKnRoaXMp
OwotICAgIG1fd29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uLT5vcGVuKCk7CisgICAgYXV0
byBpcGNDb25uZWN0aW9uID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVDbGllbnRDb25uZWN0aW9u
KGNvbm5lY3Rpb25JZGVudGlmaWVyLCAqdGhpcyk7CisgICAgaXBjQ29ubmVjdGlvbi0+b3Blbigp
OworICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiA9IFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6Y3JlYXRlKFdURk1vdmUoaXBjQ29ubmVjdGlvbikpOwogICAgIAogICAgIGZv
ciAoYXV0byYgY29ubmVjdGlvbiA6IG1fc3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25zKQog
ICAgICAgICBjb25uZWN0aW9uLT53b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb25DcmVhdGVk
KCk7CiB9CiAKLXZvaWQgU3RvcmFnZVByb2Nlc3M6OnNlcnZpY2VXb3JrZXJDb250ZXh0RmFpbGVk
VG9TdGFydCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQot
ewotICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbV9zd1NlcnZlckNvbm5lY3Rpb25zLmdldChz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpCi0gICAgICAgIGNvbm5lY3Rpb24tPnNjcmlwdENv
bnRleHRGYWlsZWRUb1N0YXJ0KHJlZ2lzdHJhdGlvbktleSwgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIG1lc3NhZ2UpOwotfQotCi12b2lkIFN0b3JhZ2VQcm9jZXNzOjpzZXJ2aWNlV29ya2VyQ29u
dGV4dFN0YXJ0ZWQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgU2VydmljZVdvcmtl
cklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCi17Ci0gICAgaWYgKGF1dG8qIGNv
bm5lY3Rpb24gPSBtX3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0KHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyKSkKLSAgICAgICAgY29ubmVjdGlvbi0+c2NyaXB0Q29udGV4dFN0YXJ0ZWQocmVnaXN0
cmF0aW9uS2V5LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci19Ci0KIHZvaWQgU3RvcmFnZVBy
b2Nlc3M6OmRpZEZhaWxGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
dWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKQogewogICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0g
bV9zd1NlcnZlckNvbm5lY3Rpb25zLmdldChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpCkBA
IC00NTMsMjUgKzQ1OSw2IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OnBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJCiAgICAgICAgIGNvbm5l
Y3Rpb24tPnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGRlc3RpbmF0aW9uSWRlbnRp
Zmllci5zY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgbWVzc2FnZSwgc291cmNlSWRl
bnRpZmllciwgc291cmNlT3JpZ2luKTsKIH0KIAotdm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlkRmlu
aXNoU2VydmljZVdvcmtlckluc3RhbGwodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwg
U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2Fz
U3VjY2Vzc2Z1bCkKLXsKLSAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1fc3dTZXJ2ZXJDb25u
ZWN0aW9ucy5nZXQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKQotICAgICAgICBjb25uZWN0
aW9uLT5kaWRGaW5pc2hJbnN0YWxsKHJlZ2lzdHJhdGlvbktleSwgc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIHdhc1N1Y2Nlc3NmdWwpOwotfQotCi12b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaWRGaW5p
c2hTZXJ2aWNlV29ya2VyQWN0aXZhdGlvbih1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5
LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKLXsKLSAg
ICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5nZXQoc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIpKQotICAgICAgICBjb25uZWN0aW9uLT5kaWRGaW5pc2hBY3Rp
dmF0aW9uKHJlZ2lzdHJhdGlvbktleSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotfQotCi0K
LXZvaWQgU3RvcmFnZVByb2Nlc3M6OnNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKHVp
bnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKQotewotICAg
IGlmIChhdXRvKiBjb25uZWN0aW9uID0gbV9zd1NlcnZlckNvbm5lY3Rpb25zLmdldChzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllcikpCi0gICAgICAgIGNvbm5lY3Rpb24tPnNldFNlcnZpY2VXb3Jr
ZXJIYXNQZW5kaW5nRXZlbnRzKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBoYXNQZW5kaW5nRXZl
bnRzKTsKLX0KLQogdm9pZCBTdG9yYWdlUHJvY2Vzczo6cmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rp
b24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewogICAgIEFTU0VSVCghbV9z
d1NlcnZlckNvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKaW5kZXggZWE1
NTAzNDU0YjkuLjk4OWYxMTAwNWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TdG9yYWdlUHJvY2Vzcy5oCkBAIC00Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjsKIGNsYXNzIFdlYlNXU2VydmVy
Q29ubmVjdGlvbjsKK2NsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKIGVudW0g
Y2xhc3MgV2Vic2l0ZURhdGFUeXBlOwogc3RydWN0IFN0b3JhZ2VQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOwogCkBAIC04MCw4ICs4MSwxMCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKLSAgICBJUEM6OkNvbm5lY3Rpb24qIHdvcmtlckNvbnRleHRQcm9j
ZXNzQ29ubmVjdGlvbigpOwotICAgIHZvaWQgY3JlYXRlV29ya2VyQ29udGV4dFByb2Nlc3NDb25u
ZWN0aW9uKCk7CisgICAgLy8gRm9yIG5vdyB3ZSBqdXN0IGhhdmUgb25lIGdsb2JhbCBjb25uZWN0
aW9uIHRvIHNlcnZpY2Ugd29ya2VyIGNvbnRleHQgcHJvY2Vzc2VzLgorICAgIC8vIFRoaXMgd2ls
bCBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4KKyAgICBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24qIGdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKKyAgICB2b2lkIGNyZWF0ZVNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKIAogICAgIFdlYlNXT3JpZ2luU3RvcmUmIGVuc3Vy
ZVNXT3JpZ2luU3RvcmVGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKICAgICBXZWJTV09yaWdp
blN0b3JlKiBzd09yaWdpblN0b3JlRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCkgY29uc3Q7CkBA
IC0xMTksOCArMTIyLDYgQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKICAgICB2b2lkIGRpZEdldFdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbihJUEM6
OkF0dGFjaG1lbnQmJiBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIpOwotICAgIHZvaWQgc2Vy
dmljZVdvcmtlckNvbnRleHRGYWlsZWRUb1N0YXJ0KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jiwg
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7
Ci0gICAgdm9pZCBzZXJ2aWNlV29ya2VyQ29udGV4dFN0YXJ0ZWQodWludDY0X3Qgc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAKICAgICB2b2lkIGRp
ZFJlY2VpdmVGZXRjaFJlc3BvbnNlKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVGZXRjaERhdGEodWludDY0X3Qgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CkBAIC0xMjgsOSArMTI5LDYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZhaWxGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZE5v
dEhhbmRsZUZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRf
dCBmZXRjaElkZW50aWZpZXIpOwogCi0gICAgdm9pZCBkaWRGaW5pc2hTZXJ2aWNlV29ya2VySW5z
dGFsbCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpOwotICAgIHZvaWQgZGlkRmluaXNoU2VydmljZVdv
cmtlckFjdGl2YXRpb24odWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllcik7Ci0gICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2
ZW50cyh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgaGFzUGVuZGluZ0V2ZW50cyk7CiAgICAgdm9pZCBwb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJj
ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKICNlbmRpZgogI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQpAQCAtMTU4LDggKzE1Niw4IEBAIHByaXZhdGU6CiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZGlkQ3JlYXRlV29ya2VyQ29udGV4dFBy
b2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6QXR0YWNobWVudCYpOwogCi0gICAgUmVmUHRyPElQ
Qzo6Q29ubmVjdGlvbj4gbV93b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb247Ci0gICAgYm9v
bCBtX3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24geyBmYWxzZSB9Owor
ICAgIFJlZlB0cjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+IG1fc2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjsKKyAgICBib29sIG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFByb2Nl
c3NDb25uZWN0aW9uIHsgZmFsc2UgfTsKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1dTZXJ2ZXI+PiBtX3N3U2VydmVyczsKICAgICBIYXNoTWFw
PHVpbnQ2NF90LCBXZWJTV1NlcnZlckNvbm5lY3Rpb24qPiBtX3N3U2VydmVyQ29ubmVjdGlvbnM7
CiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHRyPFdlYlNXT3JpZ2lu
U3RvcmU+PiBtX3N3T3JpZ2luU3RvcmVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU3Rv
cmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggM2I2ZDMzOTM2ZTgu
LjA1NzQ5MDIzM2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0
b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nl
c3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTM4LDEyICszOCw2IEBAIG1lc3NhZ2Vz
IC0+IFN0b3JhZ2VQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAgICAgRGlkR2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKElQQzo6QXR0
YWNobWVudCBjb25uZWN0aW9uSGFuZGxlKQogCi0gICAgU2VydmljZVdvcmtlckNvbnRleHRGYWls
ZWRUb1N0YXJ0KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlvbktleSwgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFN0cmluZyBtZXNz
YWdlKQotICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0U3RhcnRlZCh1aW50NjRfdCBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBy
ZWdpc3RyYXRpb25LZXksIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKQotICAgIERpZEZpbmlzaFNlcnZpY2VXb3JrZXJJbnN0YWxsKHVpbnQ2
NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlvbktleSwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCk7Ci0gICAg
RGlkRmluaXNoU2VydmljZVdvcmtlckFjdGl2YXRpb24odWludDY0X3Qgc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgcmVnaXN0
cmF0aW9uS2V5LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcik7Ci0gICAgU2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHModWludDY0
X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIGhhc1BlbmRpbmdFdmVudHMpOwot
CiAgICAgRGlkTm90SGFuZGxlRmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcikKICAgICBEaWRGYWlsRmV0Y2godWludDY0X3Qg
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcikKICAg
ICBEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
IHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9y
YWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA0NTQ1YmM0YTI1Mi4u
OWIwOTc3ODUzZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3Rv
cmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZVByb2Nlc3MvU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0zNSw2ICszNSwx
MSBAQAogI2luY2x1ZGUgIldlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyNpbmNsdWRl
ICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFj
ZSBQQUw7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtODUsNiArOTAsMTEgQEAgdm9p
ZCBTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW8KICAgICAgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS0+ZGlkUmVj
ZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6Oldl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Cisg
ICAgICAgIFN0b3JhZ2VQcm9jZXNzOjpzaW5nbGV0b24oKS5nbG9iYWxTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKCktPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAg
ICAgICByZXR1cm47CisgICAgfQogI2VuZGlmCiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
QEAgLTE0OCwxMCArMTU4LDggQEAgdm9pZCBTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6
ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFNlc3Npb25JRCBzZXNzaW8KIAogICAgIFN0b3Jh
Z2VQcm9jZXNzOjpzaW5nbGV0b24oKS5yZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbigqKGNvbm5l
Y3Rpb25SZXN1bHQuaXRlcmF0b3ItPnZhbHVlKSk7CiAKLSAgICBpZiAoYXV0byogY29ubmVjdGlv
biA9IFN0b3JhZ2VQcm9jZXNzOjpzaW5nbGV0b24oKS53b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5l
Y3Rpb24oKSkKLSAgICAgICAgY29ubmVjdGlvblJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPnNldENv
bnRleHRDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwotICAgIGVsc2UKLSAgICAgICAgU3RvcmFnZVBy
b2Nlc3M6OnNpbmdsZXRvbigpLmNyZWF0ZVdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbigp
OworICAgIGlmICghU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLmdsb2JhbFNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24oKSkKKyAgICAgICAgU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLmNy
ZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKIH0KIAogdm9pZCBTdG9yYWdlVG9XZWJQ
cm9jZXNzQ29ubmVjdGlvbjo6cmVtb3ZlU1dTZXJ2ZXJDb25uZWN0aW9uKHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyKQpAQCAtMTY1LDExICsxNzMsOCBAQCB2b2lkIFN0b3JhZ2VU
b1dlYlByb2Nlc3NDb25uZWN0aW9uOjpyZW1vdmVTV1NlcnZlckNvbm5lY3Rpb24odWludDY0X3Qg
c2VydmVyQ29ubgogCiB2b2lkIFN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjp3b3JrZXJD
b250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb25DcmVhdGVkKCkKIHsKLSAgICBhdXRvKiBpcGNDb25uZWN0
aW9uID0gU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLndvcmtlckNvbnRleHRQcm9jZXNzQ29u
bmVjdGlvbigpOwotICAgIEFTU0VSVChpcGNDb25uZWN0aW9uKTsKLQotICAgIGZvciAoYXV0byYg
c3dDb25uZWN0aW9uIDogbV9zd0Nvbm5lY3Rpb25zLnZhbHVlcygpKQotICAgICAgICBzd0Nvbm5l
Y3Rpb24tPnNldENvbnRleHRDb25uZWN0aW9uKGlwY0Nvbm5lY3Rpb24pOworICAgIGZvciAoYXV0
byogc2VydmVyIDogU1dTZXJ2ZXI6OmFsbFNlcnZlcnMoKSkKKyAgICAgICAgc2VydmVyLT5zZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uQ3JlYXRlZCgpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDEzY2ZiN2ZhM2Zh
Li4wZTc3OGEwYTBkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xMDE5LDYgKzEwMTksOCBAQAogCQk1MTRCREVEMzE2Qzk4RUREMDBF
NEUyNUUgLyogU3RhdGlzdGljc1JlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEJERUQyMTZDOThFREQwMEU0RTI1RSAvKiBTdGF0aXN0aWNz
UmVxdWVzdC5oICovOyB9OwogCQk1MTREOUY1NzE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXND
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTREOUY1NTE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLmggKi87IH07
CiAJCTUxNEQ5RjU4MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTREOUY1NjE5MTE5
RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLm1tICovOyB9OworCQk1MTUyNjJCQzFG
Qjk1MTVEMDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNTI2MkJC
MUZCOTUxMzEwMDcwRTU3OSAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdl
cy5oICovOyB9OworCQk1MTUyNjJCRDFGQjk1MTYxMDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNTI2MkJBMUZCOTUxMzEwMDcwRTU3OSAvKiBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1
MTU3OEI4MzEyMDlFQ0VGMDBBMzdDNEEgLyogQVBJRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1NzhCODIxMjA5RUNFRjAwQTM3QzRBIC8qIEFQ
SURhdGEuaCAqLzsgfTsKIAkJNTE1QkUxNzcxRDUzRkU4NzAwREQ3QzY4IC8qIFdlYkdhbWVwYWRQ
cm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTVCRTE3MzFENTNGRERDMDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmNwcCAqLzsg
fTsKIAkJNTE1QkUxNzkxRDUzRkU4RjAwREQ3QzY4IC8qIFdlYkdhbWVwYWRQcm92aWRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1QkUxNzQxRDUz
RkREQzAwREQ3QzY4IC8qIFdlYkdhbWVwYWRQcm92aWRlci5oICovOyB9OwpAQCAtMTA1OCw2ICsx
MDYwLDcgQEAKIAkJNTE3REQ1QkUxODBEQTdEMzAwODE2NjBCIC8qIFN0b3JhZ2VQcm9jZXNzUHJv
eHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3
REQ1QkMxODBEQTdEMzAwODE2NjBCIC8qIFN0b3JhZ2VQcm9jZXNzUHJveHkuY3BwICovOyB9Owog
CQk1MTdERDVCRjE4MERBN0QzMDA4MTY2MEIgLyogU3RvcmFnZVByb2Nlc3NQcm94eS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3REQ1QkQxODBEQTdE
MzAwODE2NjBCIC8qIFN0b3JhZ2VQcm9jZXNzUHJveHkuaCAqLzsgfTsKIAkJNTE4M0RERUMxNjMw
QkRGQzAwOEJFNUM3IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA1QjBENDE2MkY3QTdBMDBFMjc3
MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCAqLzsgfTsKKwkJNTE4NTQzMEUxRkI2
ODE2MTAwNDc4Rjk1IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg1NDMwRDFGQjY4MEZB
MDA0NzhGOTUgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCAqLzsgfTsKIAkJ
NTE4NzFCNUIxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODcxQjU5MTI3Q0I4OUQwMEY3
NjIzMiAvKiBXZWJDb250ZXh0TWVudS5jcHAgKi87IH07CiAJCTUxODcxQjVDMTI3Q0I4OUQwMEY3
NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE4NzFCNUExMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51
LmggKi87IH07CiAJCTUxOEFDQUVBMTJBRUU2QkIwMEIwNEI4MyAvKiBXS1Byb3RlY3Rpb25TcGFj
ZVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MThBQ0FFOTEyQUVFNkJCMDBCMDRCODMgLyogV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zMzU5LDYgKzMz
NjIsOSBAQAogCQk1MTRCREVEMjE2Qzk4RUREMDBFNEUyNUUgLyogU3RhdGlzdGljc1JlcXVlc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGlzdGljc1JlcXVlc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0RDlGNTUxOTExOUQzNTAwMDA2M0E3IC8q
IFNlcnZpY2VzQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
ZXJ2aWNlc0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0RDlG
NTYxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNlcnZpY2VzQ29udHJvbGxlci5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE1MjYyQjkxRkI5NTAzNTAwNzBFNTc5IC8qIFdlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNTI2MkJBMUZCOTUxMzEwMDcwRTU3OSAvKiBXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVz
c2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE1MjYyQkIx
RkI5NTEzMTAwNzBFNTc5IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2Vz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNTc4
QjgyMTIwOUVDRUYwMEEzN0M0QSAvKiBBUElEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFQSURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1QkUx
NzMxRDUzRkREQzAwREQ3QzY4IC8qIFdlYkdhbWVwYWRQcm92aWRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHYW1lcGFkUHJvdmlkZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVCRTE3NDFENTNGRERDMDBERDdDNjggLyogV2ViR2Ft
ZXBhZFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdhbWVw
YWRQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzM5Niw2ICszNDAy
LDggQEAKIAkJNTE3REQ1QkMxODBEQTdEMzAwODE2NjBCIC8qIFN0b3JhZ2VQcm9jZXNzUHJveHku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RvcmFnZVByb2Nlc3NQ
cm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0RENUJEMTgwREE3RDMw
MDgxNjYwQiAvKiBTdG9yYWdlUHJvY2Vzc1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0b3JhZ2VQcm9jZXNzUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTE4M0IzOTMxMzc5Rjg1QzAwRTg3NTRFIC8qIFNoaW0ueGNjb25maWcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gU2hpbS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTE4NTQzMEMxRkI2ODBGOTAwNDc4Rjk1IC8qIFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTE4NTQzMEQxRkI2ODBGQTAwNDc4Rjk1IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTg3
MUI1OTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29udGV4dE1lbnUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MTg3MUI1QTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1l
bnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29udGV4dE1lbnUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4QUNBRTkxMkFFRTZCQjAwQjA0QjgzIC8q
IFdLUHJvdGVjdGlvblNwYWNlVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNjM4MSw2ICs2Mzg5LDkgQEAKIAkJCQk1MTdBNTMwOTFGNDc5RTMxMDBEQ0RDMEEgLyogV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLywKIAkJCQk1MTdBNTMwNzFGNDc5RTMxMDBEQ0RDMEEg
LyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggKi8sCiAJCQkJNTE3QTUzMDgxRjQ3OUUzMTAwRENE
QzBBIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKKwkJCQk1MTg1NDMw
RDFGQjY4MEZBMDA0NzhGOTUgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCAq
LywKKwkJCQk1MTg1NDMwQzFGQjY4MEY5MDA0NzhGOTUgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmggKi8sCisJCQkJNTE1MjYyQjkxRkI5NTAzNTAwNzBFNTc5IC8qIFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKIAkJCSk7CiAJCQlwYXRoID0g
U2VydmljZVdvcmtlcjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC04MjAwLDYgKzgy
MTEsOCBAQAogCQkJCTQ2MEY0ODhFMUY5OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi8sCiAJCQkJNTE3QTUyRDcxRjQzQTlCNjAwRENEQzBB
IC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJNTE3
QTUyRDYxRjQzQTlCNjAwRENEQzBBIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgg
Ki8sCisJCQkJNTE1MjYyQkExRkI5NTEzMTAwNzBFNTc5IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJNTE1MjYyQkIxRkI5NTEzMTAw
NzBFNTc5IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmggKi8sCiAJ
CQkJMUFBRjA4QjUxOTI2OUU2RDAwQjYzOTBDIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlck1l
c3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMUFBRjA4QjYxOTI2OUU2RDAwQjYzOTBDIC8qIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlck1lc3NhZ2VzLmggKi8sCiAJCQkJN0MzNjFENzYxOTI4MDNC
RDAwMzZBNTlEIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCAqLywKQEAgLTkwNTksNiArOTA3Miw3IEBACiAJCQkJQkM3QjYyNTIxMkE0M0M5NjAwRDE3
NEE0IC8qIFdlYlBhZ2VHcm91cERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDN0I2MjE1MTJB
NDIxOUEwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXBQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkQ5RUEzMEYxQTk2Q0JGRjAwMkQyODA3IC8qIFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNTE1MjYyQkMxRkI5NTE1RDAwNzBFNTc5IC8qIFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMENF
NzJBMTEyNDdFNzFEMDBCQzBFQzQgLyogV2ViUGFnZU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyRDVDOUQwNjE5QzgxRDhGMDBCM0M1QzEgLyogV2ViUGFnZU92ZXJsYXkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMDMyREQxMTBGNDM4OUYwMDU4QzE1QSAvKiBXZWJQYWdlUHJveHkuaCBp
biBIZWFkZXJzICovLApAQCAtMTA4NTgsNiArMTA4NzIsNyBAQAogCQkJCTlGQjVGMzk0MTY5RTZB
ODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MzMwOTM0NUExMzE1Qjk5ODAwOTdBN0JDIC8qIFdLQ29va2llTWFuYWdlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBMUZCNjgyNTFGNkU1MTgyMDBDNDNGOUYgLyogV0tDcmFzaFJlcG9ydGVyLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJNTE1MjYyQkQxRkI5NTE2MTAwNzBFNTc5IC8qIFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MTJGNThGOTEyQTg4QTU0MDA2Mjk1MzAgLyogV0tDcmVkZW50aWFsLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDNDA3NUY3MTI0RkYwMjcwMDY4RjIwQSAvKiBXS0RhdGEuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUFGRjQ5MDAxODMzREU3ODAwOUFCMTVBIC8qIFdLRGVwcmVjYXRlZEZ1
bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEwOTI2LDYgKzEwOTQxLDcgQEAKIAkJCQkz
N0M0QzA5MzE4MTRCM0FGMDAzNjg4QjkgLyogV0tOU0FycmF5Lm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMzczQ0VBRDUxODU0MTdBRTAwOEMzNjNEIC8qIFdLTlNEYXRhLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMzcxQTE5NDExODI0RDI5MzAwRjMyQTVFIC8qIFdLTlNEaWN0aW9uYXJ5Lm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJNTE4NTQzMEUxRkI2ODE2MTAwNDc4Rjk1IC8qIFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzJDQUYwQzE4MzNGRDkx
MDA0MEFDMjcgLyogV0tOU0Vycm9yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzc1RTBFMTMxRDY2
NDMyNzAwRUZFQzJDIC8qIFdLTlNOdW1iZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkzNzhFMUE0
OTE4MjA4Q0Q2MDAzMTAwN0EgLyogV0tOU1N0cmluZy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IGVkYjI0NTQ3Mzk5Li5kZmRjNjJmODZk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMzcsNiArMzcsNyBA
QAogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzS2V5cy5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVu
Y2VzU3RvcmUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0UHJvdmlkZXIuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0VkaXRvckNsaWVudC5oPgpAQCAtOTUsOCArOTYsMTAgQEAgdm9pZCBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2Vi
UHJlZmVyZW5jZXNTdG9yZSYKICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLnNldEZldGNoQVBJRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJl
ZmVyZW5jZXNLZXk6OmZldGNoQVBJRW5hYmxlZEtleSgpKSk7CiB9CiAKLXZvaWQgV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29ya2VyKHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRh
dGEpCit2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdv
cmtlcihjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEpCiB7CisgICAgTE9HKFNl
cnZpY2VXb3JrZXIsICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZp
Y2VXb3JrZXIgZm9yIHdvcmtlciAlcyIsIGRhdGEuc2VydmljZVdvcmtlcklkZW50aWZpZXIubG9n
Z2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCiAgICAgLy8gRklYTUU6IFByb3ZpZGUgYSBz
ZW5zaWNhbCBzZXNzaW9uIElELgogICAgIGF1dG8gc2Vzc2lvbklEID0gUEFMOjpTZXNzaW9uSUQ6
OmRlZmF1bHRTZXNzaW9uSUQoKTsKIApAQCAtMTEzLDcgKzExNiw3IEBAIHZvaWQgV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29ya2VyKHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3RpCiAgICAgYXV0byBmcmFtZUxvYWRlckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
U2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50PihzZXNzaW9uSUQsIG1fcGFnZUlELCArK21f
cHJldmlvdXNTZXJ2aWNlV29ya2VySUQpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNs
aWVudEZvck1haW5GcmFtZSA9IGZyYW1lTG9hZGVyQ2xpZW50LnJlbGVhc2UoKTsKIAotICAgIGF1
dG8gc2VydmljZVdvcmtlclRocmVhZFByb3h5ID0gU2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpj
cmVhdGUoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbiksIHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCBkYXRhLCBzZXNzaW9uSUQsIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFn
ZVByb3ZpZGVyKCkpOworICAgIGF1dG8gc2VydmljZVdvcmtlclRocmVhZFByb3h5ID0gU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5OjpjcmVhdGUoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbiksIGRh
dGEsIHNlc3Npb25JRCwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FjaGVTdG9yYWdlUHJvdmlk
ZXIoKSk7CiAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkucmVnaXN0ZXJTZXJ2aWNl
V29ya2VyVGhyZWFkRm9ySW5zdGFsbChXVEZNb3ZlKHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSkp
OwogCiAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJDb250ZXh0IHByb2Nlc3MgUElEOiAlaSBjcmVh
dGVkIHdvcmtlciB0aHJlYWRcbiIsIGdldHBpZCgpKTsKQEAgLTEyMSwxNSArMTI0LDEwIEBAIHZv
aWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29ya2VyKHVp
bnQ2NF90IHNlcnZlckNvbm5lY3RpCiAKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OnNlcnZpY2VXb3JrZXJTdGFydGVkV2l0aE1lc3NhZ2UoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXhjZXB0aW9uTWVzc2Fn
ZSkKIHsKLSAgICBhdXRvKiB0aHJlYWRQcm94eSA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRv
bigpLnNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0g
ICAgQVNTRVJUKHRocmVhZFByb3h5KTsKLSAgICAKLSAgICBhdXRvJiBkYXRhID0gdGhyZWFkUHJv
eHktPnRocmVhZCgpLmNvbnRleHREYXRhKCk7Ci0gICAgCiAgICAgaWYgKGV4Y2VwdGlvbk1lc3Nh
Z2UuaXNFbXB0eSgpKQotICAgICAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6U2VydmljZVdvcmtlckNvbnRleHRTdGFydGVkKHRo
cmVhZFByb3h5LT50aHJlYWQoKS5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpLCBkYXRhLnJl
Z2lzdHJhdGlvbktleSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIpLCAwKTsKKyAgICAgICAgbV9j
b25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpTY3JpcHRDb250ZXh0U3RhcnRlZChzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciksIDApOwogICAgIGVsc2UKLSAgICAgICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OlNlcnZpY2VXb3JrZXJDb250ZXh0RmFp
bGVkVG9TdGFydCh0aHJlYWRQcm94eS0+dGhyZWFkKCkuc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIoKSwgZGF0YS5yZWdpc3RyYXRpb25LZXksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBleGNl
cHRpb25NZXNzYWdlKSwgMCk7CisgICAgICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6U2NyaXB0Q29u
dGV4dEZhaWxlZFRvU3RhcnQoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGV4Y2VwdGlvbk1lc3Nh
Z2UpLCAwKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3RhcnRG
ZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJ
ZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyPiBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmV0Y2hPcHRpb25z
JiYgb3B0aW9ucykKQEAgLTE0OSwxNSArMTQ3LDEzIEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoU2Vydmlj
CiAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkucG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZShkZXN0aW5hdGlvbklkZW50aWZpZXIsIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6YWRvcHQobWVzc2FnZS52ZWN0b3IoKSksIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9y
aWdpbik7CiB9CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpcmVJbnN0
YWxsRXZlbnQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCit2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpmaXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKTsKICAgICBT
V0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5maXJlSW5zdGFsbEV2ZW50KGlkZW50aWZpZXIp
OwogfQogCi12b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpmaXJlQWN0aXZhdGVF
dmVudCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OmZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKTsKICAgICBTV0Nv
bnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5maXJlQWN0aXZhdGVFdmVudChpZGVudGlmaWVyKTsK
IH0KIApAQCAtMTY4LDI4ICsxNjQsMTcgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VydmkKIAogdm9p
ZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlkRmluaXNoSW5zdGFsbChTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNz
ZnVsKQogewotICAgIGF1dG8qIHRocmVhZFByb3h5ID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkuc2VydmljZVdvcmtlclRocmVhZFByb3h5KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsK
LSAgICBBU1NFUlQodGhyZWFkUHJveHkpOwotCi0gICAgYXV0byYgZGF0YSA9IHRocmVhZFByb3h5
LT50aHJlYWQoKS5jb250ZXh0RGF0YSgpOwotICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpEaWRGaW5pc2hTZXJ2aWNlV29ya2Vy
SW5zdGFsbCh0aHJlYWRQcm94eS0+dGhyZWFkKCkuc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIo
KSwgZGF0YS5yZWdpc3RyYXRpb25LZXksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCB3YXNTdWNj
ZXNzZnVsKSwgMCk7CisgICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpEaWRGaW5pc2hJbnN0YWxsKHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCB3YXNTdWNjZXNzZnVsKSwgMCk7CiB9CiAKIHZvaWQgV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmRpZEZpbmlzaEFjdGl2YXRpb24oU2VydmljZVdv
cmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCiB7Ci0gICAgYXV0byogdGhy
ZWFkUHJveHkgPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAgIEFTU0VSVCh0aHJlYWRQcm94
eSk7Ci0KLSAgICBhdXRvJiBkYXRhID0gdGhyZWFkUHJveHktPnRocmVhZCgpLmNvbnRleHREYXRh
KCk7Ci0gICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U3Rv
cmFnZVByb2Nlc3M6OkRpZEZpbmlzaFNlcnZpY2VXb3JrZXJBY3RpdmF0aW9uKHRocmVhZFByb3h5
LT50aHJlYWQoKS5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpLCBkYXRhLnJlZ2lzdHJhdGlv
bktleSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIpLCAwKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1N0
b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OkRpZEZpbmlzaEFjdGl2YXRpb24oc2VydmljZVdvcmtlcklkZW50aWZpZXIpLCAwKTsKIH0K
IAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c2V0U2VydmljZVdvcmtlckhh
c1BlbmRpbmdFdmVudHMoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGJvb2wgaGFzUGVuZGluZ0V2ZW50cykKIHsKLSAgICBhdXRvKiB0aHJlYWRQcm94eSA9
IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShz
ZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgQVNTRVJUKHRocmVhZFByb3h5KTsKLQotICAg
IG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9j
ZXNzOjpTZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyh0aHJlYWRQcm94eS0+dGhyZWFk
KCkuc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IGhhc1BlbmRpbmdFdmVudHMpLCAwKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlNldFNlcnZp
Y2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBoYXNQZW5k
aW5nRXZlbnRzKSwgMCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5oCmluZGV4IDhkYTZhNWQ2ZWFkLi5mYTJhYzgzOTJiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC01OCwxMSArNTgsMTEgQEAgcHJpdmF0ZToK
IAogICAgIC8vIElQQyBtZXNzYWdlcy4KICAgICB2b2lkIHNlcnZpY2VXb3JrZXJTdGFydGVkV2l0
aE1lc3NhZ2UoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
ZXhjZXB0aW9uTWVzc2FnZSkgZmluYWw7Ci0gICAgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtlcih1
aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhJik7CisgICAgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtlcihjb25z
dCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmKTsKICAgICB2b2lkIHN0YXJ0RmV0
Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRl
bnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcj4s
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJik7CiAg
ICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllciYgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4p
OwotICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAgIHZvaWQgZmly
ZUFjdGl2YXRlRXZlbnQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQo
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIHZvaWQgZmlyZUFjdGl2YXRl
RXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogCiAgICAgUmVmPElQQzo6
Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2VzczsKICAgICB1aW50NjRfdCBt
X3BhZ2VJRCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KaW5kZXggNWQyNTU1YWRjYzkuLjE0OThkMjcyMTlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMjMsMTEgKzIzLDExIEBA
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCiBtZXNzYWdlcyAtPiBXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbiB7Ci0gICAgSW5zdGFsbFNlcnZpY2VXb3JrZXIodWludDY0X3Qgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEgY29udGV4dERhdGEpCisgICAgSW5zdGFsbFNlcnZpY2VXb3JrZXIoc3RydWN0IFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBjb250ZXh0RGF0YSkKICAgICBTdGFydEZl
dGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElk
ZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXI+
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCwgc3RydWN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyBvcHRpb25zKQogICAgIFBvc3RNZXNzYWdl
VG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSwgc3Ry
dWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZp
ZXIsIFN0cmluZyBzb3VyY2VPcmlnaW4pCi0gICAgRmlyZUluc3RhbGxFdmVudCh1aW50NjRfdCBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIgaWRlbnRpZmllcikKLSAgICBGaXJlQWN0aXZhdGVFdmVudCh1aW50NjRfdCBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllcikKKyAgICBGaXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIpCisgICAgRmlyZUFjdGl2YXRlRXZlbnQoV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIH0KIAogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326820</attachid>
            <date>2017-11-13 16:28:07 -0800</date>
            <delta_ts>2017-11-13 16:36:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179554-20171113162807.patch</filename>
            <type>text/plain</type>
            <size>141515</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0Nzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDBkYWJiNzMyYTNiZjAyMTZhZDFjNWZk
YWEwYWE3OWExODAzMDQyMWEuLmY1ZGY3MmVjNDczYTVmM2ZhNDIzYTQ4NTI4ZDI1ZmMzYWRjOWIz
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMTEtMTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIE1hc3NpdmUgIlNlcnZlci1wcm9jZXNzLXRvLWNvbnRl
eHQtcHJvY2VzcyIgY29ubmVjdGlvbiBvdmVyaGF1bC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTU1NAorCisgICAgICAgIFJldmlld2VkIGJ5IENo
cmlzIER1bWV6LgorCisgICAgICAgICogd3RmL09iamVjdElkZW50aWZpZXIuaDoKKyAgICAgICAg
KFdURjo6Z2VuZXJhdGVPYmplY3RJZGVudGlmaWVyKToKKyAgICAgICAgKFdURjo6bWFrZU9iamVj
dElkZW50aWZpZXIpOiBEZWxldGVkLgorCiAyMDE3LTExLTEzICBKRiBCYXN0aWVuICA8amZiYXN0
aWVuQGFwcGxlLmNvbT4KIAogICAgICAgICBzdGQ6OmV4cGVjdGVkOiBmaXggYW5kIHRlc3QgbW92
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IGY0NGYwYTlkNjQ3MzI3ZWU2MjRlZDdjMzgxMmMxMjBhYzE5ZDUwZjYu
LjhkMjJmZWEyOWQ1NmFiNWU1NjQ3ZDE0NzQzOTc4ZDM4NTNjMGNmZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMTcgQEAKKzIwMTctMTEtMTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIE1hc3NpdmUgIlNlcnZlci1wcm9jZXNzLXRvLWNvbnRleHQtcHJvY2Vz
cyIgY29ubmVjdGlvbiBvdmVyaGF1bC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3OTU1NAorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoUmVmYWN0b3IsIG5vIGJlaGF2aW9yIGNoYW5nZSku
CisKKyAgICAgICAgSGF2aW5nIHRoZSBTV1NlcnZlcjo6Q29ubmVjdGlvbiBvYmplY3QgYmUgb3Zl
cmxvYWRlZCB0byBtZWFuIGJvdGggY2xpZW50LT5zZXJ2ZXIgYW5kIHNlcnZlci0+Y29udGV4dCAK
KyAgICAgICAgd2FzIHRoZSB3cm9uZyBkZXNpZ24gYW5kIHdhcyBzdGFydGluZyB0byBjcnVtYmxl
IHVuZGVyIGl0cyBvd24gd2VpZ2h0LgorCisgICAgICAgIFNvIHRoaXMgcGF0Y2ggaW50cm9kdWNl
cyBhIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiB0byBtYW5hZ2UgdGhlIFN0b3JhZ2VQcm9j
ZXNzLXNpZGUgb2YgY29ubmVjdGlvbnMKKyAgICAgICAgdG8gY29udGV4dCBwcm9jZXNzZXMuCisK
KyAgICAgICAgQW55IG1lc3NhZ2UgdGhhdCBpcyBzcGVjaWZpY2FsbHkgYWJvdXQgdGhlIGNvbm5l
Y3Rpb24gYmV0d2VlbiB0aGUgU3RvcmFnZVByb2Nlc3MgYW5kIGNvbnRleHQgcHJvY2VzcworICAg
ICAgICBzaG91bGQgdXNlIHRoaXMgY29ubmVjdGlvbiBnb2luZyBmb3J3YXJkLgorCisgICAgICAg
IFJpZ2h0IG5vdyB0aGVyZSBpcyBvbmx5IG9uZSBjb250ZXh0IHByb2Nlc3MsIGJ1dCB0aGlzIGRl
c2lnbiBrZWVwcyB1cyByZWFkeSBmb3IgdGhhdCB0byBjaGFuZ2UuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBhbHNvIGdldHMgcmlkIG9mIGEgbG90IG9mICJzZXJ2ZXIgY29ubmVjdGlvbiBpZGVudGlm
aWVyIiBpbnRlZ2VycyBiZWluZyBwYXNzZWQgYW1vbmdzdCBwcm9jZXNzZXMKKyAgICAgICAgdGhh
dCB3ZXJlIGFjdHVhbGx5IHBvaW50bGVzcy4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGFsc28g
YSBwcmVyZXF1aXNpdGUgZm9yIG1hbnkgdGhpbmdzIHRoYXQgYXJlIGNvbWluZyB1cCBzb29uLCBz
dWNoIGFzIHRlcm1pbmF0aW9uLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNvZGUpOgorCisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5o
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlclR5cGVzLmg6CisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJUaHJlYWQ6OlNlcnZpY2VXb3JrZXJUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
U2VydmljZVdvcmtlclRocmVhZDo6Y3JlYXRlV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
IGNvbnN0KTogRGVsZXRlZC4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHk6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSk6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5Lmg6CisK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmdlbmVyYXRlU2VydmljZVdvcmtlcklkZW50aWZpZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U1dTZXJ2ZXI6On5TV1NlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6
U1dTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnNjcmlwdENvbnRleHRGYWls
ZWRUb1N0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzY3JpcHRDb250ZXh0U3Rh
cnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6ZGlkRmluaXNoSW5zdGFsbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6ZGlkRmluaXNoQWN0aXZhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlcjo6ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTV1NlcnZlcjo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQpOgorICAgICAgICAo
V2ViQ29yZTo6U1dTZXJ2ZXI6Omluc3RhbGxDb250ZXh0RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpTV1NlcnZlcjo6ZmlyZUluc3RhbGxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZl
cjo6ZmlyZUFjdGl2YXRlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OkNvbm5l
Y3Rpb246OmRpZEZpbmlzaEluc3RhbGwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1dT
ZXJ2ZXI6OkNvbm5lY3Rpb246OmRpZEZpbmlzaEFjdGl2YXRpb24pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OkNvbm5lY3Rpb246OnNldFNlcnZpY2VXb3JrZXJIYXNQZW5k
aW5nRXZlbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpDb25uZWN0
aW9uOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlcjo6Q29ubmVjdGlvbjo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5n
RXZlbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmg6CisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVl
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0Q29udGV4
dEZhaWxlZFRvU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6c2Ny
aXB0Q29udGV4dFN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6
aW5zdGFsbCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpkaWRSZXNvbHZl
UmVnaXN0cmF0aW9uUHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVl
OjpkaWRGaW5pc2hJbnN0YWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6
OnRyeUFjdGl2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6OmFjdGl2
YXRlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUu
aDoKKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2VuZXJhdGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllcik6CisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Z2Vu
ZXJhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcik6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5T
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9ySWRlbnRpZmllcik6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNjcmlwdENvbnRleHRTdGFydGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZGlkRmluaXNoSW5zdGFsbCk6
CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZEZpbmlz
aEFjdGl2YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjpzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyk6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5o
LgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjppZGVudGlm
aWVyIGNvbnN0KToKKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29y
a2VyRm9ySWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6U1dT
ZXJ2ZXJXb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6On5TV1NlcnZl
cldvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6c2NyaXB0Q29udGV4
dEZhaWxlZFRvU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OnNjcmlw
dENvbnRleHRTdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpkaWRG
aW5pc2hJbnN0YWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpkaWRGaW5p
c2hBY3RpdmF0aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
V29ya2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpyZWdpc3RyYXRpb25LZXkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OmNvbnRleHRDb25uZWN0aW9uSWRlbnRp
ZmllciBjb25zdCk6CisKIDIwMTctMTEtMTMgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUu
Y29tPgogCiAgICAgICAgIERvbid0IGVsaW1pbmF0ZSB3aGl0ZXNwYWNlIHJlbmRlcmVyIGlmIHRo
ZSBwcmV2aW91cyBzaWJsaW5nIGlzIGEgdGV4dCByZW5kZXJlcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiNTdhMjgx
N2M2MWFkM2NiNTAzZjkyMjQ0M2ZlOWVjMmEyNjU1NDVkLi4yZTIyMDllMWQ0ZjUxNWY1MzY4ZDA1
MDhiMjFlMmIxMWM3MDYwMjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDE3LTExLTEz
ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNYXNzaXZlICJT
ZXJ2ZXItcHJvY2Vzcy10by1jb250ZXh0LXByb2Nlc3MiIGNvbm5lY3Rpb24gb3ZlcmhhdWwuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk1NTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisK
KyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisKKyAgICAgICAgKiBT
dG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2VuZFRvQ29udGV4dFByb2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246Omluc3RhbGxTZXJ2
aWNlV29ya2VyQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVy
Q29ubmVjdGlvbjo6ZmlyZUluc3RhbGxFdmVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6ZmlyZUFjdGl2YXRlRXZlbnQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OnNldENvbnRleHRDb25uZWN0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyQ29ubmVjdGlvbi5oOgorCisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyRGVzdGluYXRp
b25JRCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
Y29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaXJlSW5zdGFsbEV2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaXJlQWN0aXZh
dGVFdmVudCk6CisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJUeXBlcy5oLgorICAgICAgICAoV2ViS2l0OjpXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6aXBjQ29ubmVjdGlvbiBjb25zdCk6CisgICAg
ICAgICogU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24ubWVzc2FnZXMuaW46IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluLgorCisg
ICAgICAgICogU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlUHJvY2Vzczo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
UHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJv
Y2Vzczo6Z2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmRpZEdldFdvcmtlckNvbnRleHRQcm9jZXNzQ29u
bmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjp3b3JrZXJDb250ZXh0
UHJvY2Vzc0Nvbm5lY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJv
Y2Vzczo6Y3JlYXRlV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OnNlcnZpY2VXb3JrZXJDb250ZXh0RmFpbGVk
VG9TdGFydCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpzZXJ2
aWNlV29ya2VyQ29udGV4dFN0YXJ0ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlUHJvY2Vzczo6ZGlkRmluaXNoU2VydmljZVdvcmtlckluc3RhbGwpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6ZGlkRmluaXNoU2VydmljZVdvcmtlckFjdGl2
YXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6c2V0U2Vy
dmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHMpOiBEZWxldGVkLgorICAgICAgICAqIFN0b3JhZ2VQ
cm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmg6CisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU3RvcmFn
ZVByb2Nlc3MubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TdG9yYWdl
VG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUb1dl
YlByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjplc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6d29y
a2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uQ3JlYXRlZCk6CisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3Jr
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c2Vy
dmljZVdvcmtlclN0YXJ0ZWRXaXRoTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpmaXJlSW5zdGFsbEV2ZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpcmVBY3RpdmF0ZUV2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmRpZEZpbmlzaElu
c3RhbGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
ZGlkRmluaXNoQWN0aXZhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluOgorCiAyMDE3LTExLTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgSW1wbGVtZW50ICJTZXJ2aWNlIFdvcmtlciBIYXMgTm8gUGVuZGluZyBF
dmVudHMiIC8gIlVwZGF0ZSBTZXJ2aWNlIFdvcmtlciBFeHRlbmRlZCBFdmVudHMgU2V0IiBhbGdv
cml0aG1zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmggYi9T
b3VyY2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmgKaW5kZXggZWYzNzE1NGEzMWUxMDg1MThl
YTk2M2RmMzU3NGU1ODE4Yjc0MzI5NS4uNjdkZWUwMjZiNWU4N2U0MDdhNjIyZWU2MGU2NTA4YzM1
MmU2YjlkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvT2JqZWN0SWRlbnRpZmllci5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaApAQCAtNzAsNyArNzAsNyBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBmcmll
bmQgT2JqZWN0SWRlbnRpZmllcjxVPiBtYWtlT2JqZWN0SWRlbnRpZmllcih1aW50NjRfdCk7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gZnJpZW5kIE9iamVjdElkZW50aWZpZXI8VT4gZ2VuZXJh
dGVPYmplY3RJZGVudGlmaWVyKCk7CiAgICAgZnJpZW5kIHN0cnVjdCBIYXNoVHJhaXRzPE9iamVj
dElkZW50aWZpZXI+OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGZyaWVuZCBzdHJ1Y3QgT2Jq
ZWN0SWRlbnRpZmllckhhc2g7CiAKQEAgLTgzLDEyICs4MywxNCBAQCBwcml2YXRlOgogICAgIH0K
IAogICAgIHVpbnQ2NF90IG1faWRlbnRpZmllciB7IDAgfTsKKyAgICBzdGF0aWMgdWludDY0X3Qg
c19jdXJyZW50SWRlbnRpZmllcjsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBP
YmplY3RJZGVudGlmaWVyPFQ+IG1ha2VPYmplY3RJZGVudGlmaWVyKHVpbnQ2NF90IGlkZW50aWZp
ZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB1aW50NjRfdCBPYmplY3RJZGVudGlmaWVyPFQ+Ojpz
X2N1cnJlbnRJZGVudGlmaWVyOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgT2JqZWN0
SWRlbnRpZmllcjxUPiBnZW5lcmF0ZU9iamVjdElkZW50aWZpZXIoKQogewotICAgIEFTU0VSVChP
YmplY3RJZGVudGlmaWVyPFQ+Ojppc1ZhbGlkSWRlbnRpZmllcihpZGVudGlmaWVyKSk7Ci0gICAg
cmV0dXJuIE9iamVjdElkZW50aWZpZXI8VD4geyBpZGVudGlmaWVyIH07CisgICAgcmV0dXJuIE9i
amVjdElkZW50aWZpZXI8VD4geyArK09iamVjdElkZW50aWZpZXI8VD46OnNfY3VycmVudElkZW50
aWZpZXIgfTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IE9iamVjdElkZW50aWZp
ZXJIYXNoIHsKQEAgLTEwNiw0ICsxMDgsNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
RGVmYXVsdEhhc2g8T2JqZWN0SWRlbnRpZmllcjxUPj4gewogfSAvLyBuYW1lc3BhY2UgV1RGCiAK
IHVzaW5nIFdURjo6T2JqZWN0SWRlbnRpZmllcjsKLXVzaW5nIFdURjo6bWFrZU9iamVjdElkZW50
aWZpZXI7Cit1c2luZyBXVEY6OmdlbmVyYXRlT2JqZWN0SWRlbnRpZmllcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
aW5kZXggMjM5ZDY5OWU2MDU4NmFmZmJkNmJmYzE4ZGI1N2E3Y2JlY2FmZjEwOC4uNjc0OTdmNDFh
MWZiM2Q4N2MzYmVjZjIzOTQ2ZDEyYWQ1ODZjNmQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIxOTEs
NiArMjE5MSw3IEBAIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmNw
cAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKIHdvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJSZWdpc3RyYXRpb24uY3BwCit3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIu
Y3BwCiAKIHhtbC9ET01QYXJzZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYmRlYjA0MGJiYmY3OThmN2NlMTI5ZGQ0NzBm
YjIzNGMyZjVkM2U0OS4uYjNlMzJmOTQ2MDc1NWQ2ZWVlZTAzNTg0Yjg0YzQ4YzY3MjI1MjhiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTM1NCw2ICsxMzU0LDcgQEAKIAkJNTE4MkMyNTgxRjMxNDNDRDAwNTlCQTdDIC8qIEpT
U2VydmljZVdvcmtlckNvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE4MkMyNTQxRjMxNDI1MDAwNTlCQTdDIC8qIEpTU2VydmljZVdvcmtl
ckNvbnRhaW5lci5oICovOyB9OwogCQk1MTgyQzI1QTFGMzE0M0NEMDA1OUJBN0MgLyogSlNTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxODJDMjREMUYzMTQyNTAwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5oICovOyB9OwogCQk1MTgyQzI1QzFGMzE0M0NEMDA1OUJBN0MgLyogSlNTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTgyQzI1MDFGMzE0MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uLmggKi87IH07CisJCTUxODU0MzBCMUZCNjc4NDUwMDQ3OEY5NSAvKiBTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxODU0MzA5MUZCNjc4M0UwMDQ3OEY5NSAvKiBTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1MTg1RkM3NTFCQjRDNEU4MDAxMjg5OEYgLyogRE9NV2luZG93SW5kZXhlZERh
dGFiYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUQ3MTk2RDE4MTEwNkRGMDAxNkRDNTEgLyogRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmggKi87
IH07CiAJCTUxODVGQzdCMUJCNEM0RTgwMDEyODk4RiAvKiBJREJDdXJzb3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjQ1QjQxMUI5Rjg4OUIwMEY3
ODlDRSAvKiBJREJDdXJzb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1MTg1RkM3RTFCQjRDNEU4MDAxMjg5OEYgLyogSURCQ3Vyc29yV2l0aFZh
bHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTY0
NUI0MzFCOUY4ODlCMDBGNzg5Q0UgLyogSURCQ3Vyc29yV2l0aFZhbHVlLmggKi87IH07CkBAIC0x
NDI1LDcgKzE0MjYsNyBAQAogCQk1MUU2ODIxMDE2Mzg3MzAyMDAzQkJGM0MgLyogTG9hZGVyU3Ry
YXRlZ3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
RTY4MjBGMTYzODczMDIwMDNCQkYzQyAvKiBMb2FkZXJTdHJhdGVneS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRUU3QjM4MUFBNTBCMDUwMEY5
MkIyMSAvKiBSZXNvdXJjZUxvYWRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUVFN0IzNzFBQTUwQjA1MDBGOTJCMjEgLyogUmVzb3VyY2VMb2Fk
SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTUxRUVBQTc0MUJFRkZBQjEwMDIxODAwOCAvKiBJbmRleFZhbHVlRW50cnkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRUVBQTcyMUJFRkZBNzkwMDIx
ODAwOCAvKiBJbmRleFZhbHVlRW50cnkuaCAqLzsgfTsKLQkJNTFGMTc0RkUxRjM1ODk5MjAwQzc0
OTUwIC8qIFdvcmtlclR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxRjE3NEZDMUYzNTg5ODgwMEM3NDk1MCAvKiBXb3JrZXJUeXBlLmggKi87IH07
CisJCTUxRjE3NEZFMUYzNTg5OTIwMEM3NDk1MCAvKiBXb3JrZXJUeXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYxNzRGQzFGMzU4OTg4MDBDNzQ5
NTAgLyogV29ya2VyVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTUxRjE3NTAzMUYzNThCM0IwMEM3NDk1MCAvKiBKU1NlcnZpY2VXb3JrZXJV
cGRhdGVWaWFDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFGMTc1MDExRjM1OEIzNjAwQzc0OTUwIC8qIEpTU2VydmljZVdvcmtlclVwZGF0ZVZp
YUNhY2hlLmggKi87IH07CiAJCTUxRjE3NTA2MUYzNThCRjcwMEM3NDk1MCAvKiBKU1dvcmtlclR5
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjE3
NTA1MUYzNThCREUwMEM3NDk1MCAvKiBKU1dvcmtlclR5cGUuaCAqLzsgfTsKIAkJNTFGMTc1NUQx
RjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjE3NTVBMUYzRUJDMEMwMEM3NDk1MCAvKiBTZXJ2
aWNlV29ya2VyLmggKi87IH07CkBAIC03NzA2LDYgKzc3MDcsOCBAQAogCQk1MTgyQzI1MjFGMzE0
MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2Vydmlj
ZVdvcmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTgyQzI1MzFGMzE0MjUw
MDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2Vy
dmljZVdvcmtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODJDMjU0MUYz
MTQyNTAwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUxODU0MzA5MUZCNjc4M0UwMDQ3OEY5NSAvKiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxODU0MzBBMUZCNjc4
M0YwMDQ3OEY5NSAvKiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4NUZDQkMxQkI1Q0I3NzAwMTI4OThG
IC8qIElEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTg1RkNCRDFCQjVDQjc3MDAxMjg5OEYgLyogSURCQ29ubmVjdGlvblRvU2Vy
dmVyRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQ29ubmVj
dGlvblRvU2VydmVyRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4
ODY0REUxQkJBRjMwRjAwRTU0MEM5IC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVuaXF1ZUlEQkRhdGFiYXNlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MTMxLDYgKzE3MTM0LDggQEAKIAkJCQk4MzExQzAw
MjFGQUEyRTg5MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5oICovLAogCQkJCTUxRjY0NTk1
MUY0QTY4NjEwMEI1NERFRCAvKiBTV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAgKi8sCiAJCQkJNTFG
NjQ1OTQxRjRBNjg0RjAwQjU0REVEIC8qIFNXU2VydmVyUmVnaXN0cmF0aW9uLmggKi8sCisJCQkJ
NTE4NTQzMEExRkI2NzgzRjAwNDc4Rjk1IC8qIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
cHAgKi8sCisJCQkJNTE4NTQzMDkxRkI2NzgzRTAwNDc4Rjk1IC8qIFNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oICovLAogCQkJCTUxN0E1MzQzMUY1MEMxNjEwMERDREMwQSAvKiBTV1NlcnZl
cldvcmtlci5jcHAgKi8sCiAJCQkJNTE3QTUzNDIxRjUwQzE2MTAwRENEQzBBIC8qIFNXU2VydmVy
V29ya2VyLmggKi8sCiAJCQkpOwpAQCAtMTczMTYsMTI0ICsxNzMyMSwxMjQgQEAKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNTM4RUM3RjMxRjk2QUE1QjAwNEQyMkE4
IC8qIFVuaWZpZWRTb3VyY2UxLW1tLm1tICovLAotCQkJCTUzOEVDN0Y4MUY5NkFBNjkwMDREMjJB
OCAvKiBVbmlmaWVkU291cmNlMi1tbS5tbSAqLywKLQkJCQk1MzhFQzdFRDFGOTZBQTU1MDA0RDIy
QTggLyogVW5pZmllZFNvdXJjZTMtbW0ubW0gKi8sCi0JCQkJREU1Rjg1NDkxRkExQUJCRDAwNkRC
NjNBIC8qIFVuaWZpZWRTb3VyY2U0LW1tLm1tICovLAotCQkJCURFNUY4NTY1MUZBMUFCRDYwMDZE
QjYzQSAvKiBVbmlmaWVkU291cmNlNS1tbS5tbSAqLywKLQkJCQlERTVGODU2QjFGQTFBQkRCMDA2
REI2M0EgLyogVW5pZmllZFNvdXJjZTYtbW0ubW0gKi8sCi0JCQkJREU1Rjg1NUYxRkExQUJEMTAw
NkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U3LW1tLm1tICovLAotCQkJCURFNUY4NTNEMUZBMUFCQjIw
MDZEQjYzQSAvKiBVbmlmaWVkU291cmNlOC1tbS5tbSAqLywKLQkJCQlERTVGODU1NDFGQTFBQkM3
MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTktbW0ubW0gKi8sCi0JCQkJREU1Rjg1NjMxRkExQUJE
NTAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxMC1tbS5tbSAqLywKLQkJCQlERTVGODU2MTFGQTFB
QkQzMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTExLW1tLm1tICovLAotCQkJCURFNUY4NTY0MUZB
MUFCRDUwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMTItbW0ubW0gKi8sCi0JCQkJREU1Rjg1NkEx
RkExQUJEQjAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxMy1tbS5tbSAqLywKLQkJCQlERTVGODU0
RTFGQTFBQkMyMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTE0LW1tLm1tICovLAotCQkJCURFNUY4
NTNFMUZBMUFCQjMwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMTUtbW0ubW0gKi8sCi0JCQkJREU1
Rjg1NUUxRkExQUJEMDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxNi1tbS5tbSAqLywKLQkJCQlE
RTVGODU0QTFGQTFBQkJFMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTE3LW1tLm1tICovLAotCQkJ
CURFNUY4NTUwMUZBMUFCQzMwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMTgtbW0ubW0gKi8sCi0J
CQkJREU1Rjg1NTMxRkExQUJDNjAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxOS1tbS5tbSAqLywK
LQkJCQlERTVGODU1MjFGQTFBQkM1MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTIwLW1tLm1tICov
LAotCQkJCURFNUY4NTVBMUZBMUFCQ0QwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMjEtbW0ubW0g
Ki8sCi0JCQkJREU1Rjg1NEQxRkExQUJDMTAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UyMi1tbS5t
bSAqLywKLQkJCQlERTVGODU0MTFGQTFBQkI2MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTIzLW1t
Lm1tICovLAotCQkJCURFNUY4NTQ2MUZBMUFCQkIwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMjQt
bW0ubW0gKi8sCi0JCQkJREU1Rjg1NDcxRkExQUJCQjAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2Uy
NS1tbS5tbSAqLywKLQkJCQlERTVGODU1RDFGQTFBQkNGMDA2REI2M0EgLyogVW5pZmllZFNvdXJj
ZTI2LW1tLm1tICovLAotCQkJCURFNUY4NTY5MUZBMUFCREEwMDZEQjYzQSAvKiBVbmlmaWVkU291
cmNlMjctbW0ubW0gKi8sCi0JCQkJREU1Rjg1M0YxRkExQUJCNDAwNkRCNjNBIC8qIFVuaWZpZWRT
b3VyY2UyOC1tbS5tbSAqLywKLQkJCQlERTVGODU2ODFGQTFBQkQ5MDA2REI2M0EgLyogVW5pZmll
ZFNvdXJjZTI5LW1tLm1tICovLAotCQkJCURFNUY4NTQyMUZBMUFCQjcwMDZEQjYzQSAvKiBVbmlm
aWVkU291cmNlMzAtbW0ubW0gKi8sCi0JCQkJREU1Rjg1NTExRkExQUJDNDAwNkRCNjNBIC8qIFVu
aWZpZWRTb3VyY2UzMS1tbS5tbSAqLywKLQkJCQlERTVGODU2MDFGQTFBQkQyMDA2REI2M0EgLyog
VW5pZmllZFNvdXJjZTMyLW1tLm1tICovLAotCQkJCURFNUY4NTVCMUZBMUFCQ0UwMDZEQjYzQSAv
KiBVbmlmaWVkU291cmNlMzMtbW0ubW0gKi8sCi0JCQkJREU1Rjg1NTcxRkExQUJDQTAwNkRCNjNB
IC8qIFVuaWZpZWRTb3VyY2UzNC1tbS5tbSAqLywKLQkJCQlERTVGODU0MDFGQTFBQkI1MDA2REI2
M0EgLyogVW5pZmllZFNvdXJjZTM1LW1tLm1tICovLAotCQkJCURFNUY4NTU1MUZBMUFCQzgwMDZE
QjYzQSAvKiBVbmlmaWVkU291cmNlMzYtbW0ubW0gKi8sCi0JCQkJREU1Rjg1NDUxRkExQUJCQTAw
NkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzNy1tbS5tbSAqLywKLQkJCQlERTVGODU1QzFGQTFBQkNF
MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTM4LW1tLm1tICovLAotCQkJCURFNUY4NTU5MUZBMUFC
Q0MwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMzktbW0ubW0gKi8sCi0JCQkJREU1Rjg1NTYxRkEx
QUJDOTAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0MC1tbS5tbSAqLywKLQkJCQlERTVGODU2NjFG
QTFBQkQ3MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQxLW1tLm1tICovLAotCQkJCURFNUY4NTRG
MUZBMUFCQzMwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDItbW0ubW0gKi8sCi0JCQkJREU1Rjg1
NDgxRkExQUJCQzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0My1tbS5tbSAqLywKLQkJCQlERTVG
ODU0MzFGQTFBQkI4MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ0LW1tLm1tICovLAotCQkJCURF
NUY4NTU4MUZBMUFCQ0IwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDUtbW0ubW0gKi8sCi0JCQkJ
REU1Rjg1NDQxRkExQUJCOTAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0Ni1tbS5tbSAqLywKLQkJ
CQlERTVGODU2MjFGQTFBQkQ0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ3LW1tLm1tICovLAot
CQkJCURFNUY4NTY3MUZBMUFCRDgwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDgtbW0ubW0gKi8s
Ci0JCQkJREU1Rjg1NEIxRkExQUJCRjAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0OS1tbS5tbSAq
LywKLQkJCQlERTVGODU0QzFGQTFBQkMwMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTUwLW1tLm1t
ICovLAotCQkJCURFNUY4NjM2MUZBMkFGMDQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTEtbW0u
bW0gKi8sCi0JCQkJREU1Rjg2MzcxRkEyQUYwNTAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1Mi1t
bS5tbSAqLywKLQkJCQlERTVGODYzNTFGQTJBRjAzMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTUz
LW1tLm1tICovLAotCQkJCURFNUY4NjMzMUZBMkFGMDAwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNl
NTQtbW0ubW0gKi8sCi0JCQkJREU1Rjg2M0IxRkEyQUYwODAwNkRCNjNBIC8qIFVuaWZpZWRTb3Vy
Y2U1NS1tbS5tbSAqLywKLQkJCQlERTVGODYzNDFGQTJBRjAxMDA2REI2M0EgLyogVW5pZmllZFNv
dXJjZTU2LW1tLm1tICovLAotCQkJCURFNUY4NjM4MUZBMkFGMDYwMDZEQjYzQSAvKiBVbmlmaWVk
U291cmNlNTctbW0ubW0gKi8sCi0JCQkJREU1Rjg2MzkxRkEyQUYwNzAwNkRCNjNBIC8qIFVuaWZp
ZWRTb3VyY2U1OC1tbS5tbSAqLywKLQkJCQlERTVGODYzMjFGQTJBRUZGMDA2REI2M0EgLyogVW5p
ZmllZFNvdXJjZTU5LW1tLm1tICovLAotCQkJCURFNUY4NjNBMUZBMkFGMDcwMDZEQjYzQSAvKiBV
bmlmaWVkU291cmNlNjAtbW0ubW0gKi8sCiAJCQkJNTM4RUM3RkExRjk2QUE3MDAwNEQyMkE4IC8q
IFVuaWZpZWRTb3VyY2UxLmNwcCAqLywKKwkJCQk1MzhFQzdGODFGOTZBQTY5MDA0RDIyQTggLyog
VW5pZmllZFNvdXJjZTItbW0ubW0gKi8sCiAJCQkJNTM4RUM3RUUxRjk2QUE1NjAwNEQyMkE4IC8q
IFVuaWZpZWRTb3VyY2UyLmNwcCAqLywKKwkJCQk1MzhFQzdFRDFGOTZBQTU1MDA0RDIyQTggLyog
VW5pZmllZFNvdXJjZTMtbW0ubW0gKi8sCiAJCQkJNTM4RUM3RUMxRjk2QUE1NDAwNEQyMkE4IC8q
IFVuaWZpZWRTb3VyY2UzLmNwcCAqLywKKwkJCQlERTVGODU0OTFGQTFBQkJEMDA2REI2M0EgLyog
VW5pZmllZFNvdXJjZTQtbW0ubW0gKi8sCiAJCQkJNTM4RUM3RUYxRjk2QUE1NzAwNEQyMkE4IC8q
IFVuaWZpZWRTb3VyY2U0LmNwcCAqLywKKwkJCQlERTVGODU2NTFGQTFBQkQ2MDA2REI2M0EgLyog
VW5pZmllZFNvdXJjZTUtbW0ubW0gKi8sCiAJCQkJNTM4RUM3RjAxRjk2QUE1ODAwNEQyMkE4IC8q
IFVuaWZpZWRTb3VyY2U1LmNwcCAqLywKKwkJCQlERTVGODU2QjFGQTFBQkRCMDA2REI2M0EgLyog
VW5pZmllZFNvdXJjZTYtbW0ubW0gKi8sCiAJCQkJNTM4RUM3RUIxRjk2QUE1MzAwNEQyMkE4IC8q
IFVuaWZpZWRTb3VyY2U2LmNwcCAqLywKKwkJCQlERTVGODU1RjFGQTFBQkQxMDA2REI2M0EgLyog
VW5pZmllZFNvdXJjZTctbW0ubW0gKi8sCiAJCQkJNTM4RUM3RjExRjk2QUE1OTAwNEQyMkE4IC8q
IFVuaWZpZWRTb3VyY2U3LmNwcCAqLywKKwkJCQlERTVGODUzRDFGQTFBQkIyMDA2REI2M0EgLyog
VW5pZmllZFNvdXJjZTgtbW0ubW0gKi8sCiAJCQkJNTM4RUM3RjIxRjk2QUE1QTAwNEQyMkE4IC8q
IFVuaWZpZWRTb3VyY2U4LmNwcCAqLywKKwkJCQlERTVGODU1NDFGQTFBQkM3MDA2REI2M0EgLyog
VW5pZmllZFNvdXJjZTktbW0ubW0gKi8sCiAJCQkJNTM4RUM3RkUxRjk2QUE3NjAwNEQyMkE4IC8q
IFVuaWZpZWRTb3VyY2U5LmNwcCAqLywKKwkJCQlERTVGODU2MzFGQTFBQkQ1MDA2REI2M0EgLyog
VW5pZmllZFNvdXJjZTEwLW1tLm1tICovLAogCQkJCTUzOEVDN0Y1MUY5NkFBNUUwMDREMjJBOCAv
KiBVbmlmaWVkU291cmNlMTAuY3BwICovLAorCQkJCURFNUY4NTYxMUZBMUFCRDMwMDZEQjYzQSAv
KiBVbmlmaWVkU291cmNlMTEtbW0ubW0gKi8sCiAJCQkJNTM4RUM3RjQxRjk2QUE1RDAwNEQyMkE4
IC8qIFVuaWZpZWRTb3VyY2UxMS5jcHAgKi8sCisJCQkJREU1Rjg1NjQxRkExQUJENTAwNkRCNjNB
IC8qIFVuaWZpZWRTb3VyY2UxMi1tbS5tbSAqLywKIAkJCQk1MzhFQzdGNjFGOTZBQTVGMDA0RDIy
QTggLyogVW5pZmllZFNvdXJjZTEyLmNwcCAqLywKKwkJCQlERTVGODU2QTFGQTFBQkRCMDA2REI2
M0EgLyogVW5pZmllZFNvdXJjZTEzLW1tLm1tICovLAogCQkJCTUzOEVDN0ZEMUY5NkFBNzQwMDRE
MjJBOCAvKiBVbmlmaWVkU291cmNlMTMuY3BwICovLAorCQkJCURFNUY4NTRFMUZBMUFCQzIwMDZE
QjYzQSAvKiBVbmlmaWVkU291cmNlMTQtbW0ubW0gKi8sCiAJCQkJNTM4RUM3RkMxRjk2QUE3MzAw
NEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UxNC5jcHAgKi8sCisJCQkJREU1Rjg1M0UxRkExQUJCMzAw
NkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxNS1tbS5tbSAqLywKIAkJCQk1MzhFQzdGRjFGOTZBQTc3
MDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTE1LmNwcCAqLywKKwkJCQlERTVGODU1RTFGQTFBQkQw
MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTE2LW1tLm1tICovLAogCQkJCTUzOEVDN0Y3MUY5NkFB
NjAwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMTYuY3BwICovLAorCQkJCURFNUY4NTRBMUZBMUFC
QkUwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMTctbW0ubW0gKi8sCiAJCQkJNTM4RUM4MDExRjk2
QUE3QTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UxNy5jcHAgKi8sCisJCQkJREU1Rjg1NTAxRkEx
QUJDMzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxOC1tbS5tbSAqLywKIAkJCQk1MzhFQzdGQjFG
OTZBQTcyMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTE4LmNwcCAqLywKKwkJCQlERTVGODU1MzFG
QTFBQkM2MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTE5LW1tLm1tICovLAogCQkJCTUzOEVDN0Y5
MUY5NkFBNkUwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMTkuY3BwICovLAorCQkJCURFNUY4NTUy
MUZBMUFCQzUwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMjAtbW0ubW0gKi8sCiAJCQkJNTM4RUM4
MDAxRjk2QUE3ODAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UyMC5jcHAgKi8sCisJCQkJREU1Rjg1
NUExRkExQUJDRDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UyMS1tbS5tbSAqLywKIAkJCQk1MzhF
QzgzNTFGOTkzRjBEMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTIxLmNwcCAqLywKKwkJCQlERTVG
ODU0RDFGQTFBQkMxMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTIyLW1tLm1tICovLAogCQkJCTUz
OEVDODRBMUY5OTNGMTgwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMjIuY3BwICovLAorCQkJCURF
NUY4NTQxMUZBMUFCQjYwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMjMtbW0ubW0gKi8sCiAJCQkJ
NTM4RUM4MkExRjk5M0YwNzAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UyMy5jcHAgKi8sCisJCQkJ
REU1Rjg1NDYxRkExQUJCQjAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UyNC1tbS5tbSAqLywKIAkJ
CQk1MzhFQzgzRjFGOTkzRjEyMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTI0LmNwcCAqLywKKwkJ
CQlERTVGODU0NzFGQTFBQkJCMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTI1LW1tLm1tICovLAog
CQkJCTUzOEVDODNBMUY5OTNGMTAwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMjUuY3BwICovLAor
CQkJCURFNUY4NTVEMUZBMUFCQ0YwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMjYtbW0ubW0gKi8s
CiAJCQkJNTM4RUM4NEMxRjk5M0YxOTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UyNi5jcHAgKi8s
CisJCQkJREU1Rjg1NjkxRkExQUJEQTAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UyNy1tbS5tbSAq
LywKIAkJCQk1MzhFQzg1RjFGOTkzRjIzMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTI3LmNwcCAq
LywKKwkJCQlERTVGODUzRjFGQTFBQkI0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTI4LW1tLm1t
ICovLAogCQkJCTUzOEVDODRCMUY5OTNGMTgwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMjguY3Bw
ICovLAorCQkJCURFNUY4NTY4MUZBMUFCRDkwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMjktbW0u
bW0gKi8sCiAJCQkJNTM4RUM4NTUxRjk5M0YxRTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UyOS5j
cHAgKi8sCisJCQkJREU1Rjg1NDIxRkExQUJCNzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzMC1t
bS5tbSAqLywKIAkJCQk1MzhFQzg3NjFGOTkzRjJGMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTMw
LmNwcCAqLywKKwkJCQlERTVGODU1MTFGQTFBQkM0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTMx
LW1tLm1tICovLAogCQkJCTUzOEVDODVCMUY5OTNGMjEwMDREMjJBOCAvKiBVbmlmaWVkU291cmNl
MzEuY3BwICovLAorCQkJCURFNUY4NTYwMUZBMUFCRDIwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNl
MzItbW0ubW0gKi8sCiAJCQkJNTM4RUM4MkIxRjk5M0YwODAwNEQyMkE4IC8qIFVuaWZpZWRTb3Vy
Y2UzMi5jcHAgKi8sCisJCQkJREU1Rjg1NUIxRkExQUJDRTAwNkRCNjNBIC8qIFVuaWZpZWRTb3Vy
Y2UzMy1tbS5tbSAqLywKIAkJCQk1MzhFQzg3RjFGOTkzRjM0MDA0RDIyQTggLyogVW5pZmllZFNv
dXJjZTMzLmNwcCAqLywKKwkJCQlERTVGODU1NzFGQTFBQkNBMDA2REI2M0EgLyogVW5pZmllZFNv
dXJjZTM0LW1tLm1tICovLAogCQkJCTUzOEVDODU3MUY5OTNGMUYwMDREMjJBOCAvKiBVbmlmaWVk
U291cmNlMzQuY3BwICovLAorCQkJCURFNUY4NTQwMUZBMUFCQjUwMDZEQjYzQSAvKiBVbmlmaWVk
U291cmNlMzUtbW0ubW0gKi8sCiAJCQkJNTM4RUM4N0ExRjk5M0YzMTAwNEQyMkE4IC8qIFVuaWZp
ZWRTb3VyY2UzNS5jcHAgKi8sCisJCQkJREU1Rjg1NTUxRkExQUJDODAwNkRCNjNBIC8qIFVuaWZp
ZWRTb3VyY2UzNi1tbS5tbSAqLywKIAkJCQk1MzhFQzg2MDFGOTkzRjIzMDA0RDIyQTggLyogVW5p
ZmllZFNvdXJjZTM2LmNwcCAqLywKKwkJCQlERTVGODU0NTFGQTFBQkJBMDA2REI2M0EgLyogVW5p
ZmllZFNvdXJjZTM3LW1tLm1tICovLAogCQkJCTUzOEVDODMyMUY5OTNGMEMwMDREMjJBOCAvKiBV
bmlmaWVkU291cmNlMzcuY3BwICovLAorCQkJCURFNUY4NTVDMUZBMUFCQ0UwMDZEQjYzQSAvKiBV
bmlmaWVkU291cmNlMzgtbW0ubW0gKi8sCiAJCQkJNTM4RUM4N0IxRjk5M0YzMjAwNEQyMkE4IC8q
IFVuaWZpZWRTb3VyY2UzOC5jcHAgKi8sCisJCQkJREU1Rjg1NTkxRkExQUJDQzAwNkRCNjNBIC8q
IFVuaWZpZWRTb3VyY2UzOS1tbS5tbSAqLywKIAkJCQk1MzhFQzg3QzFGOTkzRjMyMDA0RDIyQTgg
LyogVW5pZmllZFNvdXJjZTM5LmNwcCAqLywKKwkJCQlERTVGODU1NjFGQTFBQkM5MDA2REI2M0Eg
LyogVW5pZmllZFNvdXJjZTQwLW1tLm1tICovLAogCQkJCTUzOEVDODQ5MUY5OTNGMTcwMDREMjJB
OCAvKiBVbmlmaWVkU291cmNlNDAuY3BwICovLAorCQkJCURFNUY4NTY2MUZBMUFCRDcwMDZEQjYz
QSAvKiBVbmlmaWVkU291cmNlNDEtbW0ubW0gKi8sCiAJCQkJNTM4RUM4NEUxRjk5M0YxQTAwNEQy
MkE4IC8qIFVuaWZpZWRTb3VyY2U0MS5jcHAgKi8sCisJCQkJREU1Rjg1NEYxRkExQUJDMzAwNkRC
NjNBIC8qIFVuaWZpZWRTb3VyY2U0Mi1tbS5tbSAqLywKIAkJCQk1MzhFQzgzQjFGOTkzRjEwMDA0
RDIyQTggLyogVW5pZmllZFNvdXJjZTQyLmNwcCAqLywKKwkJCQlERTVGODU0ODFGQTFBQkJDMDA2
REI2M0EgLyogVW5pZmllZFNvdXJjZTQzLW1tLm1tICovLAogCQkJCTUzOEVDODUyMUY5OTNGMUMw
MDREMjJBOCAvKiBVbmlmaWVkU291cmNlNDMuY3BwICovLAorCQkJCURFNUY4NTQzMUZBMUFCQjgw
MDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDQtbW0ubW0gKi8sCiAJCQkJNTM4RUM4NkExRjk5M0Yy
OTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U0NC5jcHAgKi8sCisJCQkJREU1Rjg1NTgxRkExQUJD
QjAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0NS1tbS5tbSAqLywKIAkJCQk1MzhFQzgzQzFGOTkz
RjExMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTQ1LmNwcCAqLywKKwkJCQlERTVGODU0NDFGQTFB
QkI5MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ2LW1tLm1tICovLAogCQkJCTUzOEVDODc3MUY5
OTNGMzAwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNDYuY3BwICovLAorCQkJCURFNUY4NTYyMUZB
MUFCRDQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDctbW0ubW0gKi8sCiAJCQkJNTM4RUM4Njgx
Rjk5M0YyODAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U0Ny5jcHAgKi8sCisJCQkJREU1Rjg1Njcx
RkExQUJEODAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0OC1tbS5tbSAqLywKIAkJCQk1MzhFQzg0
MzFGOTkzRjE0MDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTQ4LmNwcCAqLywKKwkJCQlERTVGODU0
QjFGQTFBQkJGMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ5LW1tLm1tICovLAogCQkJCTUzOEVD
ODdEMUY5OTNGMzMwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNDkuY3BwICovLAorCQkJCURFNUY4
NTRDMUZBMUFCQzAwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTAtbW0ubW0gKi8sCiAJCQkJNTM4
RUM4MjcxRjk5M0YwNjAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U1MC5jcHAgKi8sCisJCQkJREU1
Rjg2MzYxRkEyQUYwNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1MS1tbS5tbSAqLywKIAkJCQk1
MzhFQzg0NzFGOTkzRjE2MDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTUxLmNwcCAqLywKKwkJCQlE
RTVGODYzNzFGQTJBRjA1MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTUyLW1tLm1tICovLAogCQkJ
CTUzOEVDODgwMUY5OTNGMzQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNTIuY3BwICovLAorCQkJ
CURFNUY4NjM1MUZBMkFGMDMwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTMtbW0ubW0gKi8sCiAJ
CQkJNTM4RUM4MkMxRjk5M0YwOTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U1My5jcHAgKi8sCisJ
CQkJREU1Rjg2MzMxRkEyQUYwMDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1NC1tbS5tbSAqLywK
IAkJCQk1MzhFQzg2OTFGOTkzRjI4MDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTU0LmNwcCAqLywK
KwkJCQlERTVGODYzQjFGQTJBRjA4MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTU1LW1tLm1tICov
LAogCQkJCTUzOEVDODZDMUY5OTNGMkEwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNTUuY3BwICov
LAorCQkJCURFNUY4NjM0MUZBMkFGMDEwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTYtbW0ubW0g
Ki8sCiAJCQkJNTM4RUM4ODUxRjk5M0YzQTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U1Ni5jcHAg
Ki8sCisJCQkJREU1Rjg2MzgxRkEyQUYwNjAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1Ny1tbS5t
bSAqLywKIAkJCQk1MzhFQzg3ODFGOTkzRjMwMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTU3LmNw
cCAqLywKKwkJCQlERTVGODYzOTFGQTJBRjA3MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTU4LW1t
Lm1tICovLAogCQkJCTUzOEVDODJGMUY5OTNGMEEwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNTgu
Y3BwICovLAorCQkJCURFNUY4NjMyMUZBMkFFRkYwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTkt
bW0ubW0gKi8sCiAJCQkJNTM4RUM4NkIxRjk5M0YyOTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U1
OS5jcHAgKi8sCisJCQkJREU1Rjg2M0ExRkEyQUYwNzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U2
MC1tbS5tbSAqLywKIAkJCQk1MzhFQzg3OTFGOTkzRjMxMDA0RDIyQTggLyogVW5pZmllZFNvdXJj
ZTYwLmNwcCAqLywKIAkJCQk1MzhFQzg3RTFGOTkzRjMzMDA0RDIyQTggLyogVW5pZmllZFNvdXJj
ZTYxLmNwcCAqLywKIAkJCQk1MzhFQzg1QTFGOTkzRjIwMDA0RDIyQTggLyogVW5pZmllZFNvdXJj
ZTYyLmNwcCAqLywKQEAgLTI5NDAxLDYgKzI5NDA2LDcgQEAKIAkJCQk1MTdBNTJGMDFGNDc1MzVC
MDBEQ0RDMEEgLyogU1dTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMTFDMDAzMUZBQTJF
OTUwMEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY2
NDU5NzFGNEE2ODZGMDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCBpbiBIZWFkZXJz
ICovLAorCQkJCTUxODU0MzBCMUZCNjc4NDUwMDQ3OEY5NSAvKiBTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0E1MzQ2MUY1MEMxN0YwMERDREMwQSAv
KiBTV1NlcnZlcldvcmtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE4MDgxMTcxNkZDRjlDQjAw
QjgwRDA3IC8qIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjAzQzA3NDE4ODQ2OTVFMDBBNUY4Q0EgLyogU3lzdGVtTWVtb3J5LmggaW4gSGVhZGVycyAqLywK
QEAgLTMwMzUwLDEyNCArMzAzNTYsMTI0IEBACiAJCQkJQkU4OEUwQzExNzE1Q0UyNjAwNjU4RDk4
IC8qIFRyYWNrTGlzdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDczQkRDMDUxRjY4NDM2
MTAwRUUzNEVEIC8qIFRyYWNrUHJpdmF0ZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4
RUM4MDMxRjk2QUY4MTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UxLW1tLm1tIGluIFNvdXJjZXMg
Ki8sCi0JCQkJNTM4RUM4MDUxRjk2QUY4MTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UyLW1tLm1t
IGluIFNvdXJjZXMgKi8sCi0JCQkJNTM4RUM4MDcxRjk2QUY4MTAwNEQyMkE4IC8qIFVuaWZpZWRT
b3VyY2UzLW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1NkMxRkExQUJGMzAwNkRCNjNB
IC8qIFVuaWZpZWRTb3VyY2U0LW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1NkQxRkEx
QUJGMzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1LW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJ
REU1Rjg1NkUxRkExQUJGMzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U2LW1tLm1tIGluIFNvdXJj
ZXMgKi8sCi0JCQkJREU1Rjg1NkYxRkExQUJGMzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U3LW1t
Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1NzAxRkExQUJGMzAwNkRCNjNBIC8qIFVuaWZp
ZWRTb3VyY2U4LW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1NzExRkExQUJGMzAwNkRC
NjNBIC8qIFVuaWZpZWRTb3VyY2U5LW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1NzIx
RkExQUJGMzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxMC1tbS5tbSBpbiBTb3VyY2VzICovLAot
CQkJCURFNUY4NTczMUZBMUFCRjMwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMTEtbW0ubW0gaW4g
U291cmNlcyAqLywKLQkJCQlERTVGODU3NDFGQTFBQkYzMDA2REI2M0EgLyogVW5pZmllZFNvdXJj
ZTEyLW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1NzUxRkExQUJGMzAwNkRCNjNBIC8q
IFVuaWZpZWRTb3VyY2UxMy1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCURFNUY4NTc2MUZBMUFC
RjMwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMTQtbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlE
RTVGODU3NzFGQTFBQkYzMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTE1LW1tLm1tIGluIFNvdXJj
ZXMgKi8sCi0JCQkJREU1Rjg1NzgxRkExQUJGMzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxNi1t
bS5tbSBpbiBTb3VyY2VzICovLAotCQkJCURFNUY4NTc5MUZBMUFCRjQwMDZEQjYzQSAvKiBVbmlm
aWVkU291cmNlMTctbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVGODU3QTFGQTFBQkY0MDA2
REI2M0EgLyogVW5pZmllZFNvdXJjZTE4LW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1
N0IxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxOS1tbS5tbSBpbiBTb3VyY2VzICov
LAotCQkJCURFNUY4NTdDMUZBMUFCRjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMjAtbW0ubW0g
aW4gU291cmNlcyAqLywKLQkJCQlERTVGODU3RDFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNv
dXJjZTIxLW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1N0UxRkExQUJGNDAwNkRCNjNB
IC8qIFVuaWZpZWRTb3VyY2UyMi1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCURFNUY4NTdGMUZB
MUFCRjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMjMtbW0ubW0gaW4gU291cmNlcyAqLywKLQkJ
CQlERTVGODU4MDFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTI0LW1tLm1tIGluIFNv
dXJjZXMgKi8sCi0JCQkJREU1Rjg1ODExRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2Uy
NS1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCURFNUY4NTgyMUZBMUFCRjQwMDZEQjYzQSAvKiBV
bmlmaWVkU291cmNlMjYtbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVGODU4MzFGQTFBQkY0
MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTI3LW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1
Rjg1ODQxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UyOC1tbS5tbSBpbiBTb3VyY2Vz
ICovLAotCQkJCURFNUY4NTg1MUZBMUFCRjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMjktbW0u
bW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVGODU4NjFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmll
ZFNvdXJjZTMwLW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1ODcxRkExQUJGNDAwNkRC
NjNBIC8qIFVuaWZpZWRTb3VyY2UzMS1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCURFNUY4NTg4
MUZBMUFCRjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMzItbW0ubW0gaW4gU291cmNlcyAqLywK
LQkJCQlERTVGODU4OTFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTMzLW1tLm1tIGlu
IFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1OEExRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3Vy
Y2UzNC1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCURFNUY4NThCMUZBMUFCRjQwMDZEQjYzQSAv
KiBVbmlmaWVkU291cmNlMzUtbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVGODU4QzFGQTFB
QkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTM2LW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJ
REU1Rjg1OEQxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzNy1tbS5tbSBpbiBTb3Vy
Y2VzICovLAotCQkJCURFNUY4NThFMUZBMUFCRjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMzgt
bW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVGODU4RjFGQTFBQkY0MDA2REI2M0EgLyogVW5p
ZmllZFNvdXJjZTM5LW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1OTAxRkExQUJGNDAw
NkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0MC1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCURFNUY4
NTkxMUZBMUFCRjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDEtbW0ubW0gaW4gU291cmNlcyAq
LywKLQkJCQlERTVGODU5MjFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQyLW1tLm1t
IGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1OTMxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRT
b3VyY2U0My1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCURFNUY4NTk0MUZBMUFCRjQwMDZEQjYz
QSAvKiBVbmlmaWVkU291cmNlNDQtbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVGODU5NTFG
QTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ1LW1tLm1tIGluIFNvdXJjZXMgKi8sCi0J
CQkJREU1Rjg1OTYxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0Ni1tbS5tbSBpbiBT
b3VyY2VzICovLAotCQkJCURFNUY4NTk3MUZBMUFCRjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNl
NDctbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVGODU5ODFGQTFBQkY0MDA2REI2M0EgLyog
VW5pZmllZFNvdXJjZTQ4LW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1OTkxRkExQUJG
NDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0OS1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCURF
NUY4NTlBMUZBMUFCRjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTAtbW0ubW0gaW4gU291cmNl
cyAqLywKLQkJCQlERTVGODY1MDFGQTJBRjI0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTUxLW1t
Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg2NTExRkEyQUYyNDAwNkRCNjNBIC8qIFVuaWZp
ZWRTb3VyY2U1Mi1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCURFNUY4NjUyMUZBMkFGMjQwMDZE
QjYzQSAvKiBVbmlmaWVkU291cmNlNTMtbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVGODY1
MzFGQTJBRjI0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTU0LW1tLm1tIGluIFNvdXJjZXMgKi8s
Ci0JCQkJREU1Rjg2NTQxRkEyQUYyNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1NS1tbS5tbSBp
biBTb3VyY2VzICovLAotCQkJCURFNUY4NjU1MUZBMkFGMjQwMDZEQjYzQSAvKiBVbmlmaWVkU291
cmNlNTYtbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVGODY1NjFGQTJBRjI0MDA2REI2M0Eg
LyogVW5pZmllZFNvdXJjZTU3LW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg2NTcxRkEy
QUYyNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1OC1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJ
CURFNUY4NjU4MUZBMkFGMjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTktbW0ubW0gaW4gU291
cmNlcyAqLywKLQkJCQlERTVGODY1OTFGQTJBRjI0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTYw
LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4MDIxRjk2QUY4MTAwNEQyMkE4IC8qIFVu
aWZpZWRTb3VyY2UxLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUzOEVDODA1MUY5NkFGODEwMDRE
MjJBOCAvKiBVbmlmaWVkU291cmNlMi1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODA0
MUY5NkFGODEwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMi5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk1MzhFQzgwNzFGOTZBRjgxMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTMtbW0ubW0gaW4gU291
cmNlcyAqLywKIAkJCQk1MzhFQzgwNjFGOTZBRjgxMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTMu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1NkMxRkExQUJGMzAwNkRCNjNBIC8qIFVuaWZp
ZWRTb3VyY2U0LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4MDgxRjk2QUY4MTAwNEQy
MkE4IC8qIFVuaWZpZWRTb3VyY2U0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCURFNUY4NTZEMUZB
MUFCRjMwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTUzOEVDODA5MUY5NkFGODEwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlERTVGODU2RTFGQTFBQkYzMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTYtbW0u
bW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzhFQzgwQTFGOTZBRjgxMDA0RDIyQTggLyogVW5pZmll
ZFNvdXJjZTYuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1NkYxRkExQUJGMzAwNkRCNjNB
IC8qIFVuaWZpZWRTb3VyY2U3LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4MEIxRjk2
QUY4MTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U3LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCURF
NUY4NTcwMUZBMUFCRjMwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlOC1tbS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTUzOEVDODBDMUY5NkFGODEwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlOC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlERTVGODU3MTFGQTFBQkYzMDA2REI2M0EgLyogVW5pZmllZFNv
dXJjZTktbW0ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzhFQzgwRDFGOTZBRjgxMDA0RDIyQTgg
LyogVW5pZmllZFNvdXJjZTkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1NzIxRkExQUJG
MzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxMC1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUz
OEVDODBFMUY5NkFGODEwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMTAuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJREU1Rjg1NzMxRkExQUJGMzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxMS1tbS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODBGMUY5NkFGODEwMDREMjJBOCAvKiBVbmlmaWVk
U291cmNlMTEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1NzQxRkExQUJGMzAwNkRCNjNB
IC8qIFVuaWZpZWRTb3VyY2UxMi1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODEwMUY5
NkFGODEwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMTIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
REU1Rjg1NzUxRkExQUJGMzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxMy1tbS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTUzOEVDODExMUY5NkFGODEwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMTMu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1NzYxRkExQUJGMzAwNkRCNjNBIC8qIFVuaWZp
ZWRTb3VyY2UxNC1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODEyMUY5NkFGODEwMDRE
MjJBOCAvKiBVbmlmaWVkU291cmNlMTQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1Nzcx
RkExQUJGMzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxNS1tbS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTUzOEVDODEzMUY5NkFGODEwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMTUuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJREU1Rjg1NzgxRkExQUJGMzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2Ux
Ni1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODE0MUY5NkFGODEwMDREMjJBOCAvKiBV
bmlmaWVkU291cmNlMTYuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1NzkxRkExQUJGNDAw
NkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxNy1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVD
ODE1MUY5NkFGODEwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMTcuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJREU1Rjg1N0ExRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxOC1tbS5tbSBp
biBTb3VyY2VzICovLAogCQkJCTUzOEVDODE2MUY5NkFGODEwMDREMjJBOCAvKiBVbmlmaWVkU291
cmNlMTguY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1N0IxRkExQUJGNDAwNkRCNjNBIC8q
IFVuaWZpZWRTb3VyY2UxOS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODE3MUY5NkFG
ODEwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMTkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1
Rjg1N0MxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UyMC1tbS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTUzOEVDODE4MUY5NkFGODEwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMjAuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1N0QxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRT
b3VyY2UyMS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODg2MUY5OTNGOUMwMDREMjJB
OCAvKiBVbmlmaWVkU291cmNlMjEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1N0UxRkEx
QUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UyMi1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTUzOEVDODg3MUY5OTNGOUMwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMjIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJREU1Rjg1N0YxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UyMy1t
bS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODg4MUY5OTNGOUMwMDREMjJBOCAvKiBVbmlm
aWVkU291cmNlMjMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1ODAxRkExQUJGNDAwNkRC
NjNBIC8qIFVuaWZpZWRTb3VyY2UyNC1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODg5
MUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMjQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJREU1Rjg1ODExRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UyNS1tbS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTUzOEVDODhBMUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNl
MjUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1ODIxRkExQUJGNDAwNkRCNjNBIC8qIFVu
aWZpZWRTb3VyY2UyNi1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODhCMUY5OTNGOUQw
MDREMjJBOCAvKiBVbmlmaWVkU291cmNlMjYuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1
ODMxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UyNy1tbS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTUzOEVDODhDMUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMjcuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1ODQxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3Vy
Y2UyOC1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODhEMUY5OTNGOUQwMDREMjJBOCAv
KiBVbmlmaWVkU291cmNlMjguY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1ODUxRkExQUJG
NDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UyOS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUz
OEVDODhFMUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMjkuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJREU1Rjg1ODYxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzMC1tbS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODhGMUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVk
U291cmNlMzAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1ODcxRkExQUJGNDAwNkRCNjNB
IC8qIFVuaWZpZWRTb3VyY2UzMS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODkwMUY5
OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMzEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
REU1Rjg1ODgxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzMi1tbS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTUzOEVDODkxMUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMzIu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1ODkxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZp
ZWRTb3VyY2UzMy1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODkyMUY5OTNGOUQwMDRE
MjJBOCAvKiBVbmlmaWVkU291cmNlMzMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1OEEx
RkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzNC1tbS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTUzOEVDODkzMUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMzQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJREU1Rjg1OEIxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2Uz
NS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODk0MUY5OTNGOUQwMDREMjJBOCAvKiBV
bmlmaWVkU291cmNlMzUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1OEMxRkExQUJGNDAw
NkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzNi1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVD
ODk1MUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMzYuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJREU1Rjg1OEQxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzNy1tbS5tbSBp
biBTb3VyY2VzICovLAogCQkJCTUzOEVDODk2MUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291
cmNlMzcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1OEUxRkExQUJGNDAwNkRCNjNBIC8q
IFVuaWZpZWRTb3VyY2UzOC1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODk3MUY5OTNG
OUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMzguY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1
Rjg1OEYxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzOS1tbS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTUzOEVDODk4MUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMzkuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1OTAxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRT
b3VyY2U0MC1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODk5MUY5OTNGOUQwMDREMjJB
OCAvKiBVbmlmaWVkU291cmNlNDAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1OTExRkEx
QUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0MS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTUzOEVDODlBMUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNDEuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJREU1Rjg1OTIxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0Mi1t
bS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODlCMUY5OTNGOUQwMDREMjJBOCAvKiBVbmlm
aWVkU291cmNlNDIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1OTMxRkExQUJGNDAwNkRC
NjNBIC8qIFVuaWZpZWRTb3VyY2U0My1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODlD
MUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNDMuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJREU1Rjg1OTQxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0NC1tbS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTUzOEVDODlEMUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNl
NDQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1OTUxRkExQUJGNDAwNkRCNjNBIC8qIFVu
aWZpZWRTb3VyY2U0NS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODlFMUY5OTNGOUQw
MDREMjJBOCAvKiBVbmlmaWVkU291cmNlNDUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1
OTYxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0Ni1tbS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTUzOEVDODlGMUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNDYuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1OTcxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3Vy
Y2U0Ny1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDOEEwMUY5OTNGOUQwMDREMjJBOCAv
KiBVbmlmaWVkU291cmNlNDcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1OTgxRkExQUJG
NDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0OC1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUz
OEVDOEExMUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNDguY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJREU1Rjg1OTkxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0OS1tbS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDOEEyMUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVk
U291cmNlNDkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1OUExRkExQUJGNDAwNkRCNjNB
IC8qIFVuaWZpZWRTb3VyY2U1MC1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDOEEzMUY5
OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNTAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
REU1Rjg2NTAxRkEyQUYyNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1MS1tbS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTUzOEVDOEE0MUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNTEu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg2NTExRkEyQUYyNDAwNkRCNjNBIC8qIFVuaWZp
ZWRTb3VyY2U1Mi1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDOEE1MUY5OTNGOUQwMDRE
MjJBOCAvKiBVbmlmaWVkU291cmNlNTIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg2NTIx
RkEyQUYyNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1My1tbS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTUzOEVDOEE2MUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNTMuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJREU1Rjg2NTMxRkEyQUYyNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1
NC1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDOEE3MUY5OTNGOUQwMDREMjJBOCAvKiBV
bmlmaWVkU291cmNlNTQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg2NTQxRkEyQUYyNDAw
NkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1NS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVD
OEE4MUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNTUuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJREU1Rjg2NTUxRkEyQUYyNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1Ni1tbS5tbSBp
biBTb3VyY2VzICovLAogCQkJCTUzOEVDOEE5MUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291
cmNlNTYuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg2NTYxRkEyQUYyNDAwNkRCNjNBIC8q
IFVuaWZpZWRTb3VyY2U1Ny1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDOEFBMUY5OTNG
OUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNTcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1
Rjg2NTcxRkEyQUYyNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1OC1tbS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTUzOEVDOEFCMUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNTguY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg2NTgxRkEyQUYyNDAwNkRCNjNBIC8qIFVuaWZpZWRT
b3VyY2U1OS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDOEFDMUY5OTNGOUQwMDREMjJB
OCAvKiBVbmlmaWVkU291cmNlNTkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg2NTkxRkEy
QUYyNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U2MC1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTUzOEVDOEFEMUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNjAuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTM4RUM4QUUxRjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U2MS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzhFQzhBRjFGOTkzRjlEMDA0RDIyQTggLyogVW5pZmll
ZFNvdXJjZTYyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcAppbmRleCA0
ZDMzNTAxYzZkYWUxYmE2YTU4NTdhMzcwNzdmYmE2ZjFiMDliMDVhLi5mMGVjNzY2ZTM1MzhkNGQ5
MjQxZjc4MGIzOGUzNzNkMDBlOTYwN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcApAQCAtMzIs
NyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIHsgcmVnaXN0cmF0aW9uS2V5Lmlzb2xhdGVkQ29weSgpLCBzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLCBzY3JpcHRVUkwuaXNvbGF0ZWRDb3B5KCkg
fTsKKyAgICByZXR1cm4geyByZWdpc3RyYXRpb25LZXkuaXNvbGF0ZWRDb3B5KCksIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBzY3JpcHQuaXNvbGF0ZWRDb3B5KCksIHNjcmlwdFVSTC5pc29sYXRl
ZENvcHkoKSwgd29ya2VyVHlwZSB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRl
eHREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRleHREYXRhLmgKaW5kZXggMDhjMzFiYzk1NDBkZGJhZTMyNjQ4NGRjNTllMTc0MDhhOTg2ZDVi
NC4uYjdkNjZmMWU1YTRhNGVkZGUxNTY4M2VhODJlMzRkNDQyZDUyZWE3MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIgogI2luY2x1
ZGUgIlVSTC5oIgorI2luY2x1ZGUgIldvcmtlclR5cGUuaCIKIAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKIApAQCAtMzgsNiArMzksNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhIHsKICAgICBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmll
cjsKICAgICBTdHJpbmcgc2NyaXB0OwogICAgIFVSTCBzY3JpcHRVUkw7CisgICAgV29ya2VyVHlw
ZSB3b3JrZXJUeXBlOwogICAgIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IGRlY29kZShEZWNvZGVyJik7
CkBAIC00OCw3ICs1MCw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgewogdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IHJlZ2lzdHJhdGlv
bktleSA8PCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA8PCBzY3JpcHQgPDwgc2NyaXB0VVJMOwor
ICAgIGVuY29kZXIgPDwgcmVnaXN0cmF0aW9uS2V5IDw8IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IDw8IHNjcmlwdCA8PCBzY3JpcHRVUkwgPDwgd29ya2VyVHlwZTsKIH0KIAogdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KQEAgLTY5LDggKzcxLDEyIEBAIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtl
ckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29kZShEZWNvZGVyCiAg
ICAgVVJMIHNjcmlwdFVSTDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNjcmlwdFVSTCkpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4ge3sgV1RGTW92ZSgqcmVn
aXN0cmF0aW9uS2V5KSwgV1RGTW92ZSgqc2VydmljZVdvcmtlcklkZW50aWZpZXIpLCBXVEZNb3Zl
KHNjcmlwdCksIFdURk1vdmUoc2NyaXB0VVJMKSB9fTsKKyAgICAKKyAgICBXb3JrZXJUeXBlIHdv
cmtlclR5cGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0od29ya2VyVHlwZSkpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAgcmV0dXJuIHt7IFdURk1vdmUoKnJl
Z2lzdHJhdGlvbktleSksIFdURk1vdmUoKnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSwgV1RGTW92
ZShzY3JpcHQpLCBXVEZNb3ZlKHNjcmlwdFVSTCksIHdvcmtlclR5cGUgfX07CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggNGJmMTlkODViMjI5
YTFlMGU4ZjgzNmQ4MzdjOTQ4ZjQ0NTkxYjE3Zi4uM2EyMGIzYTlkNmEyMGY5MDBlZjdkYzEzNTEy
MjZlNzM4ODBkZTU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTMzLDkgKzMzLDggQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OlNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
Y29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09u
bGluZSwgU2VydmljZVdvcmtlclRocmVhZCYgdGhyZWFkLCBib29sIHNob3VsZEJ5cGFzc01haW5X
b3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdp
biwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94
eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKK1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6U2VydmljZVdv
cmtlckdsb2JhbFNjb3BlKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1c2Vy
QWdlbnQsIGJvb2wgaXNPbmxpbmUsIFNlcnZpY2VXb3JrZXJUaHJlYWQmIHRocmVhZCwgYm9vbCBz
aG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZjxTZWN1cml0eU9y
aWdpbj4mJiB0b3BPcmlnaW4sIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgSURCQ2xpZW50OjpJ
REJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tl
dFByb3ZpZGVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgOiBXb3JrZXJHbG9iYWxT
Y29wZSh1cmwsIGlkZW50aWZpZXIsIHVzZXJBZ2VudCwgaXNPbmxpbmUsIHRocmVhZCwgc2hvdWxk
QnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBXVEZNb3ZlKHRvcE9yaWdpbiks
IHRpbWVPcmlnaW4sIGNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIHNlc3Npb25JRCkK
LSAgICAsIG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIpCiAgICAgLCBtX2NvbnRleHREYXRhKGNyb3NzVGhyZWFkQ29weShkYXRhKSkKICAgICAs
IG1fY2xpZW50cyhTZXJ2aWNlV29ya2VyQ2xpZW50czo6Y3JlYXRlKCp0aGlzKSkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUuaAppbmRleCBlZTQ5NTg2OTI0MGVlZmY3MmQ4MmViN2VmNDMzNGJjYWNiZGZkZGQ3
Li45MDAxNTE3ZGRmNjQ0ZDk4OTUwMjQ1OWJmNTllNjI1NDVlNjc0NjA5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS5oCkBAIC01MSw4ICs1MSw2IEBAIHB1YmxpYzoKICAgICBTZXJ2aWNlV29ya2VyQ2xpZW50
cyYgY2xpZW50cygpIHsgcmV0dXJuIG1fY2xpZW50cy5nZXQoKTsgfQogICAgIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb24qIHJlZ2lzdHJhdGlvbigpOwogICAgIAotICAgIHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllcjsgfQotCiAgICAgdm9pZCBza2lwV2FpdGluZyhSZWY8RGVmZXJyZWRQcm9taXNl
PiYmKTsKIAogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkg
Y29uc3QgZmluYWw7CkBAIC02MCw5ICs1OCw4IEBAIHB1YmxpYzoKICAgICBTZXJ2aWNlV29ya2Vy
VGhyZWFkJiB0aHJlYWQoKTsKIAogcHJpdmF0ZToKLSAgICBTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YSYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUsIFNlcnZpY2VXb3JrZXJUaHJlYWQm
LCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgUmVmPFNl
Y3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBJREJD
bGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKiwgUEFMOjpTZXNzaW9u
SUQpOworICAgIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShjb25zdCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50LCBib29sIGlzT25saW5lLCBTZXJ2aWNlV29ya2VyVGhyZWFkJiwgYm9v
bCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZjxTZWN1cml0
eU9yaWdpbj4mJiB0b3BPcmlnaW4sIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgSURCQ2xpZW50
OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciosIFBBTDo6U2Vzc2lvbklEKTsK
IAotICAgIHVpbnQ2NF90IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXI7CiAgICAgU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhIG1fY29udGV4dERhdGE7CiAgICAgUmVmPFNlcnZpY2VXb3JrZXJD
bGllbnRzPiBtX2NsaWVudHM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJUeXBlcy5oCmluZGV4IGEzYzZjM2U2MTc4ZWI4NWU0ODQyZmMx
YTA2ZDNkZWE0ZWUyODRhYTIuLmM3MGFlMDhhYTQ1N2JmMzQwMGQxOTE2NmZlOGUyNzhiNWIxMzNh
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlclR5cGVzLmgKQEAgLTUwLDYgKzUwLDkgQEAgZW51bSBjbGFzcyBTaG91bGROb3RpZnlXaGVu
UmVzb2x2ZWQgeyBObywgWWVzIH07CiBlbnVtIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyVHlwZSB7IH07CiB1c2luZyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
ciA9IE9iamVjdElkZW50aWZpZXI8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXJU
eXBlPjsKIAorZW51bSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyVHlwZSB7
IH07Cit1c2luZyBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyID0gT2JqZWN0
SWRlbnRpZmllcjxTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyVHlwZT47CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggNjMzOGU0ZTc1NWU2ZjRkZjgyMTY0
MTVkMjFlMmVmNGM0Mzk2MTFlNi4uMjNjNmJiNmY4ZWNmMmM4MmVkODVlOTE1ZGY0YTk4NTcxMjc3
NzljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTczLDkgKzczLDggQEAgcHJp
dmF0ZToKIC8vIEZJWE1FOiBVc2UgYSB2YWxpZCBpc09ubGluZSBmbGFnCiAvLyBGSVhNRTogVXNl
IHZhbGlkIHJ1bnRpbWUgZmxhZ3MKIAotU2VydmljZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtl
clRocmVhZCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhJiBkYXRhLCBQQUw6OlNlc3Npb25JRCwgV29ya2VyTG9hZGVyUHJv
eHkmIGxvYWRlclByb3h5LCBXb3JrZXJEZWJ1Z2dlclByb3h5JiBkZWJ1Z2dlclByb3h5KQorU2Vy
dmljZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZChjb25zdCBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEmIGRhdGEsIFBBTDo6U2Vzc2lvbklELCBXb3JrZXJMb2FkZXJQcm94eSYgbG9h
ZGVyUHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkmIGRlYnVnZ2VyUHJveHkpCiAgICAgOiBXb3Jr
ZXJUaHJlYWQoZGF0YS5zY3JpcHRVUkwsICJzZXJ2aWNld29ya2VyOiIgKyBJbnNwZWN0b3I6Oklk
ZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpLCBBU0NJSUxpdGVyYWwoIldvcmtl
clVzZXJBZ2VudCIpLCAvKiBpc09ubGluZSAqLyBmYWxzZSwgZGF0YS5zY3JpcHQsIGxvYWRlclBy
b3h5LCBkZWJ1Z2dlclByb3h5LCBEdW1teVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2hhcmVk
KCksIFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBDb250ZW50U2VjdXJpdHlQb2xpY3lS
ZXNwb25zZUhlYWRlcnMgeyB9LCBmYWxzZSwgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShkYXRhLnNj
cmlwdFVSTCkuZ2V0KCksIE1vbm90b25pY1RpbWU6Om5vdygpLCBudWxscHRyLCBudWxscHRyLCBK
U0M6OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpLCBTZXNzaW9uSUQ6OmRlZmF1bHRT
ZXNzaW9uSUQoKSkKLSAgICAsIG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIpCiAgICAgLCBtX2RhdGEoZGF0YS5pc29sYXRlZENvcHkoKSkKICAg
ICAsIG1fd29ya2VyT2JqZWN0UHJveHkoRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNo
YXJlZCgpKQogewpAQCAtODYsNyArODUsNyBAQCBTZXJ2aWNlV29ya2VyVGhyZWFkOjp+U2Vydmlj
ZVdvcmtlclRocmVhZCgpID0gZGVmYXVsdDsKIAogUmVmPFdvcmtlckdsb2JhbFNjb3BlPiBTZXJ2
aWNlV29ya2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBp
c09ubGluZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9v
bCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZjxTZWN1cml0
eU9yaWdpbj4mJiB0b3BPcmlnaW4sIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQogewotICAgIHJldHVybiBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6
OmNyZWF0ZShtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBtX2RhdGEsIHVybCwgaWRlbnRp
ZmllciwgdXNlckFnZW50LCBpc09ubGluZSwgKnRoaXMsIHNob3VsZEJ5cGFzc01haW5Xb3JsZENv
bnRlbnRTZWN1cml0eVBvbGljeSwgV1RGTW92ZSh0b3BPcmlnaW4pLCB0aW1lT3JpZ2luLCBpZGJD
b25uZWN0aW9uUHJveHkoKSwgc29ja2V0UHJvdmlkZXIoKSwgc2Vzc2lvbklEKTsKKyAgICByZXR1
cm4gU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUobV9kYXRhLCB1cmwsIGlkZW50aWZp
ZXIsIHVzZXJBZ2VudCwgaXNPbmxpbmUsICp0aGlzLCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250
ZW50U2VjdXJpdHlQb2xpY3ksIFdURk1vdmUodG9wT3JpZ2luKSwgdGltZU9yaWdpbiwgaWRiQ29u
bmVjdGlvblByb3h5KCksIHNvY2tldFByb3ZpZGVyKCksIHNlc3Npb25JRCk7CiB9CiAKIHZvaWQg
U2VydmljZVdvcmtlclRocmVhZDo6cnVuRXZlbnRMb29wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQu
aAppbmRleCA3M2RlY2Q1MDM5MGI1ODAwMGVlNjlmNzFmZGI3NjFjYmYyNzU0YjM5Li44NGE4ZTNi
NDc2MzJjYjg1MDIyYmJmYjYwMDQ0YWM1NTFhYWRlZjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZC5oCkBAIC02MCw3ICs2MCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQo
KTsKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KCk7CiAKLSAgICB1aW50NjRfdCBzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXI7IH0KICAgICBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGNvbnRleHRE
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAKICAgICBTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyOyB9CkBAIC03MCwxMiArNjksMTEgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcnVuRXZl
bnRMb29wKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2Vydmlj
ZVdvcmtlclRocmVhZCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3Qg
U2VydmljZVdvcmtlckNvbnRleHREYXRhJiwgUEFMOjpTZXNzaW9uSUQsIFdvcmtlckxvYWRlclBy
b3h5JiwgV29ya2VyRGVidWdnZXJQcm94eSYpOworICAgIFdFQkNPUkVfRVhQT1JUIFNlcnZpY2VX
b3JrZXJUaHJlYWQoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiwgUEFMOjpTZXNzaW9u
SUQsIFdvcmtlckxvYWRlclByb3h5JiwgV29ya2VyRGVidWdnZXJQcm94eSYpOwogCiAgICAgdm9p
ZCB1cGRhdGVFeHRlbmRlZEV2ZW50c1NldChFeHRlbmRhYmxlRXZlbnQqIG5ld0V2ZW50ID0gbnVs
bHB0cik7CiAgICAgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKCkgY29uc3QgeyByZXR1cm4gIW1fZXh0
ZW5kZWRFdmVudHMuaXNFbXB0eSgpOyB9CiAKLSAgICB1aW50NjRfdCBtX3NlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyOwogICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBtX2RhdGE7CiAgICAg
V29ya2VyT2JqZWN0UHJveHkmIG1fd29ya2VyT2JqZWN0UHJveHk7CiAgICAgVmVjdG9yPFJlZjxF
eHRlbmRhYmxlRXZlbnQ+PiBtX2V4dGVuZGVkRXZlbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eS5jcHAKaW5kZXggMTU3MGNmMGYwYmEzY2U2YWQ1NGQ4OTIyZmRlZDMzNjY3YWYx
MmViMi4uZTdkYmQ0MDllODM3NjE0MTRmNjFlOGQzYzQ4N2ZkZjY3OTAwYmRhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRo
cmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCkBAIC0zNiwxMSArMzYsNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk+IFNlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3Vy
YXRpb24sIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEmIGRhdGEsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ2FjaGVT
dG9yYWdlUHJvdmlkZXImIGNhY2hlU3RvcmFnZVByb3ZpZGVyKQotewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSB7IFdURk1vdmUocGFnZUNvbmZpZ3Vy
YXRpb24pLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZGF0YSwgc2Vzc2lvbklELCBjYWNo
ZVN0b3JhZ2VQcm92aWRlciB9KTsKLX0KLQogc3RhdGljIGlubGluZSBVbmlxdWVSZWY8UGFnZT4g
Y3JlYXRlUGFnZUZvclNlcnZpY2VXb3JrZXIoUGFnZUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0
aW9uLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBhdXRvIHBhZ2UgPSBtYWtlVW5pcXVlUmVmPFBh
Z2U+KFdURk1vdmUoY29uZmlndXJhdGlvbikpOwpAQCAtNTIsMTAgKzQ3LDEwIEBAIHN0YXRpYyBp
bmxpbmUgVW5pcXVlUmVmPFBhZ2U+IGNyZWF0ZVBhZ2VGb3JTZXJ2aWNlV29ya2VyKFBhZ2VDb25m
aWd1cmF0aW9uJiYgY29uCiAgICAgcmV0dXJuIHBhZ2U7CiB9CiAKLVNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5KFBhZ2VDb25maWd1cmF0aW9uJiYgcGFn
ZUNvbmZpZ3VyYXRpb24sIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25z
dCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImIGNhY2hlU3RvcmFnZVByb3ZpZGVyKQorU2VydmljZVdv
cmtlclRocmVhZFByb3h5OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoUGFnZUNvbmZpZ3VyYXRp
b24mJiBwYWdlQ29uZmlndXJhdGlvbiwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBk
YXRhLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENhY2hlU3RvcmFnZVByb3ZpZGVyJiBjYWNo
ZVN0b3JhZ2VQcm92aWRlcikKICAgICA6IG1fcGFnZShjcmVhdGVQYWdlRm9yU2VydmljZVdvcmtl
cihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSwgZGF0YS5zY3JpcHRVUkwpKQogICAgICwgbV9k
b2N1bWVudCgqbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQotICAgICwgbV9zZXJ2aWNl
V29ya2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmNyZWF0ZShzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciwgZGF0YSwgc2Vzc2lvbklELCAqdGhpcywgKnRoaXMpKQorICAgICwgbV9zZXJ2
aWNlV29ya2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmNyZWF0ZShkYXRhLCBzZXNzaW9u
SUQsICp0aGlzLCAqdGhpcykpCiAgICAgLCBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyKGNhY2hlU3Rv
cmFnZVByb3ZpZGVyKQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogICAgICwgbV9pbnNw
ZWN0b3JQcm94eSgqdGhpcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKaW5kZXgg
NDEwYjBlYWUxYzE2NGVjYzhjNjUwZDA2ODk2MjBjMTQyNjUwYTUyMy4uYTljNTk3ZTZmNGFhZTA2
MmJhOTFmOGFkNGUwNDJjMTExYzI0MjhjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFBy
b3h5LmgKQEAgLTQ3LDE0ICs0NywxNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRh
OwogCiBjbGFzcyBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgZmluYWwgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8U2VydmljZVdvcmtlclRocmVhZFByb3h5PiwgcHVibGljIFdvcmtlckxv
YWRlclByb3h5LCBwdWJsaWMgV29ya2VyRGVidWdnZXJQcm94eSB7CiBwdWJsaWM6Ci0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk+IGNyZWF0ZShQ
YWdlQ29uZmlndXJhdGlvbiYmLCB1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
Y29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiwgUEFMOjpTZXNzaW9uSUQsIENhY2hlU3Rv
cmFnZVByb3ZpZGVyJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJl
ZjxTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICB9CiAKICAgICBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyVGhy
ZWFkLT5pZGVudGlmaWVyKCk7IH0KICAgICBTZXJ2aWNlV29ya2VyVGhyZWFkJiB0aHJlYWQoKSB7
IHJldHVybiBtX3NlcnZpY2VXb3JrZXJUaHJlYWQuZ2V0KCk7IH0KICAgICBTZXJ2aWNlV29ya2Vy
SW5zcGVjdG9yUHJveHkmIGluc3BlY3RvclByb3h5KCkgeyByZXR1cm4gbV9pbnNwZWN0b3JQcm94
eTsgfQogCiBwcml2YXRlOgotICAgIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShQYWdlQ29uZmln
dXJhdGlvbiYmLCB1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhJiwgUEFMOjpTZXNzaW9uSUQsIENhY2hlU3RvcmFnZVByb3Zp
ZGVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgU2VydmljZVdvcmtlclRocmVhZFByb3h5KFBhZ2VD
b25maWd1cmF0aW9uJiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYsIFBBTDo6U2Vz
c2lvbklELCBDYWNoZVN0b3JhZ2VQcm92aWRlciYpOwogCiAgICAgLy8gV29ya2VyTG9hZGVyUHJv
eHkKICAgICBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzayYmLCBjb25zdCBTdHJpbmcmIG1vZGUpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRl
eCA1ZWE1NDRmZTM2MjA4NzNjNDk1ZmJhOWI2MTYxZThjNjk3YTg1OGYzLi42MWMzMDQ3ZjJhYWEz
ZmY5OTM5N2RkODc3MWFjNGY5MzI3ZGZhNjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMzMsMTkgKzMzLDIwIEBACiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNXU2VydmVySm9iUXVldWUuaCIKICNpbmNs
dWRlICJTV1NlcnZlclJlZ2lzdHJhdGlvbi5oIgorI2luY2x1ZGUgIlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlNXU2VydmVyV29ya2VyLmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCIKICNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29y
a2VySm9iRGF0YS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBnZW5lcmF0ZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkK
IHsKLSAgICBzdGF0aWMgdWludDY0X3QgaWRlbnRpZmllciA9IDA7Ci0gICAgcmV0dXJuIG1ha2VP
YmplY3RJZGVudGlmaWVyPFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyVHlwZT4oKytpZGVudGlmaWVy
KTsKKyAgICByZXR1cm4gZ2VuZXJhdGVPYmplY3RJZGVudGlmaWVyPFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyVHlwZT4oKTsKIH0KIAogU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb24oU1dT
ZXJ2ZXImIHNlcnZlciwgdWludDY0X3QgaWRlbnRpZmllcikKQEAgLTYwLDYgKzYxLDEyIEBAIFNX
U2VydmVyOjpDb25uZWN0aW9uOjp+Q29ubmVjdGlvbigpCiAgICAgbV9zZXJ2ZXIudW5yZWdpc3Rl
ckNvbm5lY3Rpb24oKnRoaXMpOwogfQogCitIYXNoU2V0PFNXU2VydmVyKj4mIFNXU2VydmVyOjph
bGxTZXJ2ZXJzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTV1NlcnZl
cio+PiBzZXJ2ZXJzOworICAgIHJldHVybiBzZXJ2ZXJzOworfQorCiBTV1NlcnZlcjo6flNXU2Vy
dmVyKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2Nvbm5lY3Rpb25zLmlzRW1wdHkoKSk7CkBA
IC03NCw2ICs4MSw4IEBAIFNXU2VydmVyOjp+U1dTZXJ2ZXIoKQogICAgIC8vIEJ1dCBvbmNlIGl0
IGRvZXMgc3RhcnQgaGFwcGVuaW5nLCB0aGlzIEFTU0VSVCB3aWxsIGNhdGNoIHVzIGRvaW5nIGl0
IHdyb25nLgogICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV90YXNrVGhyZWFkTG9jayk7CiAgICAg
QVNTRVJUKCFtX3Rhc2tUaHJlYWQpOworICAgIAorICAgIGFsbFNlcnZlcnMoKS5yZW1vdmUodGhp
cyk7CiB9CiAKIFNXU2VydmVyUmVnaXN0cmF0aW9uKiBTV1NlcnZlcjo6Z2V0UmVnaXN0cmF0aW9u
KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKQEAg
LTExMiwyMSArMTIxLDYgQEAgdm9pZCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6ZmluaXNoRmV0Y2hp
bmdTY3JpcHRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2gKICAgICBtX3NlcnZlci5z
Y3JpcHRGZXRjaEZpbmlzaGVkKCp0aGlzLCByZXN1bHQpOwogfQogCi12b2lkIFNXU2VydmVyOjpD
b25uZWN0aW9uOjpkaWRGaW5pc2hJbnN0YWxsKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmIGtleSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkKLXsKLSAgICBtX3NlcnZlci5kaWRGaW5pc2hJbnN0YWxs
KCp0aGlzLCBrZXksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCB3YXNTdWNjZXNzZnVsKTsKLX0K
LQotdm9pZCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6ZGlkRmluaXNoQWN0aXZhdGlvbihjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQotewotICAgIG1fc2VydmVyLmRpZEZpbmlzaEFjdGl2
YXRpb24oKnRoaXMsIGtleSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotfQotCi12b2lkIFNX
U2VydmVyOjpDb25uZWN0aW9uOjpzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBoYXNQZW5k
aW5nRXZlbnRzKQotewotICAgIG1fc2VydmVyLnNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZl
bnRzKCp0aGlzLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgaGFzUGVuZGluZ0V2ZW50cyk7Ci19
Ci0KIHZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OmRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9t
aXNlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIGtleSkKIHsKICAgICBtX3Nl
cnZlci5kaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZSgqdGhpcywga2V5KTsKQEAgLTE0Miwx
OCArMTM2LDkgQEAgdm9pZCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6cmVtb3ZlU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkluU2VydmVyKGNvbnN0IFNlcnZpY2UKICAgICBtX3NlcnZlci5yZW1vdmVD
bGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKCp0aGlzLCBrZXksIGlkZW50aWZpZXIpOwog
fQogCi12b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFy
dChjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
LXsKLSAgICBtX3NlcnZlci5zY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydCgqdGhpcywgcmVnaXN0
cmF0aW9uS2V5LCBpZGVudGlmaWVyLCBtZXNzYWdlKTsKLX0KLQotdm9pZCBTV1NlcnZlcjo6Q29u
bmVjdGlvbjo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlm
aWVyKQotewotICAgIG1fc2VydmVyLnNjcmlwdENvbnRleHRTdGFydGVkKCp0aGlzLCByZWdpc3Ry
YXRpb25LZXksIGlkZW50aWZpZXIpOwotfQotCiBTV1NlcnZlcjo6U1dTZXJ2ZXIoKQogeworICAg
IGFsbFNlcnZlcnMoKS5hZGQodGhpcyk7CiAgICAgbV90YXNrVGhyZWFkID0gVGhyZWFkOjpjcmVh
dGUoQVNDSUlMaXRlcmFsKCJTZXJ2aWNlV29ya2VyIFRhc2sgVGhyZWFkIiksIFt0aGlzXSB7CiAg
ICAgICAgIHRhc2tUaHJlYWRFbnRyeVBvaW50KCk7CiAgICAgfSk7CkBAIC0yMjgsNTIgKzIxMywz
NiBAQCB2b2lkIFNXU2VydmVyOjpzY3JpcHRGZXRjaEZpbmlzaGVkKENvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIGNvbnN0IFNlcnZpY2VXb3JrZXJGZQogICAgIGpvYlF1ZXVlLT5zY3JpcHRGZXRjaEZp
bmlzaGVkKGNvbm5lY3Rpb24sIHJlc3VsdCk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OnNjcmlwdENv
bnRleHRGYWlsZWRUb1N0YXJ0KENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgU2VydmljZVdvcmtlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCBTV1NlcnZlcjo6
c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlciwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQogewotICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNv
bm5lY3Rpb24uaWRlbnRpZmllcigpKSk7Ci0gICAgCi0gICAgaWYgKGF1dG8qIGpvYlF1ZXVlID0g
bV9qb2JRdWV1ZXMuZ2V0KHJlZ2lzdHJhdGlvbktleSkpCi0gICAgICAgIGpvYlF1ZXVlLT5zY3Jp
cHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25uZWN0aW9uLCBpZGVudGlmaWVyLCBtZXNzYWdlKTsK
KyAgICBpZiAoYXV0byogam9iUXVldWUgPSBtX2pvYlF1ZXVlcy5nZXQod29ya2VyLnJlZ2lzdHJh
dGlvbktleSgpKSkKKyAgICAgICAgam9iUXVldWUtPnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0
KHdvcmtlci5pZGVudGlmaWVyKCksIG1lc3NhZ2UpOwogfQogCi12b2lkIFNXU2VydmVyOjpzY3Jp
cHRDb250ZXh0U3RhcnRlZChDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIpCit2b2lkIFNXU2VydmVyOjpzY3JpcHRDb250ZXh0U3RhcnRlZChTV1Nl
cnZlcldvcmtlciYgd29ya2VyKQogewotICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25zLmNvbnRhaW5z
KGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKSk7Ci0KLSAgICBpZiAoYXV0byogam9iUXVldWUgPSBt
X2pvYlF1ZXVlcy5nZXQocmVnaXN0cmF0aW9uS2V5KSkKLSAgICAgICAgam9iUXVldWUtPnNjcmlw
dENvbnRleHRTdGFydGVkKGNvbm5lY3Rpb24sIGlkZW50aWZpZXIpOworICAgIGlmIChhdXRvKiBq
b2JRdWV1ZSA9IG1fam9iUXVldWVzLmdldCh3b3JrZXIucmVnaXN0cmF0aW9uS2V5KCkpKQorICAg
ICAgICBqb2JRdWV1ZS0+c2NyaXB0Q29udGV4dFN0YXJ0ZWQod29ya2VyLmlkZW50aWZpZXIoKSk7
CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OmRpZEZpbmlzaEluc3RhbGwoQ29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5
LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3
YXNTdWNjZXNzZnVsKQordm9pZCBTV1NlcnZlcjo6ZGlkRmluaXNoSW5zdGFsbChTV1NlcnZlcldv
cmtlciYgd29ya2VyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCiB7Ci0gICAgQVNTRVJUKG1fY29ubmVj
dGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKLQotICAgIGlmIChhdXRv
KiBqb2JRdWV1ZSA9IG1fam9iUXVldWVzLmdldChyZWdpc3RyYXRpb25LZXkpKQotICAgICAgICBq
b2JRdWV1ZS0+ZGlkRmluaXNoSW5zdGFsbChjb25uZWN0aW9uLCBzZXJ2aWNlV29ya2VySWRlbnRp
Zmllciwgd2FzU3VjY2Vzc2Z1bCk7CisgICAgaWYgKGF1dG8qIGpvYlF1ZXVlID0gbV9qb2JRdWV1
ZXMuZ2V0KHdvcmtlci5yZWdpc3RyYXRpb25LZXkoKSkpCisgICAgICAgIGpvYlF1ZXVlLT5kaWRG
aW5pc2hJbnN0YWxsKHdvcmtlci5pZGVudGlmaWVyKCksIHdhc1N1Y2Nlc3NmdWwpOwogfQogCi12
b2lkIFNXU2VydmVyOjpkaWRGaW5pc2hBY3RpdmF0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCit2b2lkIFNXU2Vy
dmVyOjpkaWRGaW5pc2hBY3RpdmF0aW9uKFNXU2VydmVyV29ya2VyJiB3b3JrZXIpCiB7Ci0gICAg
QVNTRVJUX1VOVVNFRChjb25uZWN0aW9uLCBtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rp
b24uaWRlbnRpZmllcigpKSk7Ci0KLSAgICBpZiAoYXV0byogcmVnaXN0cmF0aW9uID0gZ2V0UmVn
aXN0cmF0aW9uKHJlZ2lzdHJhdGlvbktleSkpCi0gICAgICAgIFNXU2VydmVySm9iUXVldWU6OmRp
ZEZpbmlzaEFjdGl2YXRpb24oKnJlZ2lzdHJhdGlvbiwgc2VydmljZVdvcmtlcklkZW50aWZpZXIp
OwotfQotCi12b2lkIFNXU2VydmVyOjpzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKQotewotICAgIEFTU0VSVF9VTlVT
RUQoY29ubmVjdGlvbiwgbV9jb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLmlkZW50aWZp
ZXIoKSkpOwotCi0gICAgaWYgKGF1dG8qIHNlcnZpY2VXb3JrZXIgPSBtX3dvcmtlcnNCeUlELmdl
dChzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpCi0gICAgICAgIHNlcnZpY2VXb3JrZXItPnNldEhh
c1BlbmRpbmdFdmVudHMoaGFzUGVuZGluZ0V2ZW50cyk7CisgICAgaWYgKGF1dG8qIHJlZ2lzdHJh
dGlvbiA9IGdldFJlZ2lzdHJhdGlvbih3b3JrZXIucmVnaXN0cmF0aW9uS2V5KCkpKQorICAgICAg
ICBTV1NlcnZlckpvYlF1ZXVlOjpkaWRGaW5pc2hBY3RpdmF0aW9uKCpyZWdpc3RyYXRpb24sIHdv
cmtlci5pZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIFNXU2VydmVyOjpkaWRSZXNvbHZlUmVnaXN0
cmF0aW9uUHJvbWlzZShDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpCiB7Ci0gICAgQVNTRVJUKG1fY29ubmVj
dGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKKyAgICBBU1NFUlRfVU5V
U0VEKGNvbm5lY3Rpb24sIG1fY29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlm
aWVyKCkpKTsKIAogICAgIGlmIChhdXRvKiBqb2JRdWV1ZSA9IG1fam9iUXVldWVzLmdldChyZWdp
c3RyYXRpb25LZXkpKQotICAgICAgICBqb2JRdWV1ZS0+ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblBy
b21pc2UoY29ubmVjdGlvbik7CisgICAgICAgIGpvYlF1ZXVlLT5kaWRSZXNvbHZlUmVnaXN0cmF0
aW9uUHJvbWlzZSgpOwogfQogCiB2b2lkIFNXU2VydmVyOjphZGRDbGllbnRTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkmIGtleSwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIg
aWRlbnRpZmllcikKQEAgLTMwNCwyNiArMjczLDc1IEBAIHZvaWQgU1dTZXJ2ZXI6OnJlbW92ZUNs
aWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29u
CiAgICAgcmVnaXN0cmF0aW9uLT5yZW1vdmVDbGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
KGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKTsKIH0KIAotUmVmPFNXU2VydmVyV29ya2VyPiBTV1Nl
cnZlcjo6dXBkYXRlV29ya2VyKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgc2NyaXB0LCBXb3JrZXJUeXBlIHR5cGUpCit2b2lkIFNXU2VydmVyOjp1cGRh
dGVXb3JrZXIoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkm
IHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBX
b3JrZXJUeXBlIHR5cGUpCiB7CiAgICAgYXV0byBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IGdl
bmVyYXRlU2VydmljZVdvcmtlcklkZW50aWZpZXIoKTsKIAotICAgIGF1dG8gcmVzdWx0ID0gbV93
b3JrZXJzQnlJRC5hZGQoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNXU2VydmVyV29ya2VyOjpj
cmVhdGUocmVnaXN0cmF0aW9uS2V5LCB1cmwsIHNjcmlwdCwgdHlwZSwgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIpKTsKLSAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOworICAgIFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSBkYXRhID0geyByZWdpc3RyYXRpb25LZXksIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBzY3JpcHQsIHVybCwgdHlwZSB9OwogCi0gICAgY29ubmVjdGlvbi5pbnN0YWxs
U2VydmljZVdvcmtlckNvbnRleHQoeyByZWdpc3RyYXRpb25LZXksIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBzY3JpcHQsIHVybCB9KTsKKyAgICAvLyBSaWdodCBub3cgd2Ugb25seSBldmVyIGtl
ZXAgdXAgdG8gb25lIGNvbm5lY3Rpb24gdG8gb25lIFNXIGNvbnRleHQgcHJvY2Vzcy4KKyAgICAv
LyBBbmQgaXQgc2hvdWxkIGFsd2F5cyBleGlzdCBpZiB3ZSdyZSBjYWxsaW5nIHVwZGF0ZVdvcmtl
cgorICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omds
b2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24pIHsK
KyAgICAgICAgbV9wZW5kaW5nQ29udGV4dERhdGFzLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpbnN0YWxsQ29udGV4dERhdGEoZGF0YSk7
Cit9CisKK3ZvaWQgU1dTZXJ2ZXI6OnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKCkK
K3sKKyAgICBBU1NFUlQoU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpnbG9iYWxTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKCkpOworICAgIGZvciAoYXV0byYgZGF0YSA6IG1fcGVuZGluZ0Nv
bnRleHREYXRhcykKKyAgICAgICAgaW5zdGFsbENvbnRleHREYXRhKGRhdGEpOwogICAgIAotICAg
IHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOworICAgIG1fcGVuZGluZ0NvbnRl
eHREYXRhcy5jbGVhcigpOwogfQogCi12b2lkIFNXU2VydmVyOjpmaXJlSW5zdGFsbEV2ZW50KENv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKQordm9pZCBTV1NlcnZlcjo6aW5zdGFsbENvbnRleHREYXRhKGNvbnN0IFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKIHsKLSAgICBjb25uZWN0aW9uLmZpcmVJbnN0
YWxsRXZlbnQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIGF1dG8qIGNvbm5lY3Rpb24g
PSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24oKTsKKyAgICBBU1NFUlQoY29ubmVjdGlvbik7CisKKyAgICBhdXRvIHJlc3VsdCA9IG1f
d29ya2Vyc0J5SUQuYWRkKGRhdGEuc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNXU2VydmVyV29y
a2VyOjpjcmVhdGUoKnRoaXMsIGRhdGEucmVnaXN0cmF0aW9uS2V5LCBjb25uZWN0aW9uLT5pZGVu
dGlmaWVyKCksIGRhdGEuc2NyaXB0VVJMLCBkYXRhLnNjcmlwdCwgZGF0YS53b3JrZXJUeXBlLCBk
YXRhLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdC5pc05ld0VudHJ5KTsKKworICAgIGNvbm5lY3Rpb24tPmluc3RhbGxTZXJ2aWNlV29y
a2VyQ29udGV4dChkYXRhKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6ZmlyZUFjdGl2YXRlRXZlbnQo
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdv
cmtlcklkZW50aWZpZXIpCit2b2lkIFNXU2VydmVyOjpmaXJlSW5zdGFsbEV2ZW50KFNXU2VydmVy
V29ya2VyJiB3b3JrZXIpCiB7Ci0gICAgY29ubmVjdGlvbi5maXJlQWN0aXZhdGVFdmVudChzZXJ2
aWNlV29ya2VySWRlbnRpZmllcik7CisvLyAgICBhdXRvKiB3b3JrZXIgPSBtX3dvcmtlcnNCeUlE
LmdldChzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisvLyAgICBpZiAoIXdvcmtlcikgeworLy8g
ICAgICAgIExPR19FUlJPUigiUmVxdWVzdCB0byBmaXJlIGluc3RhbGwgZXZlbnQgb24gYSB3b3Jr
ZXIgdGhhdCBjYW5ub3QgYmUgZm91bmQgaW4gdGhlIHNlcnZlciIpOworLy8gICAgICAgIHJldHVy
bjsKKy8vICAgIH0KKworICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246OmNvbm5lY3Rpb25Gb3JJZGVudGlmaWVyKHdvcmtlci5jb250ZXh0Q29ubmVjdGlv
bklkZW50aWZpZXIoKSk7CisgICAgaWYgKCFjb25uZWN0aW9uKSB7CisgICAgICAgIExPR19FUlJP
UigiUmVxdWVzdCB0byBmaXJlIGluc3RhbGwgZXZlbnQgb24gYSB3b3JrZXIgd2hvc2UgY29udGV4
dCBjb25uZWN0aW9uIGRvZXMgbm90IGV4aXN0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBjb25uZWN0aW9uLT5maXJlSW5zdGFsbEV2ZW50KHdvcmtlci5pZGVudGlmaWVyKCkpOwor
fQorCit2b2lkIFNXU2VydmVyOjpmaXJlQWN0aXZhdGVFdmVudChTV1NlcnZlcldvcmtlciYgd29y
a2VyKQoreworLy8gICAgYXV0byogd29ya2VyID0gbV93b3JrZXJzQnlJRC5nZXQoc2VydmljZVdv
cmtlcklkZW50aWZpZXIpOworLy8gICAgaWYgKCF3b3JrZXIpIHsKKy8vICAgICAgICBMT0dfRVJS
T1IoIlJlcXVlc3QgdG8gZmlyZSBpbnN0YWxsIGV2ZW50IG9uIGEgd29ya2VyIHRoYXQgY2Fubm90
IGJlIGZvdW5kIGluIHRoZSBzZXJ2ZXIiKTsKKy8vICAgICAgICByZXR1cm47CisvLyAgICB9CisK
KyAgICBhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25u
ZWN0aW9uRm9ySWRlbnRpZmllcih3b3JrZXIuY29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKCkp
OworICAgIGlmICghY29ubmVjdGlvbikgeworICAgICAgICBMT0dfRVJST1IoIlJlcXVlc3QgdG8g
ZmlyZSBpbnN0YWxsIGV2ZW50IG9uIGEgd29ya2VyIHdob3NlIGNvbnRleHQgY29ubmVjdGlvbiBk
b2VzIG5vdCBleGlzdCIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29ubmVjdGlv
bi0+ZmlyZUFjdGl2YXRlRXZlbnQod29ya2VyLmlkZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQgU1dT
ZXJ2ZXI6OnRhc2tUaHJlYWRFbnRyeVBvaW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCBmMGM4YzJjMWNmNWQ4YTliNjA1OTUy
ZWRkMzkyNTY1MzdjMjE4NDEyLi44NDkzNTMwYTk1NWJiZjU2M2YxNWJmNDc5MWE1ZTNiYjc0ODA1
N2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYi5oIgog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmgiCiAjaW5jbHVkZSAiU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBl
cy5oIgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFF1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL0Ny
b3NzVGhyZWFkVGFzay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC00NSw2ICs0Niw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1dTZXJ2ZXJKb2JRdWV1ZTsKIGNsYXNz
IFNXU2VydmVyUmVnaXN0cmF0aW9uOworY2xhc3MgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OwogZW51bSBjbGFzcyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGU7CiBlbnVtIGNsYXNz
IFNlcnZpY2VXb3JrZXJTdGF0ZTsKIHN0cnVjdCBFeGNlcHRpb25EYXRhOwpAQCAtNTksMTEgKzYx
LDYgQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB+Q29ubmVjdGlvbigpOwogCi0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NyaXB0Q29u
dGV4dEZhaWxlZFRvU3RhcnQoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNjcmlwdENvbnRleHRTdGFydGVkKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZGlkRmluaXNoSW5zdGFsbChjb25zdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1
bCk7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbihjb25z
dCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIp
OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5n
RXZlbnRzKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIGhhc1BlbmRpbmdFdmVudHMpOwog
ICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNl
KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKTsKICAgICAgICAgY29uc3QgU1dT
ZXJ2ZXJSZWdpc3RyYXRpb24qIGRvUmVnaXN0cmF0aW9uTWF0Y2hpbmcoY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMKSBjb25zdCB7IHJldHVy
biBtX3NlcnZlci5kb1JlZ2lzdHJhdGlvbk1hdGNoaW5nKHRvcE9yaWdpbiwgY2xpZW50VVJMKTsg
fQogCkBAIC04OCwxMSArODUsNiBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXNv
bHZlVW5yZWdpc3RyYXRpb25Kb2JJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVudGlmaWVyLCBjb25z
dCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgYm9vbCByZWdpc3RyYXRpb25SZXN1bHQp
ID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hJbkNsaWVudCh1aW50
NjRfdCBqb2JJZGVudGlmaWVyKSA9IDA7CiAKLSAgICAgICAgLy8gTWVzc2FnZXMgdG8gdGhlIFNX
IGhvc3QgV2ViUHJvY2VzcwotICAgICAgICB2aXJ0dWFsIHZvaWQgaW5zdGFsbFNlcnZpY2VXb3Jr
ZXJDb250ZXh0KGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpID0gMDsKLSAgICAgICAg
dmlydHVhbCB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0g
MDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKSA9IDA7Ci0KICAgICAgICAgU1dTZXJ2ZXImIG1fc2VydmVyOwogICAgIH07CiAK
QEAgLTExNCwxMyArMTA2LDIyIEBAIHB1YmxpYzoKICAgICB2b2lkIHBvc3RUYXNrKENyb3NzVGhy
ZWFkVGFzayYmKTsKICAgICB2b2lkIHBvc3RUYXNrUmVwbHkoQ3Jvc3NUaHJlYWRUYXNrJiYpOwog
Ci0gICAgUmVmPFNXU2VydmVyV29ya2VyPiB1cGRhdGVXb3JrZXIoQ29ubmVjdGlvbiYsIGNvbnN0
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IHNjcmlwdCwgV29ya2VyVHlwZSk7Ci0gICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KENvbm5lY3Rp
b24mLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVu
dChDb25uZWN0aW9uJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIHZvaWQgdXBkYXRl
V29ya2VyKENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jiwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIFdvcmtlclR5cGUpOworICAgIHZvaWQg
ZmlyZUluc3RhbGxFdmVudChTV1NlcnZlcldvcmtlciYpOworICAgIHZvaWQgZmlyZUFjdGl2YXRl
RXZlbnQoU1dTZXJ2ZXJXb3JrZXImKTsKICAgICBTV1NlcnZlcldvcmtlciogd29ya2VyQnlJRChT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKSBjb25zdCB7IHJldHVybiBtX3dvcmtl
cnNCeUlELmdldChpZGVudGlmaWVyKTsgfQogICAgIAogICAgIENvbm5lY3Rpb24qIGdldENvbm5l
Y3Rpb24odWludDY0X3QgaWRlbnRpZmllcikgeyByZXR1cm4gbV9jb25uZWN0aW9ucy5nZXQoaWRl
bnRpZmllcik7IH0KIAorICAgIHZvaWQgc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoU1dTZXJ2
ZXJXb3JrZXImLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgc2NyaXB0Q29udGV4
dFN0YXJ0ZWQoU1dTZXJ2ZXJXb3JrZXImKTsKKyAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoU1dT
ZXJ2ZXJXb3JrZXImLCBib29sIHdhc1N1Y2Nlc3NmdWwpOworICAgIHZvaWQgZGlkRmluaXNoQWN0
aXZhdGlvbihTV1NlcnZlcldvcmtlciYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uQ3JlYXRlZCgpOworICAgIAorICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBIYXNoU2V0PFNXU2VydmVyKj4mIGFsbFNlcnZlcnMoKTsKKwogcHJpdmF0ZToKICAg
ICB2b2lkIHJlZ2lzdGVyQ29ubmVjdGlvbihDb25uZWN0aW9uJik7CiAgICAgdm9pZCB1bnJlZ2lz
dGVyQ29ubmVjdGlvbihDb25uZWN0aW9uJik7CkBAIC0xMjksMTEgKzEzMCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBoYW5kbGVUYXNrUmVwbGllc09uTWFpblRocmVhZCgpOwogCiAgICAgdm9pZCBz
Y3JpcHRGZXRjaEZpbmlzaGVkKENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hS
ZXN1bHQmKTsKLSAgICB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KENvbm5lY3Rpb24m
LCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgdm9pZCBzY3JpcHRDb250ZXh0U3Rh
cnRlZChDb25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoQ29ubmVj
dGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKTsKLSAgICB2b2lkIGRpZEZpbmlzaEFjdGl2
YXRpb24oQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VySGFzUGVu
ZGluZ0V2ZW50cyhDb25uZWN0aW9uJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgaGFz
UGVuZGluZ0V2ZW50cyk7CisKICAgICB2b2lkIGRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNl
KENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7CiAKICAg
ICB2b2lkIGFkZENsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oQ29ubmVjdGlvbiYsIGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllcik7CkBAIC0xNDEsNiArMTM4LDggQEAgcHJpdmF0ZToKIAogICAgIFdFQkNP
UkVfRVhQT1JUIGNvbnN0IFNXU2VydmVyUmVnaXN0cmF0aW9uKiBkb1JlZ2lzdHJhdGlvbk1hdGNo
aW5nKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVu
dFVSTCkgY29uc3Q7CiAKKyAgICB2b2lkIGluc3RhbGxDb250ZXh0RGF0YShjb25zdCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEmKTsKKwogICAgIEhhc2hNYXA8dWludDY0X3QsIENvbm5lY3Rpb24q
PiBtX2Nvbm5lY3Rpb25zOwogICAgIEhhc2hNYXA8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eSwgc3RkOjp1bmlxdWVfcHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPj4gbV9yZWdpc3RyYXRpb25z
OwogICAgIEhhc2hNYXA8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSwgc3RkOjp1bmlxdWVf
cHRyPFNXU2VydmVySm9iUXVldWU+PiBtX2pvYlF1ZXVlczsKQEAgLTE1NSw2ICsxNTQsOCBAQCBw
cml2YXRlOgogCiAgICAgTG9jayBtX21haW5UaHJlYWRSZXBseUxvY2s7CiAgICAgYm9vbCBtX21h
aW5UaHJlYWRSZXBseVNjaGVkdWxlZCB7IGZhbHNlIH07CisKKyAgICBEZXF1ZTxTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE+IG1fcGVuZGluZ0NvbnRleHREYXRhczsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCmluZGV4IGU2OWZlNTdlY2IzMjc0N2NlZWM2
ZTI0ZGNjMjY2MDhmN2FhMTZhYzAuLmE2YTQ2ZjE2NDA1YzE2NzUyZWM5ZWRlYWQwYWU0YWVhNTFi
MThkZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcApAQCAtODQsNyArODQsNyBAQCB2b2lkIFNXU2Vy
dmVySm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIGNvbgogfQogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtl
ci8jdXBkYXRlLWFsZ29yaXRobQotdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRDb250ZXh0
RmFpbGVkVG9TdGFydChTV1NlcnZlcjo6Q29ubmVjdGlvbiYsIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIFNXU2VydmVySm9iUXVldWU6OnNjcmlw
dENvbnRleHRGYWlsZWRUb1N0YXJ0KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCiB7CiAgICAgLy8gSWYgYW4gdW5jYXVnaHQgcnVudGltZSBzY3JpcHQgZXJy
b3Igb2NjdXJzIGR1cmluZyB0aGUgYWJvdmUgc3RlcCwgdGhlbjoKICAgICBhdXRvKiByZWdpc3Ry
YXRpb24gPSBtX3NlcnZlci5nZXRSZWdpc3RyYXRpb24obV9yZWdpc3RyYXRpb25LZXkpOwpAQCAt
MTAxLDE2ICsxMDEsMTYgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRDb250ZXh0RmFp
bGVkVG9TdGFydChTV1NlcnZlcjo6Q29ubmVjdGlvbiYsIFNlcnZpY2UKICAgICBmaW5pc2hDdXJy
ZW50Sm9iKCk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0Q29udGV4dFN0YXJ0
ZWQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIpCit2b2lkIFNXU2VydmVySm9iUXVldWU6OnNjcmlwdENvbnRleHRTdGFy
dGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgYXV0byogcmVn
aXN0cmF0aW9uID0gbV9zZXJ2ZXIuZ2V0UmVnaXN0cmF0aW9uKG1fcmVnaXN0cmF0aW9uS2V5KTsK
ICAgICBBU1NFUlQocmVnaXN0cmF0aW9uKTsKIAotICAgIGluc3RhbGwoKnJlZ2lzdHJhdGlvbiwg
Y29ubmVjdGlvbiwgaWRlbnRpZmllcik7CisgICAgaW5zdGFsbCgqcmVnaXN0cmF0aW9uLCBpZGVu
dGlmaWVyKTsKIH0KIAogLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI2lu
c3RhbGwKLXZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6aW5zdGFsbChTV1NlcnZlclJlZ2lzdHJhdGlv
biYgcmVnaXN0cmF0aW9uLCBTV1NlcnZlcjo6Q29ubmVjdGlvbiYsIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIGluc3RhbGxpbmdXb3JrZXIpCit2b2lkIFNXU2VydmVySm9iUXVldWU6Omluc3RhbGwo
U1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgaW5zdGFsbGluZ1dvcmtlcikKIHsKICAgICAvLyBUaGUgSW5zdGFsbCBhbGdvcml0aG0gc2hv
dWxkIG5ldmVyIGJlIGludm9rZWQgd2l0aCBhIG51bGwgd29ya2VyLgogICAgIGF1dG8qIHdvcmtl
ciA9IG1fc2VydmVyLndvcmtlckJ5SUQoaW5zdGFsbGluZ1dvcmtlcik7CkBAIC0xMjQsNyArMTI0
LDcgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjppbnN0YWxsKFNXU2VydmVyUmVnaXN0cmF0aW9u
JiByZWdpc3RyYXRpb24sIFNXU2VydmVyOjpDb24KIH0KIAogLy8gaHR0cHM6Ly93M2MuZ2l0aHVi
LmlvL1NlcnZpY2VXb3JrZXIvI2luc3RhbGwgKGFmdGVyIHJlc29sdmluZyBwcm9taXNlKS4KLXZv
aWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoU1dTZXJ2
ZXI6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit2b2lkIFNXU2VydmVySm9iUXVldWU6OmRpZFJl
c29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKCkKIHsKICAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBt
X3NlcnZlci5nZXRSZWdpc3RyYXRpb24obV9yZWdpc3RyYXRpb25LZXkpOwogICAgIEFTU0VSVChy
ZWdpc3RyYXRpb24pOwpAQCAtMTM1LDExICsxMzUsMTIgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVl
OjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShTV1NlcnZlcjo6Q29ubmVjdGlvbiYgY29u
bmUKICAgICByZWdpc3RyYXRpb24tPmZpcmVVcGRhdGVGb3VuZEV2ZW50KCk7CiAKICAgICAvLyBR
dWV1ZSBhIHRhc2sgdG8gZmlyZSB0aGUgSW5zdGFsbEV2ZW50LgotICAgIG1fc2VydmVyLmZpcmVJ
bnN0YWxsRXZlbnQoY29ubmVjdGlvbiwgcmVnaXN0cmF0aW9uLT5pbnN0YWxsaW5nV29ya2VyKCkt
PmlkZW50aWZpZXIoKSk7CisgICAgQVNTRVJUKHJlZ2lzdHJhdGlvbi0+aW5zdGFsbGluZ1dvcmtl
cigpKTsKKyAgICBtX3NlcnZlci5maXJlSW5zdGFsbEV2ZW50KCpyZWdpc3RyYXRpb24tPmluc3Rh
bGxpbmdXb3JrZXIoKSk7CiB9CiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29y
a2VyLyNpbnN0YWxsCi12b2lkIFNXU2VydmVySm9iUXVldWU6OmRpZEZpbmlzaEluc3RhbGwoU1dT
ZXJ2ZXI6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6ZGlk
RmluaXNoSW5zdGFsbChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIHdh
c1N1Y2Nlc3NmdWwpCiB7CiAgICAgYXV0byogcmVnaXN0cmF0aW9uID0gbV9zZXJ2ZXIuZ2V0UmVn
aXN0cmF0aW9uKG1fcmVnaXN0cmF0aW9uS2V5KTsKICAgICBBU1NFUlQocmVnaXN0cmF0aW9uKTsK
QEAgLTE3NiwxMSArMTc3LDExIEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6ZGlkRmluaXNoSW5z
dGFsbChTV1NlcnZlcjo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU2VydmljCiAgICAgZmluaXNo
Q3VycmVudEpvYigpOwogCiAgICAgLy8gRklYTUU6IFdhaXQgZm9yIGFsbCB0aGUgdGFza3MgcXVl
dWVkIGJ5IFVwZGF0ZSBXb3JrZXIgU3RhdGUgaW52b2tlZCBpbiB0aGlzIGFsZ29yaXRobSBoYXZl
IGV4ZWN1dGVkLgotICAgIHRyeUFjdGl2YXRlKG1fc2VydmVyLCBjb25uZWN0aW9uLCAqcmVnaXN0
cmF0aW9uKTsKKyAgICB0cnlBY3RpdmF0ZShtX3NlcnZlciwgKnJlZ2lzdHJhdGlvbik7CiB9CiAK
IC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyN0cnktYWN0aXZhdGUtYWxn
b3JpdGhtCi12b2lkIFNXU2VydmVySm9iUXVldWU6OnRyeUFjdGl2YXRlKFNXU2VydmVyJiBzZXJ2
ZXIsIFNXU2VydmVyOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTV1NlcnZlclJlZ2lzdHJhdGlv
biYgcmVnaXN0cmF0aW9uKQordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjp0cnlBY3RpdmF0ZShTV1Nl
cnZlciYgc2VydmVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uKQogewogICAg
IC8vIElmIHJlZ2lzdHJhdGlvbidzIHdhaXRpbmcgd29ya2VyIGlzIG51bGwsIHJldHVybi4KICAg
ICBpZiAoIXJlZ2lzdHJhdGlvbi53YWl0aW5nV29ya2VyKCkpCkBAIC0xOTUsMTEgKzE5NiwxMSBA
QCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnRyeUFjdGl2YXRlKFNXU2VydmVyJiBzZXJ2ZXIsIFNX
U2VydmVyOjpDb25uZWN0aW9uJiBjb25uZQogICAgIC8vICAgYW5kIG5vIHNlcnZpY2Ugd29ya2Vy
IGNsaWVudCBpcyB1c2luZyByZWdpc3RyYXRpb24KICAgICAvLyBGSVhNRTogQ2hlY2sgZm9yIHRo
ZSBza2lwIHdhaXRpbmcgZmxhZy4KICAgICBpZiAoIXJlZ2lzdHJhdGlvbi5hY3RpdmVXb3JrZXIo
KSB8fCAhcmVnaXN0cmF0aW9uLmFjdGl2ZVdvcmtlcigpLT5oYXNQZW5kaW5nRXZlbnRzKCkpCi0g
ICAgICAgIGFjdGl2YXRlKHNlcnZlciwgY29ubmVjdGlvbiwgcmVnaXN0cmF0aW9uKTsKKyAgICAg
ICAgYWN0aXZhdGUoc2VydmVyLCByZWdpc3RyYXRpb24pOwogfQogCiAvLyBodHRwczovL3czYy5n
aXRodWIuaW8vU2VydmljZVdvcmtlci8jYWN0aXZhdGUKLXZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6
YWN0aXZhdGUoU1dTZXJ2ZXImIHNlcnZlciwgU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24pCit2b2lkIFNXU2VydmVySm9i
UXVldWU6OmFjdGl2YXRlKFNXU2VydmVyJiBzZXJ2ZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiBy
ZWdpc3RyYXRpb24pCiB7CiAgICAgLy8gSWYgcmVnaXN0cmF0aW9uJ3Mgd2FpdGluZyB3b3JrZXIg
aXMgbnVsbCwgYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAgaWYgKCFyZWdpc3RyYXRpb24ud2FpdGlu
Z1dvcmtlcigpKQpAQCAtMjIzLDcgKzIyNCw4IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6YWN0
aXZhdGUoU1dTZXJ2ZXImIHNlcnZlciwgU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mIGNvbm5lY3RpCiAg
ICAgLy8gRklYTUU6IEludm9rZSBSdW4gU2VydmljZSBXb3JrZXIgYWxnb3JpdGhtIHdpdGggYWN0
aXZlV29ya2VyIGFzIHRoZSBhcmd1bWVudC4KIAogICAgIC8vIFF1ZXVlIGEgdGFzayB0byBmaXJl
IHRoZSBhY3RpdmF0ZSBldmVudC4KLSAgICBzZXJ2ZXIuZmlyZUFjdGl2YXRlRXZlbnQoY29ubmVj
dGlvbiwgcmVnaXN0cmF0aW9uLmFjdGl2ZVdvcmtlcigpLT5pZGVudGlmaWVyKCkpOworICAgIEFT
U0VSVChyZWdpc3RyYXRpb24uYWN0aXZlV29ya2VyKCkpOworICAgIHNlcnZlci5maXJlQWN0aXZh
dGVFdmVudCgqcmVnaXN0cmF0aW9uLmFjdGl2ZVdvcmtlcigpKTsKIH0KIAogLy8gaHR0cHM6Ly93
M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI2FjdGl2YXRlIChwb3N0IGFjdGl2YXRlIGV2ZW50
IHN0ZXBzKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlckpvYlF1ZXVlLmgKaW5kZXggMmY3N2IwOTdmMjE2NmUxYjY4MmEyOWIxYzc3
ZTIxNGVkN2FlNWU4NC4uMzEwZDE4YjNiMDEzNGYyOTEyNWE5Zjg2MzBlYjQ4MWU0YWI1YWQ0NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ckpvYlF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlckpvYlF1ZXVlLmgKQEAgLTQ4LDExICs0OCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
dW5OZXh0Sm9iKCk7CiAKICAgICB2b2lkIHNjcmlwdEZldGNoRmluaXNoZWQoU1dTZXJ2ZXI6OkNv
bm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKTsKLSAgICB2b2lkIHNj
cmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KFNXU2VydmVyOjpDb25uZWN0aW9uJiwgU2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgdm9pZCBzY3JpcHRD
b250ZXh0U3RhcnRlZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYsIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKTsKLSAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKTsKKyAgICB2b2lkIHNj
cmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgc2NyaXB0Q29udGV4dFN0YXJ0ZWQoU2VydmljZVdv
cmtlcklkZW50aWZpZXIpOworICAgIHZvaWQgZGlkRmluaXNoSW5zdGFsbChTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5p
c2hBY3RpdmF0aW9uKFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgU2VydmljZVdvcmtlcklkZW50aWZp
ZXIpOwotICAgIHZvaWQgZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoU1dTZXJ2ZXI6OkNv
bm5lY3Rpb24mKTsKKyAgICB2b2lkIGRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKCk7CiAK
IHByaXZhdGU6CiAgICAgdm9pZCBqb2JUaW1lckZpcmVkKCk7CkBAIC02Niw5ICs2Niw5IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHRyeUNsZWFyUmVnaXN0cmF0aW9uKFNXU2VydmVyUmVnaXN0cmF0
aW9uJik7CiAgICAgdm9pZCBjbGVhclJlZ2lzdHJhdGlvbihTV1NlcnZlclJlZ2lzdHJhdGlvbiYp
OwotICAgIHZvaWQgaW5zdGFsbChTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIFNXU2VydmVyOjpDb25u
ZWN0aW9uJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAgIHN0YXRpYyB2b2lkIHRyeUFj
dGl2YXRlKFNXU2VydmVyJiwgU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBTV1NlcnZlclJlZ2lzdHJh
dGlvbiYpOwotICAgIHN0YXRpYyB2b2lkIGFjdGl2YXRlKFNXU2VydmVyJiwgU1dTZXJ2ZXI6OkNv
bm5lY3Rpb24mLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYpOworICAgIHZvaWQgaW5zdGFsbChTV1Nl
cnZlclJlZ2lzdHJhdGlvbiYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMg
dm9pZCB0cnlBY3RpdmF0ZShTV1NlcnZlciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJik7CisgICAg
c3RhdGljIHZvaWQgYWN0aXZhdGUoU1dTZXJ2ZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYpOwog
CiAgICAgRGVxdWU8U2VydmljZVdvcmtlckpvYkRhdGE+IG1fam9iUXVldWU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3Ry
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggZjczYmVmZWNiNDM2MjJhMGI3ZDA5MjQ1MGVkZWY5NjJl
ODQ2YWY3MC4uNzMyNzc5N2I4MDZkNGIyODUzOTJjNTgxYTk1YTE5Y2ViMzJkYzFhZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lz
dHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTM3LDggKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdGF0aWMgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgZ2VuZXJh
dGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcigpCiB7Ci0gICAgc3RhdGljIHVp
bnQ2NF90IGlkZW50aWZpZXIgPSAwOwotICAgIHJldHVybiBtYWtlT2JqZWN0SWRlbnRpZmllcjxT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllclR5cGU+KCsraWRlbnRpZmllcik7Cisg
ICAgcmV0dXJuIGdlbmVyYXRlT2JqZWN0SWRlbnRpZmllcjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllclR5cGU+KCk7CiB9CiAKIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpTV1NlcnZl
clJlZ2lzdHJhdGlvbihTV1NlcnZlciYgc2VydmVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5JiBrZXksIFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZSB1cGRhdGVWaWFDYWNo
ZSwgY29uc3QgVVJMJiBzY29wZVVSTCwgY29uc3QgVVJMJiBzY3JpcHRVUkwpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ZlMDEwZjcxZmJkZWUy
ZTAwZTI5YzZmOWEyZDQ4NjUyMTkxODA0ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKKworI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKKworI2luY2x1ZGUgIlNXU2VydmVyLmgiCisjaW5jbHVkZSAiU1dTZXJ2ZXJX
b3JrZXIuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitzdGF0aWMgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciBn
ZW5lcmF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKCkKK3sKKyAgICByZXR1
cm4gZ2VuZXJhdGVPYmplY3RJZGVudGlmaWVyPFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklk
ZW50aWZpZXJUeXBlPigpOworfQorCitzdGF0aWMgSGFzaE1hcDxTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25JZGVudGlmaWVyLCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qPiYgYWxsQ29u
bmVjdGlvbnMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIsIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bio+PiBjb25uZWN0aW9uczsKKyAgICByZXR1cm4gY29ubmVjdGlvbnM7Cit9CisKK1NXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkKKyAgICA6
IG1faWRlbnRpZmllcihnZW5lcmF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVy
KCkpCit7CisgICAgYXV0byByZXN1bHQgPSBhbGxDb25uZWN0aW9ucygpLmFkZChtX2lkZW50aWZp
ZXIsIHRoaXMpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7
Cit9CisKK1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6flNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbigpCit7CisgICAgYXV0byByZXN1bHQgPSBhbGxDb25uZWN0aW9ucygpLnJlbW92ZSht
X2lkZW50aWZpZXIpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCitT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
Y29ubmVjdGlvbkZvcklkZW50aWZpZXIoU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRp
ZmllciBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBhbGxDb25uZWN0aW9ucygpLmdldChpZGVu
dGlmaWVyKTsKK30KKworU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQoreworICAg
IGlmIChhbGxDb25uZWN0aW9ucygpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgCisgICAgQVNTRVJUKGFsbENvbm5lY3Rpb25zKCkuc2l6ZSgpID09IDEpOworICAgIHJl
dHVybiBhbGxDb25uZWN0aW9ucygpLmJlZ2luKCktPnZhbHVlOworfQorCit2b2lkIFNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoU2VydmljZVdv
cmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKK3sKKyAgICBpZiAoYXV0byogd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5n
V29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpCisgICAgICAgIHdv
cmtlci0+c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQobWVzc2FnZSk7Cit9CisKK3ZvaWQgU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzY3JpcHRDb250ZXh0U3RhcnRlZChTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byog
d29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2
aWNlV29ya2VySWRlbnRpZmllcikpCisgICAgICAgIHdvcmtlci0+c2NyaXB0Q29udGV4dFN0YXJ0
ZWQoKTsKK30KKyAgICAKK3ZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRGaW5p
c2hJbnN0YWxsKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBib29sIHdhc1N1Y2Nlc3NmdWwpCit7CisgICAgaWYgKGF1dG8qIHdvcmtlciA9IFNXU2VydmVy
V29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZp
ZXIpKQorICAgICAgICB3b3JrZXItPmRpZEZpbmlzaEluc3RhbGwod2FzU3VjY2Vzc2Z1bCk7Cit9
CisKK3ZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRGaW5pc2hBY3RpdmF0aW9u
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQoreworICAg
IGlmIChhdXRvKiB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVu
dGlmaWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkKKyAgICAgICAgd29ya2VyLT5kaWRGaW5p
c2hBY3RpdmF0aW9uKCk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpz
ZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKQoreworICAgIGlm
IChhdXRvKiB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlm
aWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkKKyAgICAgICAgd29ya2VyLT5zZXRIYXNQZW5k
aW5nRXZlbnRzKGhhc1BlbmRpbmdFdmVudHMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNGE1NDZjZGFkYjBmZDdjZjI5Zjk4YjdiOGQ2
ZTA2NDU3MTYzMGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDcy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJUeXBlcy5oIgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNXU2VydmVyOworc3RydWN0IFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YTsKKworY2xhc3MgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bj4geworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbigpOworCisgICAgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRp
ZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKKyAgICAv
LyBNZXNzYWdlcyB0byB0aGUgU1cgaG9zdCBwcm9jZXNzCisgICAgdmlydHVhbCB2b2lkIGluc3Rh
bGxTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50
aWZpZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdv
cmtlcklkZW50aWZpZXIpID0gMDsKKworICAgIC8vIE1lc3NhZ2VzIGJhY2sgZnJvbSB0aGUgU1cg
aG9zdCBwcm9jZXNzCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVk
VG9TdGFydChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcmlwdENvbnRleHRTdGFydGVkKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEZpbmlzaEluc3RhbGwo
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkaWRGaW5pc2hBY3RpdmF0aW9uKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZl
bnRzKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIGhhc1BlbmRpbmdFdmVudHMpOworCisg
ICAgc3RhdGljIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogY29ubmVjdGlvbkZvcklkZW50
aWZpZXIoU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcik7CisKKyAgICAvLyBG
SVhNRTogV2hpbGUgd2Ugb25seSBldmVyIGhhdmUgb25lIFNXIGNvbnRleHQgcHJvY2VzcyB0aGlz
IG1ldGhvZCBtYWtlcyBzZW5zZS4KKyAgICAvLyBPbmNlIHdlIGhhdmUgbXVsdGlwbGUgb25lcyB0
aGlzIG1ldGhvZCBzaG91bGQgZ28gYXdheSBmb3JjaW5nIHVzZSBvZiBjb25uZWN0aW9uRm9ySWRl
bnRpZmllcigpCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbiogZ2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOworCitwcm90ZWN0ZWQ6
CisgICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7CisKK3By
aXZhdGU6CisgICAgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciBtX2lkZW50
aWZpZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCmluZGV4IDEyNWEyNjRmNTdjZTUwZjA1NjZi
YzI5YWI3MjJkZjU4MWI0NmJlMmYuLjViYjIzMGNmZjA3MGRjZmI0MTUxNzVhODA0ZGRjOGE3NDk0
MDlhZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCkBAIC0yOCwyNCArMjgsNjUgQEAKIAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNXU2VydmVyV29ya2VyOjpTV1NlcnZlcldvcmtlcihjb25z
dCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgV29ya2VyVHlwZSB0eXBlLCBTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBpZGVudGlmaWVyKQotICAgIDogbV9yZWdpc3RyYXRpb25LZXkocmVnaXN0
cmF0aW9uS2V5KQorc3RhdGljIEhhc2hNYXA8U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNXU2Vy
dmVyV29ya2VyKj4mIGFsbFdvcmtlcnMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxI
YXNoTWFwPFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTV1NlcnZlcldvcmtlcio+PiB3b3JrZXJz
OworICAgIHJldHVybiB3b3JrZXJzOworfQorCitTV1NlcnZlcldvcmtlciogU1dTZXJ2ZXJXb3Jr
ZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBp
ZGVudGlmaWVyKQoreworICAgIHJldHVybiBhbGxXb3JrZXJzKCkuZ2V0KGlkZW50aWZpZXIpOwor
fQorCitTV1NlcnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImIHNlcnZlciwgY29u
c3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyIGNvbnRleHRDb25uZWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXb3JrZXJUeXBlIHR5cGUs
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgOiBtX3NlcnZlcihzZXJ2
ZXIpCisgICAgLCBtX3JlZ2lzdHJhdGlvbktleShyZWdpc3RyYXRpb25LZXkpCisgICAgLCBtX2Nv
bnRleHRDb25uZWN0aW9uSWRlbnRpZmllcihjb250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIpCiAg
ICAgLCBtX3NjcmlwdFVSTCh1cmwpCiAgICAgLCBtX3NjcmlwdChzY3JpcHQpCiAgICAgLCBtX2lk
ZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAsIG1fdHlwZSh0eXBlKQogeworICAgIGF1dG8gcmVz
dWx0ID0gYWxsV29ya2VycygpLmFkZChpZGVudGlmaWVyLCB0aGlzKTsKKyAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi1TV1NlcnZlcldvcmtlcjo6flNX
U2VydmVyV29ya2VyKCkgPSBkZWZhdWx0OworU1dTZXJ2ZXJXb3JrZXI6On5TV1NlcnZlcldvcmtl
cigpCit7CisgICAgYXV0byB0YWtlbiA9IGFsbFdvcmtlcnMoKS50YWtlKG1faWRlbnRpZmllcik7
CisgICAgQVNTRVJUX1VOVVNFRCh0YWtlbiwgdGFrZW4gPT0gdGhpcyk7Cit9CiAKIHZvaWQgU1dT
ZXJ2ZXJXb3JrZXI6OnRlcm1pbmF0ZSgpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudAogfQog
Cit2b2lkIFNXU2VydmVyV29ya2VyOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCit7CisgICAgbV9zZXJ2ZXIuc2NyaXB0Q29udGV4dEZhaWxlZFRvU3Rh
cnQoKnRoaXMsIG1lc3NhZ2UpOworfQorCit2b2lkIFNXU2VydmVyV29ya2VyOjpzY3JpcHRDb250
ZXh0U3RhcnRlZCgpCit7CisgICAgbV9zZXJ2ZXIuc2NyaXB0Q29udGV4dFN0YXJ0ZWQoKnRoaXMp
OworfQorCit2b2lkIFNXU2VydmVyV29ya2VyOjpkaWRGaW5pc2hJbnN0YWxsKGJvb2wgd2FzU3Vj
Y2Vzc2Z1bCkKK3sKKyAgICBtX3NlcnZlci5kaWRGaW5pc2hJbnN0YWxsKCp0aGlzLCB3YXNTdWNj
ZXNzZnVsKTsKK30KKwordm9pZCBTV1NlcnZlcldvcmtlcjo6ZGlkRmluaXNoQWN0aXZhdGlvbigp
Cit7CisgICAgbV9zZXJ2ZXIuZGlkRmluaXNoQWN0aXZhdGlvbigqdGhpcyk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuaAppbmRleCAxYTY4MWViMjljZTg1YjU5MDNjN2E0MWQ5N2EwNDRhOGI0YWQwYTM1Li4z
OGIwYjQ3YWNlNzhiYWMxOWFhMjQ5NzMwYjA1NjliNDc0ZGJkZjM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBA
IC0zNSwxMyArMzUsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTV1NlcnZl
cjsKIGVudW0gY2xhc3MgV29ya2VyVHlwZTsKIAogY2xhc3MgU1dTZXJ2ZXJXb3JrZXIgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U1dTZXJ2ZXJXb3JrZXI+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFNXU2VydmVyV29ya2VyPiBjcmVhdGUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBzY3JpcHQsIFdvcmtlclR5cGUgdHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllcikKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxTV1NlcnZl
cldvcmtlcj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU1dTZXJ2ZXJXb3JrZXIocmVnaXN0cmF0aW9uS2V5LCB1cmwsIHNjcmlwdCwg
dHlwZSwgaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTV1NlcnZl
cldvcmtlcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKICAgICB9CiAgICAgCiAgICAg
U1dTZXJ2ZXJXb3JrZXIoY29uc3QgU1dTZXJ2ZXJXb3JrZXImKSA9IGRlbGV0ZTsKQEAgLTQ5LDEx
ICs1MCwxNCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHRlcm1pbmF0ZSgpOwogCisgICAgU1dTZXJ2
ZXImIHNlcnZlcigpOworICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJl
Z2lzdHJhdGlvbktleSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmF0aW9uS2V5OyB9CiAgICAg
Y29uc3QgVVJMJiBzY3JpcHRVUkwoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFVSTDsgfQogICAg
IGNvbnN0IFN0cmluZyYgc2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHQ7IH0KICAgICBX
b3JrZXJUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAgIFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7
IH0KKyAgICBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyIGNvbnRleHRDb25u
ZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dENvbm5lY3Rpb25JZGVu
dGlmaWVyOyB9CiAKICAgICBTZXJ2aWNlV29ya2VyU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlOyB9CiAgICAgdm9pZCBzZXRTdGF0ZShTZXJ2aWNlV29ya2VyU3RhdGUgc3RhdGUp
IHsgbV9zdGF0ZSA9IHN0YXRlOyB9CkBAIC02MSwxMCArNjUsMTkgQEAgcHVibGljOgogICAgIGJv
b2wgaGFzUGVuZGluZ0V2ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzUGVuZGluZ0V2ZW50czsg
fQogICAgIHZvaWQgc2V0SGFzUGVuZGluZ0V2ZW50cyhib29sIHZhbHVlKSB7IG1faGFzUGVuZGlu
Z0V2ZW50cyA9IHZhbHVlOyB9CiAKKyAgICB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBzY3JpcHRDb250ZXh0U3RhcnRlZCgp
OworICAgIHZvaWQgZGlkRmluaXNoSW5zdGFsbChib29sIHdhc1N1Y2Nlc3NmdWwpOworICAgIHZv
aWQgZGlkRmluaXNoQWN0aXZhdGlvbigpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNX
U2VydmVyV29ya2VyKiBleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoU2VydmljZVdvcmtlcklk
ZW50aWZpZXIpOworCiBwcml2YXRlOgotICAgIFNXU2VydmVyV29ya2VyKGNvbnN0IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwg
V29ya2VyVHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIFNXU2VydmVyV29ya2Vy
KFNXU2VydmVyJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYg
c2NyaXB0LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAKKyAgICBTV1Nl
cnZlciYgbV9zZXJ2ZXI7CiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBtX3JlZ2lz
dHJhdGlvbktleTsKKyAgICBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyIG1f
Y29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyOwogICAgIFVSTCBtX3NjcmlwdFVSTDsKICAgICBT
dHJpbmcgbV9zY3JpcHQ7CiAgICAgU2VydmljZVdvcmtlcklkZW50aWZpZXIgbV9pZGVudGlmaWVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDQzOWIxZWU4Zjg5YjJjYjJkZTY2YjAy
MDlmYTMwZGIzOTdjZDFhNjkuLmQ3MjFjMGIxOGNhMWIxZjkzMDQ2MjNkMDY0YjA0NjZkYTJkNWY0
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE2NCw2ICsxNjQsNyBAQCBNRVNT
QUdFX1JFQ0VJVkVSUyA9IFwKICAgICBXZWJTV0NsaWVudENvbm5lY3Rpb24gXAogICAgIFdlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uIFwKICAgICBXZWJTV1NlcnZlckNvbm5lY3Rpb24gXAor
ICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBcCiAgICAgUGxheWJhY2tTZXNzaW9u
TWFuYWdlciBcCiAgICAgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5IFwKICAgICBXZWJQcm9j
ZXNzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5k
ZXggOThkOTdhZGZjODRiNzFmNGI4NzBmZjZmZDlmYTY0NTgyZDY2ZDhkZi4uZTk5Y2I2ZGQ4MWZh
NjM5YzZhY2FkNjI1YTNkZDJlOWZmZDBlN2MyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtl
clVwZGF0ZVZpYUNhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yZWRDcmVkZW50aWFsc1Bv
bGljeS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyVHlwZS5oPgogCiBuYW1lc3BhY2UgV1RG
IHsKIGNsYXNzIE1vbm90b25pY1RpbWU7CkBAIC03OTcsNiArNzk4LDE0IEBAIHRlbXBsYXRlIDw+
IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5PiB7CiAg
ICAgPjsKIH07CiAKK3RlbXBsYXRlIDw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Oldvcmtl
clR5cGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3Jl
OjpXb3JrZXJUeXBlLAorICAgICAgICBXZWJDb3JlOjpXb3JrZXJUeXBlOjpDbGFzc2ljLAorICAg
ICAgICBXZWJDb3JlOjpXb3JrZXJUeXBlOjpNb2R1bGUKKyAgICA+OworfTsKKwogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKIHRlbXBsYXRlIDw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZT4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1W
YWx1ZXM8CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDZiYzU4
OWE5NTcyODUwMTNhYjQ4ODQwYzJmNDBiMDQ2MDE5MTk5YzQuLjZmYWZmNDgxNGI0NzM1OWY4OGYy
NjA0OTJlMDUxZjMwMWFiZDBhYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rp
b24uY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXT3JpZ2luU3RvcmUuaCIKICNpbmNs
dWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYlRvU3RvcmFnZVByb2Nlc3ND
b25uZWN0aW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25EYXRhLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpAQCAtMTExLDI0ICsxMTIsNiBAQCB2b2lkIFdl
YlNXU2VydmVyQ29ubmVjdGlvbjo6dXBkYXRlV29ya2VyU3RhdGVJbkNsaWVudChTZXJ2aWNlV29y
a2VySWRlbnRpZmllciB3bwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlv
bjo6VXBkYXRlV29ya2VyU3RhdGUod29ya2VyLCBzdGF0ZSkpOwogfQogCi12b2lkIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKLXsKLSAgICBpZiAoc2VuZFRvQ29udGV4dFByb2Nlc3Mo
TWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpJbnN0YWxsU2VydmljZVdv
cmtlcihpZGVudGlmaWVyKCksIGRhdGEpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wZW5k
aW5nQ29udGV4dERhdGFzLmFwcGVuZChkYXRhKTsKLX0KLQotdm9pZCBXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OmZpcmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdv
cmtlcklkZW50aWZpZXIpCi17Ci0gICAgc2VuZFRvQ29udGV4dFByb2Nlc3MoTWVzc2FnZXM6Oldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpGaXJlSW5zdGFsbEV2ZW50KGlkZW50aWZpZXIo
KSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIpKTsKLX0KLQotdm9pZCBXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OmZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKQotewotICAgIHNlbmRUb0NvbnRleHRQcm9jZXNzKE1lc3NhZ2VzOjpX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6RmlyZUFjdGl2YXRlRXZlbnQoaWRlbnRpZmll
cigpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpOwotfQotCiB2b2lkIFdlYlNXU2VydmVyQ29u
bmVjdGlvbjo6c3RhcnRGZXRjaCh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHN0ZDo6b3B0aW9u
YWw8U2VydmljZVdvcmtlcklkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucykK
IHsKICAgICBzZW5kVG9Db250ZXh0UHJvY2VzcyhNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OlN0YXJ0RmV0Y2goaWRlbnRpZmllcigpLCBmZXRjaElkZW50aWZpZXIsIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRpb25zKSk7CkBAIC0xNzksMjUgKzE2
MiwxMiBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6bWF0Y2hSZWdpc3RyYXRpb24odWlu
dDY0X3QgcmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNX
Q2xpZW50Q29ubmVjdGlvbjo6RGlkTWF0Y2hSZWdpc3RyYXRpb24geyByZWdpc3RyYXRpb25NYXRj
aFJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om51bGxvcHQgfSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFU+IGJvb2wgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzZW5kVG9Db250ZXh0UHJvY2VzcyhV
JiYgbWVzc2FnZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjpzZW5kVG9Db250ZXh0UHJvY2VzcyhVJiYgbWVzc2FnZSkKIHsKLSAgICBpZiAoIW1fY29u
dGV4dENvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBtX2Nv
bnRleHRDb25uZWN0aW9uLT5zZW5kPFU+KFdURk1vdmUobWVzc2FnZSksIDApOworICAgIGlmIChh
dXRvKiBjb25uZWN0aW9uID0gU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLmdsb2JhbFNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24oKSkKKyAgICAgICAgY29ubmVjdGlvbi0+c2VuZChXVEZNb3Zl
KG1lc3NhZ2UpKTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnNldENvbnRleHRD
b25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbikKLXsKLSAgICBtX2NvbnRleHRD
b25uZWN0aW9uID0gY29ubmVjdGlvbjsKLQotICAgIC8vIFdlIGNhbiBub3cgc3RhcnQgYW55IHBl
bmRpbmcgc2VydmljZSB3b3JrZXIgdXBkYXRlcy4KLSAgICBmb3IgKGF1dG8mIHBlbmRpbmdDb250
ZXh0RGF0YSA6IG1fcGVuZGluZ0NvbnRleHREYXRhcykKLSAgICAgICAgaW5zdGFsbFNlcnZpY2VX
b3JrZXJDb250ZXh0KHBlbmRpbmdDb250ZXh0RGF0YSk7Ci0gICAgCi0gICAgbV9wZW5kaW5nQ29u
dGV4dERhdGFzLmNsZWFyKCk7Ci19Ci0gICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2Vu
ZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24uaAppbmRleCA3ZjFjZDUxZWNmMTNkYWU2NGYyZDA1YjI2Y2VkYjZkMzU2ODQ5YzRkLi5i
ODBiM2JmZDQ3Y2ExMjEwNTI3MDQ5MzFmNzMxYjVlYTA5Nzg0NDdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbi5oCkBAIC00Niw3ICs0Niw2IEBAIHB1YmxpYzoKICAgICB+V2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uKCkgZmluYWw7CiAKICAgICB2b2lkIGRpc2Nvbm5lY3RlZEZyb21X
ZWJQcm9jZXNzKCk7Ci0gICAgdm9pZCBzZXRDb250ZXh0Q29ubmVjdGlvbihJUEM6OkNvbm5lY3Rp
b24qKTsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpIGZpbmFsOwogCiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Qg
eyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KQEAgLTc1LDIyICs3NCwxNSBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBtYXRjaFJlZ2lzdHJhdGlvbih1aW50NjRfdCByZWdpc3RyYXRpb25NYXRjaFJlcXVl
c3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIGNsaWVudFVSTCk7CiAKLSAgICAvLyBNZXNzYWdlcyB0byB0aGUgU1cgY29u
dGV4dCBXZWJQcm9jZXNzCi0gICAgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoY29u
c3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJikgZmluYWw7Ci0gICAgdm9pZCBm
aXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsK
LSAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKSBmaW5hbDsKLQogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rp
b24oKSBmaW5hbCB7IHJldHVybiBtX2NvbnRlbnRDb25uZWN0aW9uLnB0cigpOyB9CiAgICAgdWlu
dDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBmaW5hbCB7IHJldHVybiBpZGVudGlm
aWVyKCk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZFRvQ29udGV4dFBy
b2Nlc3MoVSYmIG1lc3NhZ2UpOwogICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQg
c2VuZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1lc3NhZ2UpOworCiAgICAgUEFMOjpTZXNzaW9uSUQg
bV9zZXNzaW9uSUQ7CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2NvbnRlbnRDb25uZWN0
aW9uOwogICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29udGV4dENvbm5lY3Rpb247Ci0g
ICAgCi0gICAgRGVxdWU8V2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBtX3BlbmRp
bmdDb250ZXh0RGF0YXM7CiB9OyAvLyBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb24KIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4MmVmMzUzYTZjYjI1NTFhMjg3YmZjN2Ez
YmVlMWUxYWQzNjliYWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApA
QCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgorCisjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQorCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVk
ZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4m
JiBjb25uZWN0aW9uKQorICAgIDogbV9pcGNDb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikp
Cit7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpCit7CisgICAgcmV0dXJuIG1faXBjQ29ubmVjdGlv
bi5wdHIoKTsKK30KKwordWludDY0X3QgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpt
ZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uQ2xvc2VkKCkKK3sKKyAg
ICAvLyBGSVhNRTogRG8gd2hhdCBoZXJlLi4uPworfQorCit2b2lkIFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6SW5zdGFsbFNlcnZpY2VXb3JrZXIoZGF0YSkpOworfQorCit2
b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZmlyZUluc3RhbGxFdmVudChTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6RmlyZUluc3RhbGxFdmVu
dChzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpOworfQorCit2b2lkIFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6ZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIg
c2VydmljZVdvcmtlcklkZW50aWZpZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OkZpcmVBY3RpdmF0ZUV2ZW50KHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3Yjc2ZDJhOWMxNTU5M2E4MmJiYmUyN2FiNzUzNTBl
NDcwNjNmNDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTAsMCAr
MSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVzc2Fn
ZVNlbmRlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24gOiBwdWJsaWMgV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLCBw
dWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewor
cHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmPFdlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgIH0KKworICAgIHZvaWQgY29u
bmVjdGlvbkNsb3NlZCgpOworCisgICAgSVBDOjpDb25uZWN0aW9uKiBpcGNDb25uZWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9pcGNDb25uZWN0aW9uLnB0cigpOyB9CisKKyAgICAvLyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYpOworCisgICAg
Ly8gSVBDOjpNZXNzYWdlU2VuZGVyCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVy
Q29ubmVjdGlvbigpIGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlv
bklEKCkgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcyB0byB0aGUgU1cgaG9zdCBXZWJQcm9jZXNz
CisgICAgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNvbnRleHREYXRhJikgZmluYWw7CisgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKKyAgICB2b2lkIGZpcmVB
Y3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKKyAg
ICAKKyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2lwY0Nvbm5lY3Rpb247CisgICAgCit9OyAv
LyBjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjlkYzhjMTYzYjQxMDdmOThiMTY5ZDVmMzVmYWY4MTUxZmE2ZGQ1NWQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAg
KzEsMzUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
KyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKKworbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uIHsKKyAgICAjIFdoZW4gcG9zc2libGUsIHRoZXNlIG1lc3NhZ2VzIGNhbiBiZSBp
bXBsZW1lbnRlZCBkaXJlY3RseSBieSBXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24KKworICAgIFNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cmluZyBtZXNzYWdlKTsKKyAgICBTY3JpcHRDb250
ZXh0U3RhcnRlZChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKTsK
KyAgICBEaWRGaW5pc2hJbnN0YWxsKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCk7CisgICAgRGlkRmluaXNoQWN0aXZhdGlvbihX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKTsKKyAgICBTZXRTZXJ2
aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKTsKK30KKwor
I2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKaW5kZXggMTllN2QwMGNhNWE5MzVjNGFlYzVj
ZThlYzU0OGRlZTgzNDk1Zjg4Ni4uZTFjNDdkNmY5YzhjMzhlNzAxMTgzNzBhMmMwZmY2N2FhZDQ3
NzM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vz
cy5jcHAKQEAgLTMzLDEwICszMywxMiBAQAogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgogI2luY2x1ZGUgIldlYlNXT3JpZ2luU3RvcmUuaCIKICNpbmNsdWRlICJXZWJTV1NlcnZl
ckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSURCS2V5RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
Tm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NXU2VydmVyV29ya2VyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRFbmNv
ZGluZy5oPgpAQCAtNDQsNiArNDYsMTAgQEAKICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRUYXNr
Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAorI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKKyNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5o
IgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTc5LDggKzg1LDkgQEAgYm9vbCBTdG9yYWdlUHJvY2Vzczo6c2hvdWxkVGVybWluYXRl
KCkKIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbikKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKG1fd29ya2VyQ29u
dGV4dFByb2Nlc3NDb25uZWN0aW9uID09ICZjb25uZWN0aW9uKSB7Ci0gICAgICAgIG1fd29ya2Vy
Q29udGV4dFByb2Nlc3NDb25uZWN0aW9uID0gbnVsbHB0cjsKKyAgICBpZiAobV9zZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uICYmIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+aXBjQ29ubmVj
dGlvbigpID09ICZjb25uZWN0aW9uKSB7CisgICAgICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi0+Y29ubmVjdGlvbkNsb3NlZCgpOworICAgICAgICBtX3NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24gPSBudWxscHRyOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2Vsc2UKQEAgLTk4LDYg
KzEwNSwxNiBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlcgogICAgICAgICBkaWRSZWNlaXZlU3Rv
cmFnZVByb2Nlc3NNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHN3Q29u
bmVjdGlvbiA9IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Z2xvYmFsU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbigpKSB7CisgICAgICAgICAgICBhdXRvKiB3ZWJTV0Nvbm5lY3Rpb24gPSBz
dGF0aWNfY2FzdDxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qPihzd0Nvbm5lY3Rpb24p
OworICAgICAgICAgICAgd2ViU1dDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgICAgIHJldHVybjsgICAgICAgIAorICAgICAgICB9Cisg
ICAgfQorI2VuZGlmCiB9CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKQEAgLTM1MSwx
NyArMzY4LDE3IEBAIFNXU2VydmVyJiBTdG9yYWdlUHJvY2Vzczo6c3dTZXJ2ZXJGb3JTZXNzaW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICByZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+
dmFsdWU7CiB9CiAKLUlQQzo6Q29ubmVjdGlvbiogU3RvcmFnZVByb2Nlc3M6OndvcmtlckNvbnRl
eHRQcm9jZXNzQ29ubmVjdGlvbigpCitXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIFN0
b3JhZ2VQcm9jZXNzOjpnbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkKIHsKLSAgICBy
ZXR1cm4gbV93b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24uZ2V0KCk7CisgICAgcmV0dXJu
IG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5nZXQoKTsKIH0KIAotdm9pZCBTdG9yYWdlUHJv
Y2Vzczo6Y3JlYXRlV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKCkKK3ZvaWQgU3RvcmFn
ZVByb2Nlc3M6OmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQogewotICAgIGlmICht
X3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pCisgICAgaWYgKG1fd2Fp
dGluZ0ZvclNlcnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgbV93YWl0aW5nRm9yV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uID0g
dHJ1ZTsKKyAgICBtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9
IHRydWU7CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3Rv
cmFnZVByb2Nlc3NQcm94eTo6R2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKCksIDAp
OwogfQogCkBAIC0zODIsOCArMzk5LDggQEAgV2ViU1dPcmlnaW5TdG9yZSogU3RvcmFnZVByb2Nl
c3M6OnN3T3JpZ2luU3RvcmVGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb24KIAogdm9p
ZCBTdG9yYWdlUHJvY2Vzczo6ZGlkR2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKElQ
Qzo6QXR0YWNobWVudCYmIGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBBU1NF
UlQobV93YWl0aW5nRm9yV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKTsKLSAgICBtX3dh
aXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPSBmYWxzZTsKKyAgICBBU1NF
UlQobV93YWl0aW5nRm9yU2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pOworICAgIG1f
d2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uID0gZmFsc2U7CiAKICNp
ZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKICAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZp
ZXIgY29ubmVjdGlvbklkZW50aWZpZXIgPSBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIucmVs
ZWFzZUZpbGVEZXNjcmlwdG9yKCk7CkBAIC0zOTgsMjUgKzQxNSwxNCBAQCB2b2lkIFN0b3JhZ2VQ
cm9jZXNzOjpkaWRHZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpBdHRhY2ht
ZW50JiYgZW5jbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV93b3JrZXJDb250ZXh0
UHJvY2Vzc0Nvbm5lY3Rpb24gPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZUNsaWVudENvbm5lY3Rp
b24oY29ubmVjdGlvbklkZW50aWZpZXIsICp0aGlzKTsKLSAgICBtX3dvcmtlckNvbnRleHRQcm9j
ZXNzQ29ubmVjdGlvbi0+b3BlbigpOworICAgIGF1dG8gaXBjQ29ubmVjdGlvbiA9IElQQzo6Q29u
bmVjdGlvbjo6Y3JlYXRlQ2xpZW50Q29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwgKnRo
aXMpOworICAgIGlwY0Nvbm5lY3Rpb24tPm9wZW4oKTsKKyAgICBtX3NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24gPSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNyZWF0ZShXVEZNb3Zl
KGlwY0Nvbm5lY3Rpb24pKTsKICAgICAKICAgICBmb3IgKGF1dG8mIGNvbm5lY3Rpb24gOiBtX3N0
b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9ucykKICAgICAgICAgY29ubmVjdGlvbi0+d29ya2Vy
Q29udGV4dFByb2Nlc3NDb25uZWN0aW9uQ3JlYXRlZCgpOwogfQogCi12b2lkIFN0b3JhZ2VQcm9j
ZXNzOjpzZXJ2aWNlV29ya2VyQ29udGV4dEZhaWxlZFRvU3RhcnQodWludDY0X3Qgc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJl
Z2lzdHJhdGlvbktleSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBpZiAoYXV0byogY29ubmVjdGlv
biA9IG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5nZXQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIp
KQotICAgICAgICBjb25uZWN0aW9uLT5zY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChyZWdpc3Ry
YXRpb25LZXksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBtZXNzYWdlKTsKLX0KLQotdm9pZCBT
dG9yYWdlUHJvY2Vzczo6c2VydmljZVdvcmtlckNvbnRleHRTdGFydGVkKHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
JiByZWdpc3RyYXRpb25LZXksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKQotewotICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbV9zd1NlcnZlckNvbm5l
Y3Rpb25zLmdldChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpCi0gICAgICAgIGNvbm5lY3Rp
b24tPnNjcmlwdENvbnRleHRTdGFydGVkKHJlZ2lzdHJhdGlvbktleSwgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIpOwotfQotCiB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaWRGYWlsRmV0Y2godWludDY0
X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcikK
IHsKICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5nZXQo
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKQpAQCAtNDUzLDI1ICs0NTksNiBAQCB2b2lkIFN0
b3JhZ2VQcm9jZXNzOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZXJ2
aWNlV29ya2VyQ2xpZW50SQogICAgICAgICBjb25uZWN0aW9uLT5wb3N0TWVzc2FnZVRvU2Vydmlj
ZVdvcmtlckNsaWVudChkZXN0aW5hdGlvbklkZW50aWZpZXIuc2NyaXB0RXhlY3V0aW9uQ29udGV4
dElkZW50aWZpZXIsIG1lc3NhZ2UsIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbik7CiB9
CiAKLXZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZEZpbmlzaFNlcnZpY2VXb3JrZXJJbnN0YWxsKHVp
bnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCi17Ci0gICAgaWYgKGF1
dG8qIGNvbm5lY3Rpb24gPSBtX3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0KHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyKSkKLSAgICAgICAgY29ubmVjdGlvbi0+ZGlkRmluaXNoSW5zdGFsbChyZWdp
c3RyYXRpb25LZXksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCB3YXNTdWNjZXNzZnVsKTsKLX0K
LQotdm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlkRmluaXNoU2VydmljZVdvcmtlckFjdGl2YXRpb24o
dWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIg
c2VydmljZVdvcmtlcklkZW50aWZpZXIpCi17Ci0gICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBt
X3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKLSAg
ICAgICAgY29ubmVjdGlvbi0+ZGlkRmluaXNoQWN0aXZhdGlvbihyZWdpc3RyYXRpb25LZXksIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLX0KLQotCi12b2lkIFN0b3JhZ2VQcm9jZXNzOjpzZXRT
ZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IGJvb2wgaGFzUGVuZGluZ0V2ZW50cykKLXsKLSAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1f
c3dTZXJ2ZXJDb25uZWN0aW9ucy5nZXQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKQotICAg
ICAgICBjb25uZWN0aW9uLT5zZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgaGFzUGVuZGluZ0V2ZW50cyk7Ci19Ci0KIHZvaWQgU3RvcmFnZVBy
b2Nlc3M6OnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYg
Y29ubmVjdGlvbikKIHsKICAgICBBU1NFUlQoIW1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5jb250YWlu
cyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCmluZGV4IGVhNTUwMzQ1NGI5NzljYWZjN2QyMmYwNzNhMWYx
NDM1ZDIzY2YyMDYuLjk4OWYxMTAwNWI5YzU1ZjdlZTUyNzQ0YTc0YzU0MDMzNDM3YzY5MjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKQEAgLTQ2
LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFN0b3JhZ2VUb1dlYlByb2Nl
c3NDb25uZWN0aW9uOwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOworY2xhc3MgV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YVR5cGU7CiBz
dHJ1Y3QgU3RvcmFnZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiAKQEAgLTgwLDggKzgxLDEw
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIElQ
Qzo6Q29ubmVjdGlvbiogd29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKCk7Ci0gICAgdm9p
ZCBjcmVhdGVXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKyAgICAvLyBGb3Igbm93
IHdlIGp1c3QgaGF2ZSBvbmUgZ2xvYmFsIGNvbm5lY3Rpb24gdG8gc2VydmljZSB3b3JrZXIgY29u
dGV4dCBwcm9jZXNzZXMuCisgICAgLy8gVGhpcyB3aWxsIGNoYW5nZSBpbiB0aGUgZnV0dXJlLgor
ICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogZ2xvYmFsU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbigpOworICAgIHZvaWQgY3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigp
OwogCiAgICAgV2ViU1dPcmlnaW5TdG9yZSYgZW5zdXJlU1dPcmlnaW5TdG9yZUZvclNlc3Npb24o
UEFMOjpTZXNzaW9uSUQpOwogICAgIFdlYlNXT3JpZ2luU3RvcmUqIHN3T3JpZ2luU3RvcmVGb3JT
ZXNzaW9uKFBBTDo6U2Vzc2lvbklEKSBjb25zdDsKQEAgLTExOSw4ICsxMjIsNiBAQCBwcml2YXRl
OgogI2VuZGlmCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZGlkR2V0V29y
a2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCYmIGVuY29kZWRDb25u
ZWN0aW9uSWRlbnRpZmllcik7Ci0gICAgdm9pZCBzZXJ2aWNlV29ya2VyQ29udGV4dEZhaWxlZFRv
U3RhcnQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICB2b2lkIHNlcnZpY2VXb3JrZXJD
b250ZXh0U3RhcnRlZCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UodWlu
dDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgZGlkUmVjZWl2
ZUZldGNoRGF0YSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qg
ZmV0Y2hJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29k
ZWREYXRhTGVuZ3RoKTsKQEAgLTEyOCw5ICsxMjksNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlk
RmFpbEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBm
ZXRjaElkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkTm90SGFuZGxlRmV0Y2godWludDY0X3Qgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcik7CiAKLSAg
ICB2b2lkIGRpZEZpbmlzaFNlcnZpY2VXb3JrZXJJbnN0YWxsKHVpbnQ2NF90IHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5JiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1
bCk7Ci0gICAgdm9pZCBkaWRGaW5pc2hTZXJ2aWNlV29ya2VyQWN0aXZhdGlvbih1aW50NjRfdCBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICB2
b2lkIHNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKHVpbnQ2NF90IHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBo
YXNQZW5kaW5nRXZlbnRzKTsKICAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xp
ZW50KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5h
dGlvbklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VPcmlnaW4pOwogI2VuZGlmCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCkBA
IC0xNTgsOCArMTU2LDggQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAg
ICAgdm9pZCBkaWRDcmVhdGVXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBD
OjpBdHRhY2htZW50Jik7CiAKLSAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX3dvcmtlckNv
bnRleHRQcm9jZXNzQ29ubmVjdGlvbjsKLSAgICBib29sIG1fd2FpdGluZ0ZvcldvcmtlckNvbnRl
eHRQcm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNlIH07CisgICAgUmVmUHRyPFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbj4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOworICAgIGJvb2wg
bV93YWl0aW5nRm9yU2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24geyBmYWxzZSB9Owog
ICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTV1Nl
cnZlcj4+IG1fc3dTZXJ2ZXJzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFdlYlNXU2VydmVyQ29u
bmVjdGlvbio+IG1fc3dTZXJ2ZXJDb25uZWN0aW9uczsKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lv
bklELCBzdGQ6OnVuaXF1ZV9wdHI8V2ViU1dPcmlnaW5TdG9yZT4+IG1fc3dPcmlnaW5TdG9yZXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vz
cy5tZXNzYWdlcy5pbgppbmRleCAzYjZkMzM5MzZlODk3NGIxYjY1NjczYjNjOWMwZjg0Nzc4ZjZk
OGU4Li4wNTc0OTAyMzNmMWFkNjg1MTRmZjRiMjdlNDRlZWExZTk2ZWRjNWU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2Fn
ZXMuaW4KQEAgLTM4LDEyICszOCw2IEBAIG1lc3NhZ2VzIC0+IFN0b3JhZ2VQcm9jZXNzIExlZ2Fj
eVJlY2VpdmVyIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgRGlkR2V0V29ya2Vy
Q29udGV4dFByb2Nlc3NDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFuZGxl
KQogCi0gICAgU2VydmljZVdvcmtlckNvbnRleHRGYWlsZWRUb1N0YXJ0KHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5IHJlZ2lzdHJhdGlvbktleSwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIFN0cmluZyBtZXNzYWdlKQotICAgIFNlcnZpY2VXb3JrZXJD
b250ZXh0U3RhcnRlZCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29y
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSByZWdpc3RyYXRpb25LZXksIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQotICAgIERp
ZEZpbmlzaFNlcnZpY2VXb3JrZXJJbnN0YWxsKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlv
bktleSwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCk7Ci0gICAgRGlkRmluaXNoU2VydmljZVdvcmtlckFj
dGl2YXRpb24odWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgcmVnaXN0cmF0aW9uS2V5LCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgU2V0U2Vy
dmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHModWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBib29sIGhhc1BlbmRpbmdFdmVudHMpOwotCiAgICAgRGlkTm90SGFuZGxlRmV0Y2go
dWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRp
ZmllcikKICAgICBEaWRGYWlsRmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcikKICAgICBEaWRSZWNlaXZlRmV0Y2hSZXNwb25z
ZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VUb1dlYlByb2Nlc3ND
b25uZWN0aW9uLmNwcAppbmRleCA0NTQ1YmM0YTI1MmNmOGE5YjE0MmJhOTMwZjQ0MmFhOTFmYTI2
MmFjLi45YjA5Nzc4NTNmMTQwZGMxNDU5YmFlNmM1MTBiMTA0N2NjYzRhMTUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VUb1dlYlBy
b2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMzUsNiArMzUsMTEgQEAKICNpbmNsdWRlICJXZWJTV1Nl
cnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKKyNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVz
c2FnZXMuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgUEFMOwogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKQEAgLTg1LDYgKzkwLDExIEBAIHZvaWQgU3RvcmFnZVRvV2ViUHJvY2Vzc0Nv
bm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvCiAg
ICAgICAgICAgICBpdGVyYXRvci0+dmFsdWUtPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVz
c2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBTdG9yYWdlUHJvY2Vzczo6
c2luZ2xldG9uKCkuZ2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpLT5kaWRSZWNlaXZl
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICNl
bmRpZgogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xNDgsMTAgKzE1OCw4IEBAIHZv
aWQgU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmVzdGFibGlzaFNXU2VydmVyQ29ubmVj
dGlvbihTZXNzaW9uSUQgc2Vzc2lvCiAKICAgICBTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCku
cmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oKihjb25uZWN0aW9uUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSkpOwogCi0gICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBTdG9yYWdlUHJvY2Vzczo6c2lu
Z2xldG9uKCkud29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKCkpCi0gICAgICAgIGNvbm5l
Y3Rpb25SZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5zZXRDb250ZXh0Q29ubmVjdGlvbihjb25uZWN0
aW9uKTsKLSAgICBlbHNlCi0gICAgICAgIFN0b3JhZ2VQcm9jZXNzOjpzaW5nbGV0b24oKS5jcmVh
dGVXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKyAgICBpZiAoIVN0b3JhZ2VQcm9j
ZXNzOjpzaW5nbGV0b24oKS5nbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkpCisgICAg
ICAgIFN0b3JhZ2VQcm9jZXNzOjpzaW5nbGV0b24oKS5jcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uKCk7CiB9CiAKIHZvaWQgU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OnJlbW92
ZVNXU2VydmVyQ29ubmVjdGlvbih1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikK
QEAgLTE2NSwxMSArMTczLDggQEAgdm9pZCBTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6
cmVtb3ZlU1dTZXJ2ZXJDb25uZWN0aW9uKHVpbnQ2NF90IHNlcnZlckNvbm4KIAogdm9pZCBTdG9y
YWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6d29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9u
Q3JlYXRlZCgpCiB7Ci0gICAgYXV0byogaXBjQ29ubmVjdGlvbiA9IFN0b3JhZ2VQcm9jZXNzOjpz
aW5nbGV0b24oKS53b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKLSAgICBBU1NFUlQo
aXBjQ29ubmVjdGlvbik7Ci0KLSAgICBmb3IgKGF1dG8mIHN3Q29ubmVjdGlvbiA6IG1fc3dDb25u
ZWN0aW9ucy52YWx1ZXMoKSkKLSAgICAgICAgc3dDb25uZWN0aW9uLT5zZXRDb250ZXh0Q29ubmVj
dGlvbihpcGNDb25uZWN0aW9uKTsKKyAgICBmb3IgKGF1dG8qIHNlcnZlciA6IFNXU2VydmVyOjph
bGxTZXJ2ZXJzKCkpCisgICAgICAgIHNlcnZlci0+c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNy
ZWF0ZWQoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAxM2NmYjdmYTNmYTJiNWM3MDJkMDkwMDc5MzRiOGU1ZjYx
NGI1M2ZiLi43ZTJiMzk5ZDhmZjI0MjRjMDI3YmMzMzgyYjQ0Y2U2ZDJmYjAwNWVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMTks
NiArMTAxOSw4IEBACiAJCTUxNEJERUQzMTZDOThFREQwMEU0RTI1RSAvKiBTdGF0aXN0aWNzUmVx
dWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0
QkRFRDIxNkM5OEVERDAwRTRFMjVFIC8qIFN0YXRpc3RpY3NSZXF1ZXN0LmggKi87IH07CiAJCTUx
NEQ5RjU3MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEQ5RjU1MTkxMTlEMzUwMDAw
NjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIuaCAqLzsgfTsKIAkJNTE0RDlGNTgxOTExOUQzNTAw
MDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEQ5RjU2MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNl
c0NvbnRyb2xsZXIubW0gKi87IH07CisJCTUxNTI2MkJDMUZCOTUxNUQwMDcwRTU3OSAvKiBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1MjYyQkIxRkI5NTEzMTAwNzBFNTc5IC8qIFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmggKi87IH07CisJCTUxNTI2MkJE
MUZCOTUxNjEwMDcwRTU3OSAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE1MjYyQkExRkI5NTEzMTAwNzBFNTc5IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUxNTc4QjgzMTIwOUVDRUYwMEEzN0M0
QSAvKiBBUElEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTU3OEI4MjEyMDlFQ0VGMDBBMzdDNEEgLyogQVBJRGF0YS5oICovOyB9OwogCQk1MTVC
RTE3NzFENTNGRTg3MDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJFMTczMUQ1M0ZEREMwMERE
N0M2OCAvKiBXZWJHYW1lcGFkUHJvdmlkZXIuY3BwICovOyB9OwogCQk1MTVCRTE3OTFENTNGRThG
MDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVCRTE3NDFENTNGRERDMDBERDdDNjggLyogV2ViR2Ft
ZXBhZFByb3ZpZGVyLmggKi87IH07CkBAIC0xMDU4LDYgKzEwNjAsNyBAQAogCQk1MTdERDVCRTE4
MERBN0QzMDA4MTY2MEIgLyogU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdERDVCQzE4MERBN0QzMDA4MTY2MEIg
LyogU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAgKi87IH07CiAJCTUxN0RENUJGMTgwREE3RDMwMDgx
NjYwQiAvKiBTdG9yYWdlUHJvY2Vzc1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdERDVCRDE4MERBN0QzMDA4MTY2MEIgLyogU3RvcmFnZVBy
b2Nlc3NQcm94eS5oICovOyB9OwogCQk1MTgzRERFQzE2MzBCREZDMDA4QkU1QzcgLyogTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMDVCMEQ0MTYyRjdBN0EwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwICovOyB9OworCQk1MTg1NDMwRTFGQjY4MTYxMDA0NzhGOTUgLyogV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxODU0MzBEMUZCNjgwRkEwMDQ3OEY5NSAvKiBXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uY3BwICovOyB9OwogCQk1MTg3MUI1QjEyN0NCODlEMDBGNzYy
MzIgLyogV2ViQ29udGV4dE1lbnUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE4NzFCNTkxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51
LmNwcCAqLzsgfTsKIAkJNTE4NzFCNUMxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg3MUI1
QTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuaCAqLzsgfTsKIAkJNTE4QUNBRUEx
MkFFRTZCQjAwQjA0QjgzIC8qIFdLUHJvdGVjdGlvblNwYWNlVHlwZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxOEFDQUU5MTJBRUU2QkIwMEIwNEI4
MyAvKiBXS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMzNTksNiArMzM2Miw5IEBACiAJCTUxNEJERUQyMTZD
OThFREQwMEU0RTI1RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTdGF0aXN0aWNzUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MTREOUY1NTE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VzQ29udHJvbGxlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTREOUY1NjE5MTE5RDM1MDAwMDYzQTcgLyog
U2VydmljZXNDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gU2VydmljZXNDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MTUyNjJCOTFGQjk1MDM1MDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTE1MjYyQkExRkI5NTEzMTAwNzBFNTc5IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTUyNjJCQjFGQjk1MTMxMDA3MEU1NzkgLyogV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1NzhCODIxMjA5RUNFRjAwQTM3QzRBIC8q
IEFQSURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRGF0YS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVCRTE3MzFENTNGRERDMDBERDdDNjggLyog
V2ViR2FtZXBhZFByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYkdhbWVwYWRQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxNUJFMTc0MUQ1M0ZEREMwMEREN0M2OCAvKiBXZWJHYW1lcGFkUHJvdmlkZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR2FtZXBhZFByb3ZpZGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMzk2LDYgKzM0MDIsOCBAQAogCQk1MTdERDVCQzE4MERB
N0QzMDA4MTY2MEIgLyogU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE3REQ1QkQxODBEQTdEMzAwODE2NjBCIC8qIFN0b3JhZ2VQcm9j
ZXNzUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZVByb2Nl
c3NQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTgzQjM5MzEzNzlGODVD
MDBFODc1NEUgLyogU2hpbS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGgg
PSBTaGltLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTg1NDMwQzFG
QjY4MEY5MDA0NzhGOTUgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTg1NDMwRDFGQjY4MEZBMDA0NzhG
OTUgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODcxQjU5MTI3Q0I4OUQwMEY3NjIzMiAv
KiBXZWJDb250ZXh0TWVudS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJDb250ZXh0TWVudS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODcx
QjVBMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0TWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MThBQ0FFOTEyQUVFNkJCMDBCMDRCODMgLyogV0tQcm90ZWN0aW9uU3BhY2VUeXBl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1Byb3RlY3Rpb25TcGFjZVR5
cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MzgxLDYgKzYzODksOSBAQAog
CQkJCTUxN0E1MzA5MUY0NzlFMzEwMERDREMwQSAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb24uY3Bw
ICovLAogCQkJCTUxN0E1MzA3MUY0NzlFMzEwMERDREMwQSAvKiBXZWJTV1NlcnZlckNvbm5lY3Rp
b24uaCAqLywKIAkJCQk1MTdBNTMwODFGNDc5RTMxMDBEQ0RDMEEgLyogV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluICovLAorCQkJCTUxODU0MzBEMUZCNjgwRkEwMDQ3OEY5NSAvKiBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwICovLAorCQkJCTUxODU0MzBDMUZCNjgw
RjkwMDQ3OEY5NSAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCAqLywKKwkJCQk1
MTUyNjJCOTFGQjk1MDM1MDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluICovLAogCQkJKTsKIAkJCXBhdGggPSBTZXJ2aWNlV29ya2VyOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTgyMDAsNiArODIxMSw4IEBACiAJCQkJNDYwRjQ4OEUx
Rjk5NkY2QzAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMu
aCAqLywKIAkJCQk1MTdBNTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQk1MTdBNTJENjFGNDNBOUI2MDBEQ0RDMEEg
LyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCAqLywKKwkJCQk1MTUyNjJCQTFGQjk1
MTMxMDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLywKKwkJCQk1MTUyNjJCQjFGQjk1MTMxMDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCAqLywKIAkJCQkxQUFGMDhCNTE5MjY5RTZEMDBC
NjM5MEMgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywK
IAkJCQkxQUFGMDhCNjE5MjY5RTZEMDBCNjM5MEMgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
TWVzc2FnZXMuaCAqLywKIAkJCQk3QzM2MUQ3NjE5MjgwM0JEMDAzNkE1OUQgLyogV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtOTEyMyw2ICs5
MTM2LDcgQEAKIAkJCQk4M0YxQTA3QTFGOTZFNzc5MDA0NUI5NEUgLyogV2ViU1dPcmlnaW5UYWJs
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3QTUzMEIxRjQ3OUUzNjAwRENEQzBBIC8qIFdlYlNX
U2VydmVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3QTUyRDkxRjQzQTlEQTAw
RENEQzBBIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1MTUyNjJCQzFGQjk1MTVEMDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMThFOTlDMUYyOTUyNjYwMDNF
RjlGNSAvKiBXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNBMEVGN0YxMjMzMUU3ODAwN0QzQ0ZCIC8qIFdlYlVuZG9TdGVwLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUFGMDhBRTE5MjY5MzY3MDBCNjM5MEMgLyogV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTEwNzg5LDYgKzEwODAzLDggQEAKIAkJCQk4M0YxQTA3
OTFGOTZFNzc5MDA0NUI5NEUgLyogV2ViU1dPcmlnaW5UYWJsZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MTdBNTMwQTFGNDc5RTM2MDBEQ0RDMEEgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUxN0E1MkQ4MUY0M0E5REEwMERDREMwQSAvKiBXZWJTV1Nl
cnZlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4
NTQzMEUxRkI2ODE2MTAwNDc4Rjk1IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTUyNjJCRDFGQjk1MTYxMDA3MEU1NzkgLyogV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUxMThFOTlCMUYyOTUyNjYwMDNFRjlGNSAvKiBXZWJUb1N0b3JhZ2VQcm9jZXNzQ29u
bmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMDMzN0REODEyN0E1MUI2MDA4RkY0RjQg
LyogV2ViVG91Y2hFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyREE5NDRBMzE4ODRFNEYw
MDBFRDg2REIgLyogV2ViVG91Y2hFdmVudElPUy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCBlZGIyNDU0NzM5OWRiYzdmNTIzOGQ2OGI1
NWNiMzE4YmZmN2Y5NzEyLi5kZmRjNjJmODZkNmY2ODkzZGRiMDRhM2RhYTJjMjRlOTQ4YTI2ZTli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0zNyw2ICszNyw3IEBA
CiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNLZXlzLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5j
ZXNTdG9yZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRQcm92aWRlci5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRWRpdG9yQ2xpZW50Lmg+CkBAIC05NSw4ICs5NiwxMCBAQCB2b2lkIFdl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJgogICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkuc2V0RmV0Y2hBUElFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVm
ZXJlbmNlc0tleTo6ZmV0Y2hBUElFbmFibGVkS2V5KCkpKTsKIH0KIAotdm9pZCBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIodWludDY0X3Qgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0
YSkKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29y
a2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKIHsKKyAgICBMT0coU2Vy
dmljZVdvcmtlciwgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2Vydmlj
ZVdvcmtlciBmb3Igd29ya2VyICVzIiwgZGF0YS5zZXJ2aWNlV29ya2VySWRlbnRpZmllci5sb2dn
aW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKICAgICAvLyBGSVhNRTogUHJvdmlkZSBhIHNl
bnNpY2FsIHNlc3Npb24gSUQuCiAgICAgYXV0byBzZXNzaW9uSUQgPSBQQUw6OlNlc3Npb25JRDo6
ZGVmYXVsdFNlc3Npb25JRCgpOwogCkBAIC0xMTMsNyArMTE2LDcgQEAgdm9pZCBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIodWludDY0X3Qgc2VydmVy
Q29ubmVjdGkKICAgICBhdXRvIGZyYW1lTG9hZGVyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxT
ZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ+KHNlc3Npb25JRCwgbV9wYWdlSUQsICsrbV9w
cmV2aW91c1NlcnZpY2VXb3JrZXJJRCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xp
ZW50Rm9yTWFpbkZyYW1lID0gZnJhbWVMb2FkZXJDbGllbnQucmVsZWFzZSgpOwogCi0gICAgYXV0
byBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgPSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmNy
ZWF0ZShXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSwgc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIGRhdGEsIHNlc3Npb25JRCwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FjaGVTdG9yYWdl
UHJvdmlkZXIoKSk7CisgICAgYXV0byBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgPSBTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZShXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSwgZGF0
YSwgc2Vzc2lvbklELCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZVN0b3JhZ2VQcm92aWRl
cigpKTsKICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5yZWdpc3RlclNlcnZpY2VX
b3JrZXJUaHJlYWRGb3JJbnN0YWxsKFdURk1vdmUoc2VydmljZVdvcmtlclRocmVhZFByb3h5KSk7
CiAKICAgICBMT0coU2VydmljZVdvcmtlciwgIkNvbnRleHQgcHJvY2VzcyBQSUQ6ICVpIGNyZWF0
ZWQgd29ya2VyIHRocmVhZFxuIiwgZ2V0cGlkKCkpOwpAQCAtMTIxLDE1ICsxMjQsMTAgQEAgdm9p
ZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIodWlu
dDY0X3Qgc2VydmVyQ29ubmVjdGkKIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6c2VydmljZVdvcmtlclN0YXJ0ZWRXaXRoTWVzc2FnZShTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBleGNlcHRpb25NZXNzYWdl
KQogewotICAgIGF1dG8qIHRocmVhZFByb3h5ID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9u
KCkuc2VydmljZVdvcmtlclRocmVhZFByb3h5KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAg
ICBBU1NFUlQodGhyZWFkUHJveHkpOwotICAgIAotICAgIGF1dG8mIGRhdGEgPSB0aHJlYWRQcm94
eS0+dGhyZWFkKCkuY29udGV4dERhdGEoKTsKLSAgICAKICAgICBpZiAoZXhjZXB0aW9uTWVzc2Fn
ZS5pc0VtcHR5KCkpCi0gICAgICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpTZXJ2aWNlV29ya2VyQ29udGV4dFN0YXJ0ZWQodGhy
ZWFkUHJveHktPnRocmVhZCgpLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCksIGRhdGEucmVn
aXN0cmF0aW9uS2V5LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciksIDApOworICAgICAgICBtX2Nv
bm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OlNjcmlwdENvbnRleHRTdGFydGVkKHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKSwgMCk7CiAgICAgZWxzZQotICAgICAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6U2VydmljZVdvcmtlckNvbnRleHRGYWls
ZWRUb1N0YXJ0KHRocmVhZFByb3h5LT50aHJlYWQoKS5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
cigpLCBkYXRhLnJlZ2lzdHJhdGlvbktleSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGV4Y2Vw
dGlvbk1lc3NhZ2UpLCAwKTsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTY3JpcHRDb250
ZXh0RmFpbGVkVG9TdGFydChzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZXhjZXB0aW9uTWVzc2Fn
ZSksIDApOwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzdGFydEZl
dGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElk
ZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlcklkZW50aWZpZXI+IHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGZXRjaE9wdGlvbnMm
JiBvcHRpb25zKQpAQCAtMTQ5LDE1ICsxNDcsMTMgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShTZXJ2aWMK
ICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5wb3N0TWVzc2FnZVRvU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlKGRlc3RpbmF0aW9uSWRlbnRpZmllciwgU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjphZG9wdChtZXNzYWdlLnZlY3RvcigpKSwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3Jp
Z2luKTsKIH0KIAotdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZmlyZUluc3Rh
bGxFdmVudCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtl
cklkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OmZpcmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikK
IHsKLSAgICBVTlVTRURfUEFSQU0oc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpOwogICAgIFNX
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZpcmVJbnN0YWxsRXZlbnQoaWRlbnRpZmllcik7
CiB9CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpcmVBY3RpdmF0ZUV2
ZW50KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBpZGVudGlmaWVyKQordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
ZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsK
LSAgICBVTlVTRURfUEFSQU0oc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpOwogICAgIFNXQ29u
dGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZpcmVBY3RpdmF0ZUV2ZW50KGlkZW50aWZpZXIpOwog
fQogCkBAIC0xNjgsMjggKzE2NCwxNyBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZXJ2aQogCiB2b2lk
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpkaWRGaW5pc2hJbnN0YWxsKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3Nm
dWwpCiB7Ci0gICAgYXV0byogdGhyZWFkUHJveHkgPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0
b24oKS5zZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwot
ICAgIEFTU0VSVCh0aHJlYWRQcm94eSk7Ci0KLSAgICBhdXRvJiBkYXRhID0gdGhyZWFkUHJveHkt
PnRocmVhZCgpLmNvbnRleHREYXRhKCk7Ci0gICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkRpZEZpbmlzaFNlcnZpY2VXb3JrZXJJ
bnN0YWxsKHRocmVhZFByb3h5LT50aHJlYWQoKS5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigp
LCBkYXRhLnJlZ2lzdHJhdGlvbktleSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHdhc1N1Y2Nl
c3NmdWwpLCAwKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OkRpZEZpbmlzaEluc3RhbGwoc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIHdhc1N1Y2Nlc3NmdWwpLCAwKTsKIH0KIAogdm9pZCBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlkRmluaXNoQWN0aXZhdGlvbihTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKIHsKLSAgICBhdXRvKiB0aHJl
YWRQcm94eSA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eShzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgQVNTRVJUKHRocmVhZFByb3h5
KTsKLQotICAgIGF1dG8mIGRhdGEgPSB0aHJlYWRQcm94eS0+dGhyZWFkKCkuY29udGV4dERhdGEo
KTsKLSAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9y
YWdlUHJvY2Vzczo6RGlkRmluaXNoU2VydmljZVdvcmtlckFjdGl2YXRpb24odGhyZWFkUHJveHkt
PnRocmVhZCgpLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCksIGRhdGEucmVnaXN0cmF0aW9u
S2V5LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciksIDApOworICAgIG1fY29ubmVjdGlvblRvU3Rv
cmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6RGlkRmluaXNoQWN0aXZhdGlvbihzZXJ2aWNlV29ya2VySWRlbnRpZmllciksIDApOwogfQog
CiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzZXRTZXJ2aWNlV29ya2VySGFz
UGVuZGluZ0V2ZW50cyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKQogewotICAgIGF1dG8qIHRocmVhZFByb3h5ID0g
U1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlclRocmVhZFByb3h5KHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICBBU1NFUlQodGhyZWFkUHJveHkpOwotCi0gICAg
bV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nl
c3M6OlNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKHRocmVhZFByb3h5LT50aHJlYWQo
KS5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
aGFzUGVuZGluZ0V2ZW50cyksIDApOworICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6U2V0U2Vydmlj
ZVdvcmtlckhhc1BlbmRpbmdFdmVudHMoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGhhc1BlbmRp
bmdFdmVudHMpLCAwKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmgKaW5kZXggOGRhNmE1ZDZlYWQwNTU5MGFlMTQ1MGE2MzcyNzAyMzhh
YjA5MGJkNC4uZmEyYWM4MzkyYmRjNDgzOWNhMDExZmU2MDQ0MjQ4MjUwY2QwMDhkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC01OCwxMSArNTgsMTEgQEAgcHJpdmF0ZToK
IAogICAgIC8vIElQQyBtZXNzYWdlcy4KICAgICB2b2lkIHNlcnZpY2VXb3JrZXJTdGFydGVkV2l0
aE1lc3NhZ2UoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
ZXhjZXB0aW9uTWVzc2FnZSkgZmluYWw7Ci0gICAgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtlcih1
aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhJik7CisgICAgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtlcihjb25z
dCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmKTsKICAgICB2b2lkIHN0YXJ0RmV0
Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRl
bnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcj4s
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJik7CiAg
ICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllciYgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4p
OwotICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAgIHZvaWQgZmly
ZUFjdGl2YXRlRXZlbnQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQo
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIHZvaWQgZmlyZUFjdGl2YXRl
RXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogCiAgICAgUmVmPElQQzo6
Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2VzczsKICAgICB1aW50NjRfdCBt
X3BhZ2VJRCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KaW5kZXggNWQyNTU1YWRjYzkyMjAwNmI5OGU0Y2RiNzA3NDA2M2M0NDQ0ZTY0OS4u
MTQ5OGQyNzIxOWYwNzQ2MjViMjE1MjQzNzMxNTYzMWVkNTJhMTgwYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTIzLDExICsyMywxMSBA
QAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogbWVzc2FnZXMgLT4gV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24gewotICAgIEluc3RhbGxTZXJ2aWNlV29ya2VyKHVpbnQ2NF90IHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNv
bnRleHREYXRhIGNvbnRleHREYXRhKQorICAgIEluc3RhbGxTZXJ2aWNlV29ya2VyKHN0cnVjdCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgY29udGV4dERhdGEpCiAgICAgU3RhcnRG
ZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJ
ZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
PiBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QsIHN0cnVjdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMgb3B0aW9ucykKICAgICBQb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UsIHN0
cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBzb3VyY2VJZGVudGlm
aWVyLCBTdHJpbmcgc291cmNlT3JpZ2luKQotICAgIEZpcmVJbnN0YWxsRXZlbnQodWludDY0X3Qg
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIpCi0gICAgRmlyZUFjdGl2YXRlRXZlbnQodWludDY0X3Qgc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIpCisgICAgRmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBpZGVudGlmaWVyKQorICAgIEZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB9CiAKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326821</attachid>
            <date>2017-11-13 16:36:56 -0800</date>
            <delta_ts>2017-11-13 18:47:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179554-20171113163655.patch</filename>
            <type>text/plain</type>
            <size>141632</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0NzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDBkYWJiNzMyYTNiZjAyMTZhZDFjNWZk
YWEwYWE3OWExODAzMDQyMWEuLmY1ZGY3MmVjNDczYTVmM2ZhNDIzYTQ4NTI4ZDI1ZmMzYWRjOWIz
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMTEtMTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIE1hc3NpdmUgIlNlcnZlci1wcm9jZXNzLXRvLWNvbnRl
eHQtcHJvY2VzcyIgY29ubmVjdGlvbiBvdmVyaGF1bC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTU1NAorCisgICAgICAgIFJldmlld2VkIGJ5IENo
cmlzIER1bWV6LgorCisgICAgICAgICogd3RmL09iamVjdElkZW50aWZpZXIuaDoKKyAgICAgICAg
KFdURjo6Z2VuZXJhdGVPYmplY3RJZGVudGlmaWVyKToKKyAgICAgICAgKFdURjo6bWFrZU9iamVj
dElkZW50aWZpZXIpOiBEZWxldGVkLgorCiAyMDE3LTExLTEzICBKRiBCYXN0aWVuICA8amZiYXN0
aWVuQGFwcGxlLmNvbT4KIAogICAgICAgICBzdGQ6OmV4cGVjdGVkOiBmaXggYW5kIHRlc3QgbW92
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDRlNDNmNDEwZTllMjczMGYyNWM2NGZhODNiNzQ1ZWU1OGMwZmNkNDEu
LmJkMmY2NGI2OWVjODliMzE4Y2EwNzBmNjAyZWQ0ZjFlMzQzZTMyODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMTcgQEAKKzIwMTctMTEtMTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIE1hc3NpdmUgIlNlcnZlci1wcm9jZXNzLXRvLWNvbnRleHQtcHJvY2Vz
cyIgY29ubmVjdGlvbiBvdmVyaGF1bC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3OTU1NAorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoUmVmYWN0b3IsIG5vIGJlaGF2aW9yIGNoYW5nZSku
CisKKyAgICAgICAgSGF2aW5nIHRoZSBTV1NlcnZlcjo6Q29ubmVjdGlvbiBvYmplY3QgYmUgb3Zl
cmxvYWRlZCB0byBtZWFuIGJvdGggY2xpZW50LT5zZXJ2ZXIgYW5kIHNlcnZlci0+Y29udGV4dCAK
KyAgICAgICAgd2FzIHRoZSB3cm9uZyBkZXNpZ24gYW5kIHdhcyBzdGFydGluZyB0byBjcnVtYmxl
IHVuZGVyIGl0cyBvd24gd2VpZ2h0LgorCisgICAgICAgIFNvIHRoaXMgcGF0Y2ggaW50cm9kdWNl
cyBhIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiB0byBtYW5hZ2UgdGhlIFN0b3JhZ2VQcm9j
ZXNzLXNpZGUgb2YgY29ubmVjdGlvbnMKKyAgICAgICAgdG8gY29udGV4dCBwcm9jZXNzZXMuCisK
KyAgICAgICAgQW55IG1lc3NhZ2UgdGhhdCBpcyBzcGVjaWZpY2FsbHkgYWJvdXQgdGhlIGNvbm5l
Y3Rpb24gYmV0d2VlbiB0aGUgU3RvcmFnZVByb2Nlc3MgYW5kIGNvbnRleHQgcHJvY2VzcworICAg
ICAgICBzaG91bGQgdXNlIHRoaXMgY29ubmVjdGlvbiBnb2luZyBmb3J3YXJkLgorCisgICAgICAg
IFJpZ2h0IG5vdyB0aGVyZSBpcyBvbmx5IG9uZSBjb250ZXh0IHByb2Nlc3MsIGJ1dCB0aGlzIGRl
c2lnbiBrZWVwcyB1cyByZWFkeSBmb3IgdGhhdCB0byBjaGFuZ2UuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBhbHNvIGdldHMgcmlkIG9mIGEgbG90IG9mICJzZXJ2ZXIgY29ubmVjdGlvbiBpZGVudGlm
aWVyIiBpbnRlZ2VycyBiZWluZyBwYXNzZWQgYW1vbmdzdCBwcm9jZXNzZXMKKyAgICAgICAgdGhh
dCB3ZXJlIGFjdHVhbGx5IHBvaW50bGVzcy4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGFsc28g
YSBwcmVyZXF1aXNpdGUgZm9yIG1hbnkgdGhpbmdzIHRoYXQgYXJlIGNvbWluZyB1cCBzb29uLCBz
dWNoIGFzIHRlcm1pbmF0aW9uLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNvZGUpOgorCisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5o
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlclR5cGVzLmg6CisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJUaHJlYWQ6OlNlcnZpY2VXb3JrZXJUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
U2VydmljZVdvcmtlclRocmVhZDo6Y3JlYXRlV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
IGNvbnN0KTogRGVsZXRlZC4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHk6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSk6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5Lmg6CisK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmdlbmVyYXRlU2VydmljZVdvcmtlcklkZW50aWZpZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U1dTZXJ2ZXI6On5TV1NlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6
U1dTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnNjcmlwdENvbnRleHRGYWls
ZWRUb1N0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzY3JpcHRDb250ZXh0U3Rh
cnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6ZGlkRmluaXNoSW5zdGFsbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6ZGlkRmluaXNoQWN0aXZhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlcjo6ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTV1NlcnZlcjo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQpOgorICAgICAgICAo
V2ViQ29yZTo6U1dTZXJ2ZXI6Omluc3RhbGxDb250ZXh0RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpTV1NlcnZlcjo6ZmlyZUluc3RhbGxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZl
cjo6ZmlyZUFjdGl2YXRlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OkNvbm5l
Y3Rpb246OmRpZEZpbmlzaEluc3RhbGwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1dT
ZXJ2ZXI6OkNvbm5lY3Rpb246OmRpZEZpbmlzaEFjdGl2YXRpb24pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OkNvbm5lY3Rpb246OnNldFNlcnZpY2VXb3JrZXJIYXNQZW5k
aW5nRXZlbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpDb25uZWN0
aW9uOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlcjo6Q29ubmVjdGlvbjo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5n
RXZlbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmg6CisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVl
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0Q29udGV4
dEZhaWxlZFRvU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6c2Ny
aXB0Q29udGV4dFN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6
aW5zdGFsbCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpkaWRSZXNvbHZl
UmVnaXN0cmF0aW9uUHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVl
OjpkaWRGaW5pc2hJbnN0YWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6
OnRyeUFjdGl2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6OmFjdGl2
YXRlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUu
aDoKKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2VuZXJhdGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllcik6CisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Z2Vu
ZXJhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcik6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5T
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9ySWRlbnRpZmllcik6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNjcmlwdENvbnRleHRTdGFydGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZGlkRmluaXNoSW5zdGFsbCk6
CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZEZpbmlz
aEFjdGl2YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjpzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyk6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5o
LgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjppZGVudGlm
aWVyIGNvbnN0KToKKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29y
a2VyRm9ySWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6U1dT
ZXJ2ZXJXb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6On5TV1NlcnZl
cldvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6c2NyaXB0Q29udGV4
dEZhaWxlZFRvU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OnNjcmlw
dENvbnRleHRTdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpkaWRG
aW5pc2hJbnN0YWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpkaWRGaW5p
c2hBY3RpdmF0aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
V29ya2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpyZWdpc3RyYXRpb25LZXkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OmNvbnRleHRDb25uZWN0aW9uSWRlbnRp
ZmllciBjb25zdCk6CisKIDIwMTctMTEtMTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIG1hdGNoUmVnaXN0cmF0aW9uIGRvZXMgbm90IG5lZWQgdG8gZ28gdG8g
U3RvcmFnZVByb2Nlc3MgaWYgbm8gc2VydmljZSB3b3JrZXIgaXMgcmVnaXN0ZXJlZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA1ZjI4YTgxNjBmNmYyNjQ2ZDBhY2M5NzE4MjNmYTgzOTY4M2Y0ZGU3Li40MjEwNWZhODA0
NWUwNzA5ZTJlMDAyZGUyNjI3NThhNzMzYjU0NGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBA
CisyMDE3LTExLTEzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAg
ICBNYXNzaXZlICJTZXJ2ZXItcHJvY2Vzcy10by1jb250ZXh0LXByb2Nlc3MiIGNvbm5lY3Rpb24g
b3ZlcmhhdWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzk1NTQKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisK
KyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2VuZFRv
Q29udGV4dFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246
Omluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6ZmlyZUluc3RhbGxFdmVudCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6ZmlyZUFjdGl2YXRlRXZlbnQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OnNldENvbnRl
eHRDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oOgorCisgICAgICAgICogU3RvcmFnZVByb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmNwcC4KKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlU2Vu
ZGVyRGVzdGluYXRpb25JRCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaXJlSW5zdGFs
bEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjpmaXJlQWN0aXZhdGVFdmVudCk6CisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJUeXBlcy5oLgorICAgICAgICAo
V2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6aXBjQ29ubmVjdGlvbiBj
b25zdCk6CisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW46IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluLgorCisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlUHJvY2Vzczo6Z2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmRpZEdldFdvcmtlckNvbnRl
eHRQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjp3
b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlUHJvY2Vzczo6Y3JlYXRlV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OnNlcnZpY2VXb3JrZXJD
b250ZXh0RmFpbGVkVG9TdGFydCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQ
cm9jZXNzOjpzZXJ2aWNlV29ya2VyQ29udGV4dFN0YXJ0ZWQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6ZGlkRmluaXNoU2VydmljZVdvcmtlckluc3RhbGwpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6ZGlkRmluaXNoU2Vydmlj
ZVdvcmtlckFjdGl2YXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJv
Y2Vzczo6c2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHMpOiBEZWxldGVkLgorICAgICAg
ICAqIFN0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmg6CisgICAgICAgICogU3RvcmFnZVBy
b2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBTdG9yYWdlUHJv
Y2Vzcy9TdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjplc3RhYmxpc2hTV1Nl
cnZlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVG9XZWJQcm9jZXNzQ29u
bmVjdGlvbjo6d29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uQ3JlYXRlZCk6CisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFs
bFNlcnZpY2VXb3JrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6c2VydmljZVdvcmtlclN0YXJ0ZWRXaXRoTWVzc2FnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpmaXJlSW5zdGFsbEV2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpcmVBY3RpdmF0
ZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OmRpZEZpbmlzaEluc3RhbGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6ZGlkRmluaXNoQWN0aXZhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50
cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorCiAyMDE3LTExLTEzICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBtYXRjaFJlZ2lzdHJhdGlvbiBkb2VzIG5vdCBu
ZWVkIHRvIGdvIHRvIFN0b3JhZ2VQcm9jZXNzIGlmIG5vIHNlcnZpY2Ugd29ya2VyIGlzIHJlZ2lz
dGVyZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaCBiL1Nv
dXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaAppbmRleCBlZjM3MTU0YTMxZTEwODUxOGVh
OTYzZGYzNTc0ZTU4MThiNzQzMjk1Li42N2RlZTAyNmI1ZTg3ZTQwN2E2MjJlZTYwZTY1MDhjMzUy
ZTZiOWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmgKKysr
IGIvU291cmNlL1dURi93dGYvT2JqZWN0SWRlbnRpZmllci5oCkBAIC03MCw3ICs3MCw3IEBAIHB1
YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGZyaWVu
ZCBPYmplY3RJZGVudGlmaWVyPFU+IG1ha2VPYmplY3RJZGVudGlmaWVyKHVpbnQ2NF90KTsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBmcmllbmQgT2JqZWN0SWRlbnRpZmllcjxVPiBnZW5lcmF0
ZU9iamVjdElkZW50aWZpZXIoKTsKICAgICBmcmllbmQgc3RydWN0IEhhc2hUcmFpdHM8T2JqZWN0
SWRlbnRpZmllcj47CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gZnJpZW5kIHN0cnVjdCBPYmpl
Y3RJZGVudGlmaWVySGFzaDsKIApAQCAtODMsMTIgKzgzLDE0IEBAIHByaXZhdGU6CiAgICAgfQog
CiAgICAgdWludDY0X3QgbV9pZGVudGlmaWVyIHsgMCB9OworICAgIHN0YXRpYyB1aW50NjRfdCBz
X2N1cnJlbnRJZGVudGlmaWVyOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIE9i
amVjdElkZW50aWZpZXI8VD4gbWFrZU9iamVjdElkZW50aWZpZXIodWludDY0X3QgaWRlbnRpZmll
cikKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHVpbnQ2NF90IE9iamVjdElkZW50aWZpZXI8VD46OnNf
Y3VycmVudElkZW50aWZpZXI7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBPYmplY3RJ
ZGVudGlmaWVyPFQ+IGdlbmVyYXRlT2JqZWN0SWRlbnRpZmllcigpCiB7Ci0gICAgQVNTRVJUKE9i
amVjdElkZW50aWZpZXI8VD46OmlzVmFsaWRJZGVudGlmaWVyKGlkZW50aWZpZXIpKTsKLSAgICBy
ZXR1cm4gT2JqZWN0SWRlbnRpZmllcjxUPiB7IGlkZW50aWZpZXIgfTsKKyAgICByZXR1cm4gT2Jq
ZWN0SWRlbnRpZmllcjxUPiB7ICsrT2JqZWN0SWRlbnRpZmllcjxUPjo6c19jdXJyZW50SWRlbnRp
ZmllciB9OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgT2JqZWN0SWRlbnRpZmll
ckhhc2ggewpAQCAtMTA2LDQgKzEwOCw0IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBE
ZWZhdWx0SGFzaDxPYmplY3RJZGVudGlmaWVyPFQ+PiB7CiB9IC8vIG5hbWVzcGFjZSBXVEYKIAog
dXNpbmcgV1RGOjpPYmplY3RJZGVudGlmaWVyOwotdXNpbmcgV1RGOjptYWtlT2JqZWN0SWRlbnRp
ZmllcjsKK3VzaW5nIFdURjo6Z2VuZXJhdGVPYmplY3RJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApp
bmRleCA5ZmRkZjVjOTk3OTZjMDU3NzViMzI0YTdjMmE4MTA4M2NiZTZkZjE2Li5hYzlmNmU3MjZk
MzU4ZTNhZGYyM2Y3MjUyZDIxOWYxNjk4YTI2YTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjE5NCw2
ICsyMTk0LDcgQEAgd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmNwcAogd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdp
c3RyYXRpb24uY3BwCit3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCiAK
IHhtbC9ET01QYXJzZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWRhNmUwMmI0ZTIxN2MxNmQ4MGJhZjUwYjQxZDVkNTc1
Y2E3NDAxZC4uODkyM2RjYTVhNGUwZTQ2YzdiYmNjZDdhNjY3OTdkNmJkM2QzNzk5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTM1NSw2ICsxMzU1LDcgQEAKIAkJNTE4MkMyNTgxRjMxNDNDRDAwNTlCQTdDIC8qIEpTU2Vydmlj
ZVdvcmtlckNvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE4MkMyNTQxRjMxNDI1MDAwNTlCQTdDIC8qIEpTU2VydmljZVdvcmtlckNvbnRh
aW5lci5oICovOyB9OwogCQk1MTgyQzI1QTFGMzE0M0NEMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxODJDMjREMUYzMTQyNTAwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS5oICovOyB9OwogCQk1MTgyQzI1QzFGMzE0M0NEMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTgyQzI1MDFGMzE0MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uLmggKi87IH07CisJCTUxODU0MzBCMUZCNjc4NDUwMDQ3OEY5NSAvKiBTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxODU0MzA5MUZCNjc4M0UwMDQ3OEY5NSAvKiBTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MTg1RkM3NTFCQjRDNEU4MDAxMjg5OEYgLyogRE9NV2luZG93SW5kZXhlZERhdGFiYXNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQ3MTk2
RDE4MTEwNkRGMDAxNkRDNTEgLyogRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmggKi87IH07CiAJ
CTUxODVGQzdCMUJCNEM0RTgwMDEyODk4RiAvKiBJREJDdXJzb3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjQ1QjQxMUI5Rjg4OUIwMEY3ODlDRSAv
KiBJREJDdXJzb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1MTg1RkM3RTFCQjRDNEU4MDAxMjg5OEYgLyogSURCQ3Vyc29yV2l0aFZhbHVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTY0NUI0MzFC
OUY4ODlCMDBGNzg5Q0UgLyogSURCQ3Vyc29yV2l0aFZhbHVlLmggKi87IH07CkBAIC0xNDI2LDcg
KzE0MjcsNyBAQAogCQk1MUU2ODIxMDE2Mzg3MzAyMDAzQkJGM0MgLyogTG9hZGVyU3RyYXRlZ3ku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTY4MjBG
MTYzODczMDIwMDNCQkYzQyAvKiBMb2FkZXJTdHJhdGVneS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRUU3QjM4MUFBNTBCMDUwMEY5MkIyMSAv
KiBSZXNvdXJjZUxvYWRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUVFN0IzNzFBQTUwQjA1MDBGOTJCMjEgLyogUmVzb3VyY2VMb2FkSW5mby5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRUVB
QTc0MUJFRkZBQjEwMDIxODAwOCAvKiBJbmRleFZhbHVlRW50cnkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRUVBQTcyMUJFRkZBNzkwMDIxODAwOCAv
KiBJbmRleFZhbHVlRW50cnkuaCAqLzsgfTsKLQkJNTFGMTc0RkUxRjM1ODk5MjAwQzc0OTUwIC8q
IFdvcmtlclR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxRjE3NEZDMUYzNTg5ODgwMEM3NDk1MCAvKiBXb3JrZXJUeXBlLmggKi87IH07CisJCTUx
RjE3NEZFMUYzNTg5OTIwMEM3NDk1MCAvKiBXb3JrZXJUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYxNzRGQzFGMzU4OTg4MDBDNzQ5NTAgLyog
V29ya2VyVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUxRjE3NTAzMUYzNThCM0IwMEM3NDk1MCAvKiBKU1NlcnZpY2VXb3JrZXJVcGRhdGVW
aWFDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFGMTc1MDExRjM1OEIzNjAwQzc0OTUwIC8qIEpTU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hl
LmggKi87IH07CiAJCTUxRjE3NTA2MUYzNThCRjcwMEM3NDk1MCAvKiBKU1dvcmtlclR5cGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjE3NTA1MUYz
NThCREUwMEM3NDk1MCAvKiBKU1dvcmtlclR5cGUuaCAqLzsgfTsKIAkJNTFGMTc1NUQxRjNFQkM4
MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjE3NTVBMUYzRUJDMEMwMEM3NDk1MCAvKiBTZXJ2aWNlV29y
a2VyLmggKi87IH07CkBAIC03NzExLDYgKzc3MTIsOCBAQAogCQk1MTgyQzI1MjFGMzE0MjUwMDA1
OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2VydmljZVdvcmtl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTgyQzI1MzFGMzE0MjUwMDA1OUJB
N0MgLyogSlNTZXJ2aWNlV29ya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2VydmljZVdv
cmtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODJDMjU0MUYzMTQyNTAw
MDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUx
ODU0MzA5MUZCNjc4M0UwMDQ3OEY5NSAvKiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxODU0MzBBMUZCNjc4M0YwMDQ3
OEY5NSAvKiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4NUZDQkMxQkI1Q0I3NzAwMTI4OThGIC8qIElE
QkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MTg1RkNCRDFCQjVDQjc3MDAxMjg5OEYgLyogSURCQ29ubmVjdGlvblRvU2VydmVyRGVs
ZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQ29ubmVjdGlvblRv
U2VydmVyRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4ODY0REUx
QkJBRjMwRjAwRTU0MEM5IC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVuaXF1ZUlEQkRhdGFiYXNlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MTQyLDYgKzE3MTQ1LDggQEAKIAkJCQk4MzExQzAwMjFGQUEy
RTg5MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5oICovLAogCQkJCTUxRjY0NTk1MUY0QTY4
NjEwMEI1NERFRCAvKiBTV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAgKi8sCiAJCQkJNTFGNjQ1OTQx
RjRBNjg0RjAwQjU0REVEIC8qIFNXU2VydmVyUmVnaXN0cmF0aW9uLmggKi8sCisJCQkJNTE4NTQz
MEExRkI2NzgzRjAwNDc4Rjk1IC8qIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgKi8s
CisJCQkJNTE4NTQzMDkxRkI2NzgzRTAwNDc4Rjk1IC8qIFNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oICovLAogCQkJCTUxN0E1MzQzMUY1MEMxNjEwMERDREMwQSAvKiBTV1NlcnZlcldvcmtl
ci5jcHAgKi8sCiAJCQkJNTE3QTUzNDIxRjUwQzE2MTAwRENEQzBBIC8qIFNXU2VydmVyV29ya2Vy
LmggKi8sCiAJCQkpOwpAQCAtMTczMjcsMTI0ICsxNzMzMiwxMjQgQEAKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNTM4RUM3RjMxRjk2QUE1QjAwNEQyMkE4IC8qIFVu
aWZpZWRTb3VyY2UxLW1tLm1tICovLAotCQkJCTUzOEVDN0Y4MUY5NkFBNjkwMDREMjJBOCAvKiBV
bmlmaWVkU291cmNlMi1tbS5tbSAqLywKLQkJCQk1MzhFQzdFRDFGOTZBQTU1MDA0RDIyQTggLyog
VW5pZmllZFNvdXJjZTMtbW0ubW0gKi8sCi0JCQkJREU1Rjg1NDkxRkExQUJCRDAwNkRCNjNBIC8q
IFVuaWZpZWRTb3VyY2U0LW1tLm1tICovLAotCQkJCURFNUY4NTY1MUZBMUFCRDYwMDZEQjYzQSAv
KiBVbmlmaWVkU291cmNlNS1tbS5tbSAqLywKLQkJCQlERTVGODU2QjFGQTFBQkRCMDA2REI2M0Eg
LyogVW5pZmllZFNvdXJjZTYtbW0ubW0gKi8sCi0JCQkJREU1Rjg1NUYxRkExQUJEMTAwNkRCNjNB
IC8qIFVuaWZpZWRTb3VyY2U3LW1tLm1tICovLAotCQkJCURFNUY4NTNEMUZBMUFCQjIwMDZEQjYz
QSAvKiBVbmlmaWVkU291cmNlOC1tbS5tbSAqLywKLQkJCQlERTVGODU1NDFGQTFBQkM3MDA2REI2
M0EgLyogVW5pZmllZFNvdXJjZTktbW0ubW0gKi8sCi0JCQkJREU1Rjg1NjMxRkExQUJENTAwNkRC
NjNBIC8qIFVuaWZpZWRTb3VyY2UxMC1tbS5tbSAqLywKLQkJCQlERTVGODU2MTFGQTFBQkQzMDA2
REI2M0EgLyogVW5pZmllZFNvdXJjZTExLW1tLm1tICovLAotCQkJCURFNUY4NTY0MUZBMUFCRDUw
MDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMTItbW0ubW0gKi8sCi0JCQkJREU1Rjg1NkExRkExQUJE
QjAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxMy1tbS5tbSAqLywKLQkJCQlERTVGODU0RTFGQTFB
QkMyMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTE0LW1tLm1tICovLAotCQkJCURFNUY4NTNFMUZB
MUFCQjMwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMTUtbW0ubW0gKi8sCi0JCQkJREU1Rjg1NUUx
RkExQUJEMDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxNi1tbS5tbSAqLywKLQkJCQlERTVGODU0
QTFGQTFBQkJFMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTE3LW1tLm1tICovLAotCQkJCURFNUY4
NTUwMUZBMUFCQzMwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMTgtbW0ubW0gKi8sCi0JCQkJREU1
Rjg1NTMxRkExQUJDNjAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxOS1tbS5tbSAqLywKLQkJCQlE
RTVGODU1MjFGQTFBQkM1MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTIwLW1tLm1tICovLAotCQkJ
CURFNUY4NTVBMUZBMUFCQ0QwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMjEtbW0ubW0gKi8sCi0J
CQkJREU1Rjg1NEQxRkExQUJDMTAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UyMi1tbS5tbSAqLywK
LQkJCQlERTVGODU0MTFGQTFBQkI2MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTIzLW1tLm1tICov
LAotCQkJCURFNUY4NTQ2MUZBMUFCQkIwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMjQtbW0ubW0g
Ki8sCi0JCQkJREU1Rjg1NDcxRkExQUJCQjAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UyNS1tbS5t
bSAqLywKLQkJCQlERTVGODU1RDFGQTFBQkNGMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTI2LW1t
Lm1tICovLAotCQkJCURFNUY4NTY5MUZBMUFCREEwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMjct
bW0ubW0gKi8sCi0JCQkJREU1Rjg1M0YxRkExQUJCNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2Uy
OC1tbS5tbSAqLywKLQkJCQlERTVGODU2ODFGQTFBQkQ5MDA2REI2M0EgLyogVW5pZmllZFNvdXJj
ZTI5LW1tLm1tICovLAotCQkJCURFNUY4NTQyMUZBMUFCQjcwMDZEQjYzQSAvKiBVbmlmaWVkU291
cmNlMzAtbW0ubW0gKi8sCi0JCQkJREU1Rjg1NTExRkExQUJDNDAwNkRCNjNBIC8qIFVuaWZpZWRT
b3VyY2UzMS1tbS5tbSAqLywKLQkJCQlERTVGODU2MDFGQTFBQkQyMDA2REI2M0EgLyogVW5pZmll
ZFNvdXJjZTMyLW1tLm1tICovLAotCQkJCURFNUY4NTVCMUZBMUFCQ0UwMDZEQjYzQSAvKiBVbmlm
aWVkU291cmNlMzMtbW0ubW0gKi8sCi0JCQkJREU1Rjg1NTcxRkExQUJDQTAwNkRCNjNBIC8qIFVu
aWZpZWRTb3VyY2UzNC1tbS5tbSAqLywKLQkJCQlERTVGODU0MDFGQTFBQkI1MDA2REI2M0EgLyog
VW5pZmllZFNvdXJjZTM1LW1tLm1tICovLAotCQkJCURFNUY4NTU1MUZBMUFCQzgwMDZEQjYzQSAv
KiBVbmlmaWVkU291cmNlMzYtbW0ubW0gKi8sCi0JCQkJREU1Rjg1NDUxRkExQUJCQTAwNkRCNjNB
IC8qIFVuaWZpZWRTb3VyY2UzNy1tbS5tbSAqLywKLQkJCQlERTVGODU1QzFGQTFBQkNFMDA2REI2
M0EgLyogVW5pZmllZFNvdXJjZTM4LW1tLm1tICovLAotCQkJCURFNUY4NTU5MUZBMUFCQ0MwMDZE
QjYzQSAvKiBVbmlmaWVkU291cmNlMzktbW0ubW0gKi8sCi0JCQkJREU1Rjg1NTYxRkExQUJDOTAw
NkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0MC1tbS5tbSAqLywKLQkJCQlERTVGODU2NjFGQTFBQkQ3
MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQxLW1tLm1tICovLAotCQkJCURFNUY4NTRGMUZBMUFC
QzMwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDItbW0ubW0gKi8sCi0JCQkJREU1Rjg1NDgxRkEx
QUJCQzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0My1tbS5tbSAqLywKLQkJCQlERTVGODU0MzFG
QTFBQkI4MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ0LW1tLm1tICovLAotCQkJCURFNUY4NTU4
MUZBMUFCQ0IwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDUtbW0ubW0gKi8sCi0JCQkJREU1Rjg1
NDQxRkExQUJCOTAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0Ni1tbS5tbSAqLywKLQkJCQlERTVG
ODU2MjFGQTFBQkQ0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ3LW1tLm1tICovLAotCQkJCURF
NUY4NTY3MUZBMUFCRDgwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDgtbW0ubW0gKi8sCi0JCQkJ
REU1Rjg1NEIxRkExQUJCRjAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0OS1tbS5tbSAqLywKLQkJ
CQlERTVGODU0QzFGQTFBQkMwMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTUwLW1tLm1tICovLAot
CQkJCURFNUY4NjM2MUZBMkFGMDQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTEtbW0ubW0gKi8s
Ci0JCQkJREU1Rjg2MzcxRkEyQUYwNTAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1Mi1tbS5tbSAq
LywKLQkJCQlERTVGODYzNTFGQTJBRjAzMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTUzLW1tLm1t
ICovLAotCQkJCURFNUY4NjMzMUZBMkFGMDAwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTQtbW0u
bW0gKi8sCi0JCQkJREU1Rjg2M0IxRkEyQUYwODAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1NS1t
bS5tbSAqLywKLQkJCQlERTVGODYzNDFGQTJBRjAxMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTU2
LW1tLm1tICovLAotCQkJCURFNUY4NjM4MUZBMkFGMDYwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNl
NTctbW0ubW0gKi8sCi0JCQkJREU1Rjg2MzkxRkEyQUYwNzAwNkRCNjNBIC8qIFVuaWZpZWRTb3Vy
Y2U1OC1tbS5tbSAqLywKLQkJCQlERTVGODYzMjFGQTJBRUZGMDA2REI2M0EgLyogVW5pZmllZFNv
dXJjZTU5LW1tLm1tICovLAotCQkJCURFNUY4NjNBMUZBMkFGMDcwMDZEQjYzQSAvKiBVbmlmaWVk
U291cmNlNjAtbW0ubW0gKi8sCiAJCQkJNTM4RUM3RkExRjk2QUE3MDAwNEQyMkE4IC8qIFVuaWZp
ZWRTb3VyY2UxLmNwcCAqLywKKwkJCQk1MzhFQzdGODFGOTZBQTY5MDA0RDIyQTggLyogVW5pZmll
ZFNvdXJjZTItbW0ubW0gKi8sCiAJCQkJNTM4RUM3RUUxRjk2QUE1NjAwNEQyMkE4IC8qIFVuaWZp
ZWRTb3VyY2UyLmNwcCAqLywKKwkJCQk1MzhFQzdFRDFGOTZBQTU1MDA0RDIyQTggLyogVW5pZmll
ZFNvdXJjZTMtbW0ubW0gKi8sCiAJCQkJNTM4RUM3RUMxRjk2QUE1NDAwNEQyMkE4IC8qIFVuaWZp
ZWRTb3VyY2UzLmNwcCAqLywKKwkJCQlERTVGODU0OTFGQTFBQkJEMDA2REI2M0EgLyogVW5pZmll
ZFNvdXJjZTQtbW0ubW0gKi8sCiAJCQkJNTM4RUM3RUYxRjk2QUE1NzAwNEQyMkE4IC8qIFVuaWZp
ZWRTb3VyY2U0LmNwcCAqLywKKwkJCQlERTVGODU2NTFGQTFBQkQ2MDA2REI2M0EgLyogVW5pZmll
ZFNvdXJjZTUtbW0ubW0gKi8sCiAJCQkJNTM4RUM3RjAxRjk2QUE1ODAwNEQyMkE4IC8qIFVuaWZp
ZWRTb3VyY2U1LmNwcCAqLywKKwkJCQlERTVGODU2QjFGQTFBQkRCMDA2REI2M0EgLyogVW5pZmll
ZFNvdXJjZTYtbW0ubW0gKi8sCiAJCQkJNTM4RUM3RUIxRjk2QUE1MzAwNEQyMkE4IC8qIFVuaWZp
ZWRTb3VyY2U2LmNwcCAqLywKKwkJCQlERTVGODU1RjFGQTFBQkQxMDA2REI2M0EgLyogVW5pZmll
ZFNvdXJjZTctbW0ubW0gKi8sCiAJCQkJNTM4RUM3RjExRjk2QUE1OTAwNEQyMkE4IC8qIFVuaWZp
ZWRTb3VyY2U3LmNwcCAqLywKKwkJCQlERTVGODUzRDFGQTFBQkIyMDA2REI2M0EgLyogVW5pZmll
ZFNvdXJjZTgtbW0ubW0gKi8sCiAJCQkJNTM4RUM3RjIxRjk2QUE1QTAwNEQyMkE4IC8qIFVuaWZp
ZWRTb3VyY2U4LmNwcCAqLywKKwkJCQlERTVGODU1NDFGQTFBQkM3MDA2REI2M0EgLyogVW5pZmll
ZFNvdXJjZTktbW0ubW0gKi8sCiAJCQkJNTM4RUM3RkUxRjk2QUE3NjAwNEQyMkE4IC8qIFVuaWZp
ZWRTb3VyY2U5LmNwcCAqLywKKwkJCQlERTVGODU2MzFGQTFBQkQ1MDA2REI2M0EgLyogVW5pZmll
ZFNvdXJjZTEwLW1tLm1tICovLAogCQkJCTUzOEVDN0Y1MUY5NkFBNUUwMDREMjJBOCAvKiBVbmlm
aWVkU291cmNlMTAuY3BwICovLAorCQkJCURFNUY4NTYxMUZBMUFCRDMwMDZEQjYzQSAvKiBVbmlm
aWVkU291cmNlMTEtbW0ubW0gKi8sCiAJCQkJNTM4RUM3RjQxRjk2QUE1RDAwNEQyMkE4IC8qIFVu
aWZpZWRTb3VyY2UxMS5jcHAgKi8sCisJCQkJREU1Rjg1NjQxRkExQUJENTAwNkRCNjNBIC8qIFVu
aWZpZWRTb3VyY2UxMi1tbS5tbSAqLywKIAkJCQk1MzhFQzdGNjFGOTZBQTVGMDA0RDIyQTggLyog
VW5pZmllZFNvdXJjZTEyLmNwcCAqLywKKwkJCQlERTVGODU2QTFGQTFBQkRCMDA2REI2M0EgLyog
VW5pZmllZFNvdXJjZTEzLW1tLm1tICovLAogCQkJCTUzOEVDN0ZEMUY5NkFBNzQwMDREMjJBOCAv
KiBVbmlmaWVkU291cmNlMTMuY3BwICovLAorCQkJCURFNUY4NTRFMUZBMUFCQzIwMDZEQjYzQSAv
KiBVbmlmaWVkU291cmNlMTQtbW0ubW0gKi8sCiAJCQkJNTM4RUM3RkMxRjk2QUE3MzAwNEQyMkE4
IC8qIFVuaWZpZWRTb3VyY2UxNC5jcHAgKi8sCisJCQkJREU1Rjg1M0UxRkExQUJCMzAwNkRCNjNB
IC8qIFVuaWZpZWRTb3VyY2UxNS1tbS5tbSAqLywKIAkJCQk1MzhFQzdGRjFGOTZBQTc3MDA0RDIy
QTggLyogVW5pZmllZFNvdXJjZTE1LmNwcCAqLywKKwkJCQlERTVGODU1RTFGQTFBQkQwMDA2REI2
M0EgLyogVW5pZmllZFNvdXJjZTE2LW1tLm1tICovLAogCQkJCTUzOEVDN0Y3MUY5NkFBNjAwMDRE
MjJBOCAvKiBVbmlmaWVkU291cmNlMTYuY3BwICovLAorCQkJCURFNUY4NTRBMUZBMUFCQkUwMDZE
QjYzQSAvKiBVbmlmaWVkU291cmNlMTctbW0ubW0gKi8sCiAJCQkJNTM4RUM4MDExRjk2QUE3QTAw
NEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UxNy5jcHAgKi8sCisJCQkJREU1Rjg1NTAxRkExQUJDMzAw
NkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxOC1tbS5tbSAqLywKIAkJCQk1MzhFQzdGQjFGOTZBQTcy
MDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTE4LmNwcCAqLywKKwkJCQlERTVGODU1MzFGQTFBQkM2
MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTE5LW1tLm1tICovLAogCQkJCTUzOEVDN0Y5MUY5NkFB
NkUwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMTkuY3BwICovLAorCQkJCURFNUY4NTUyMUZBMUFC
QzUwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMjAtbW0ubW0gKi8sCiAJCQkJNTM4RUM4MDAxRjk2
QUE3ODAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UyMC5jcHAgKi8sCisJCQkJREU1Rjg1NUExRkEx
QUJDRDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UyMS1tbS5tbSAqLywKIAkJCQk1MzhFQzgzNTFG
OTkzRjBEMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTIxLmNwcCAqLywKKwkJCQlERTVGODU0RDFG
QTFBQkMxMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTIyLW1tLm1tICovLAogCQkJCTUzOEVDODRB
MUY5OTNGMTgwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMjIuY3BwICovLAorCQkJCURFNUY4NTQx
MUZBMUFCQjYwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMjMtbW0ubW0gKi8sCiAJCQkJNTM4RUM4
MkExRjk5M0YwNzAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UyMy5jcHAgKi8sCisJCQkJREU1Rjg1
NDYxRkExQUJCQjAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UyNC1tbS5tbSAqLywKIAkJCQk1MzhF
QzgzRjFGOTkzRjEyMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTI0LmNwcCAqLywKKwkJCQlERTVG
ODU0NzFGQTFBQkJCMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTI1LW1tLm1tICovLAogCQkJCTUz
OEVDODNBMUY5OTNGMTAwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMjUuY3BwICovLAorCQkJCURF
NUY4NTVEMUZBMUFCQ0YwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMjYtbW0ubW0gKi8sCiAJCQkJ
NTM4RUM4NEMxRjk5M0YxOTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UyNi5jcHAgKi8sCisJCQkJ
REU1Rjg1NjkxRkExQUJEQTAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UyNy1tbS5tbSAqLywKIAkJ
CQk1MzhFQzg1RjFGOTkzRjIzMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTI3LmNwcCAqLywKKwkJ
CQlERTVGODUzRjFGQTFBQkI0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTI4LW1tLm1tICovLAog
CQkJCTUzOEVDODRCMUY5OTNGMTgwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMjguY3BwICovLAor
CQkJCURFNUY4NTY4MUZBMUFCRDkwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMjktbW0ubW0gKi8s
CiAJCQkJNTM4RUM4NTUxRjk5M0YxRTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UyOS5jcHAgKi8s
CisJCQkJREU1Rjg1NDIxRkExQUJCNzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzMC1tbS5tbSAq
LywKIAkJCQk1MzhFQzg3NjFGOTkzRjJGMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTMwLmNwcCAq
LywKKwkJCQlERTVGODU1MTFGQTFBQkM0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTMxLW1tLm1t
ICovLAogCQkJCTUzOEVDODVCMUY5OTNGMjEwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMzEuY3Bw
ICovLAorCQkJCURFNUY4NTYwMUZBMUFCRDIwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMzItbW0u
bW0gKi8sCiAJCQkJNTM4RUM4MkIxRjk5M0YwODAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UzMi5j
cHAgKi8sCisJCQkJREU1Rjg1NUIxRkExQUJDRTAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzMy1t
bS5tbSAqLywKIAkJCQk1MzhFQzg3RjFGOTkzRjM0MDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTMz
LmNwcCAqLywKKwkJCQlERTVGODU1NzFGQTFBQkNBMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTM0
LW1tLm1tICovLAogCQkJCTUzOEVDODU3MUY5OTNGMUYwMDREMjJBOCAvKiBVbmlmaWVkU291cmNl
MzQuY3BwICovLAorCQkJCURFNUY4NTQwMUZBMUFCQjUwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNl
MzUtbW0ubW0gKi8sCiAJCQkJNTM4RUM4N0ExRjk5M0YzMTAwNEQyMkE4IC8qIFVuaWZpZWRTb3Vy
Y2UzNS5jcHAgKi8sCisJCQkJREU1Rjg1NTUxRkExQUJDODAwNkRCNjNBIC8qIFVuaWZpZWRTb3Vy
Y2UzNi1tbS5tbSAqLywKIAkJCQk1MzhFQzg2MDFGOTkzRjIzMDA0RDIyQTggLyogVW5pZmllZFNv
dXJjZTM2LmNwcCAqLywKKwkJCQlERTVGODU0NTFGQTFBQkJBMDA2REI2M0EgLyogVW5pZmllZFNv
dXJjZTM3LW1tLm1tICovLAogCQkJCTUzOEVDODMyMUY5OTNGMEMwMDREMjJBOCAvKiBVbmlmaWVk
U291cmNlMzcuY3BwICovLAorCQkJCURFNUY4NTVDMUZBMUFCQ0UwMDZEQjYzQSAvKiBVbmlmaWVk
U291cmNlMzgtbW0ubW0gKi8sCiAJCQkJNTM4RUM4N0IxRjk5M0YzMjAwNEQyMkE4IC8qIFVuaWZp
ZWRTb3VyY2UzOC5jcHAgKi8sCisJCQkJREU1Rjg1NTkxRkExQUJDQzAwNkRCNjNBIC8qIFVuaWZp
ZWRTb3VyY2UzOS1tbS5tbSAqLywKIAkJCQk1MzhFQzg3QzFGOTkzRjMyMDA0RDIyQTggLyogVW5p
ZmllZFNvdXJjZTM5LmNwcCAqLywKKwkJCQlERTVGODU1NjFGQTFBQkM5MDA2REI2M0EgLyogVW5p
ZmllZFNvdXJjZTQwLW1tLm1tICovLAogCQkJCTUzOEVDODQ5MUY5OTNGMTcwMDREMjJBOCAvKiBV
bmlmaWVkU291cmNlNDAuY3BwICovLAorCQkJCURFNUY4NTY2MUZBMUFCRDcwMDZEQjYzQSAvKiBV
bmlmaWVkU291cmNlNDEtbW0ubW0gKi8sCiAJCQkJNTM4RUM4NEUxRjk5M0YxQTAwNEQyMkE4IC8q
IFVuaWZpZWRTb3VyY2U0MS5jcHAgKi8sCisJCQkJREU1Rjg1NEYxRkExQUJDMzAwNkRCNjNBIC8q
IFVuaWZpZWRTb3VyY2U0Mi1tbS5tbSAqLywKIAkJCQk1MzhFQzgzQjFGOTkzRjEwMDA0RDIyQTgg
LyogVW5pZmllZFNvdXJjZTQyLmNwcCAqLywKKwkJCQlERTVGODU0ODFGQTFBQkJDMDA2REI2M0Eg
LyogVW5pZmllZFNvdXJjZTQzLW1tLm1tICovLAogCQkJCTUzOEVDODUyMUY5OTNGMUMwMDREMjJB
OCAvKiBVbmlmaWVkU291cmNlNDMuY3BwICovLAorCQkJCURFNUY4NTQzMUZBMUFCQjgwMDZEQjYz
QSAvKiBVbmlmaWVkU291cmNlNDQtbW0ubW0gKi8sCiAJCQkJNTM4RUM4NkExRjk5M0YyOTAwNEQy
MkE4IC8qIFVuaWZpZWRTb3VyY2U0NC5jcHAgKi8sCisJCQkJREU1Rjg1NTgxRkExQUJDQjAwNkRC
NjNBIC8qIFVuaWZpZWRTb3VyY2U0NS1tbS5tbSAqLywKIAkJCQk1MzhFQzgzQzFGOTkzRjExMDA0
RDIyQTggLyogVW5pZmllZFNvdXJjZTQ1LmNwcCAqLywKKwkJCQlERTVGODU0NDFGQTFBQkI5MDA2
REI2M0EgLyogVW5pZmllZFNvdXJjZTQ2LW1tLm1tICovLAogCQkJCTUzOEVDODc3MUY5OTNGMzAw
MDREMjJBOCAvKiBVbmlmaWVkU291cmNlNDYuY3BwICovLAorCQkJCURFNUY4NTYyMUZBMUFCRDQw
MDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDctbW0ubW0gKi8sCiAJCQkJNTM4RUM4NjgxRjk5M0Yy
ODAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U0Ny5jcHAgKi8sCisJCQkJREU1Rjg1NjcxRkExQUJE
ODAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0OC1tbS5tbSAqLywKIAkJCQk1MzhFQzg0MzFGOTkz
RjE0MDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTQ4LmNwcCAqLywKKwkJCQlERTVGODU0QjFGQTFB
QkJGMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ5LW1tLm1tICovLAogCQkJCTUzOEVDODdEMUY5
OTNGMzMwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNDkuY3BwICovLAorCQkJCURFNUY4NTRDMUZB
MUFCQzAwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTAtbW0ubW0gKi8sCiAJCQkJNTM4RUM4Mjcx
Rjk5M0YwNjAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U1MC5jcHAgKi8sCisJCQkJREU1Rjg2MzYx
RkEyQUYwNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1MS1tbS5tbSAqLywKIAkJCQk1MzhFQzg0
NzFGOTkzRjE2MDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTUxLmNwcCAqLywKKwkJCQlERTVGODYz
NzFGQTJBRjA1MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTUyLW1tLm1tICovLAogCQkJCTUzOEVD
ODgwMUY5OTNGMzQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNTIuY3BwICovLAorCQkJCURFNUY4
NjM1MUZBMkFGMDMwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTMtbW0ubW0gKi8sCiAJCQkJNTM4
RUM4MkMxRjk5M0YwOTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U1My5jcHAgKi8sCisJCQkJREU1
Rjg2MzMxRkEyQUYwMDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1NC1tbS5tbSAqLywKIAkJCQk1
MzhFQzg2OTFGOTkzRjI4MDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTU0LmNwcCAqLywKKwkJCQlE
RTVGODYzQjFGQTJBRjA4MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTU1LW1tLm1tICovLAogCQkJ
CTUzOEVDODZDMUY5OTNGMkEwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNTUuY3BwICovLAorCQkJ
CURFNUY4NjM0MUZBMkFGMDEwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTYtbW0ubW0gKi8sCiAJ
CQkJNTM4RUM4ODUxRjk5M0YzQTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U1Ni5jcHAgKi8sCisJ
CQkJREU1Rjg2MzgxRkEyQUYwNjAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1Ny1tbS5tbSAqLywK
IAkJCQk1MzhFQzg3ODFGOTkzRjMwMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTU3LmNwcCAqLywK
KwkJCQlERTVGODYzOTFGQTJBRjA3MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTU4LW1tLm1tICov
LAogCQkJCTUzOEVDODJGMUY5OTNGMEEwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNTguY3BwICov
LAorCQkJCURFNUY4NjMyMUZBMkFFRkYwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTktbW0ubW0g
Ki8sCiAJCQkJNTM4RUM4NkIxRjk5M0YyOTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U1OS5jcHAg
Ki8sCisJCQkJREU1Rjg2M0ExRkEyQUYwNzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U2MC1tbS5t
bSAqLywKIAkJCQk1MzhFQzg3OTFGOTkzRjMxMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTYwLmNw
cCAqLywKIAkJCQk1MzhFQzg3RTFGOTkzRjMzMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTYxLmNw
cCAqLywKIAkJCQk1MzhFQzg1QTFGOTkzRjIwMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTYyLmNw
cCAqLywKQEAgLTI5NDE4LDYgKzI5NDIzLDcgQEAKIAkJCQk1MTdBNTJGMDFGNDc1MzVCMDBEQ0RD
MEEgLyogU1dTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMTFDMDAzMUZBQTJFOTUwMEUz
QzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY2NDU5NzFG
NEE2ODZGMDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCBpbiBIZWFkZXJzICovLAor
CQkJCTUxODU0MzBCMUZCNjc4NDUwMDQ3OEY5NSAvKiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0E1MzQ2MUY1MEMxN0YwMERDREMwQSAvKiBTV1Nl
cnZlcldvcmtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE4MDgxMTcxNkZDRjlDQjAwQjgwRDA3
IC8qIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjAzQzA3
NDE4ODQ2OTVFMDBBNUY4Q0EgLyogU3lzdGVtTWVtb3J5LmggaW4gSGVhZGVycyAqLywKQEAgLTMw
MzY4LDEyNCArMzAzNzQsMTI0IEBACiAJCQkJQkU4OEUwQzExNzE1Q0UyNjAwNjU4RDk4IC8qIFRy
YWNrTGlzdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDczQkRDMDUxRjY4NDM2MTAwRUUz
NEVEIC8qIFRyYWNrUHJpdmF0ZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4MDMx
Rjk2QUY4MTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UxLW1tLm1tIGluIFNvdXJjZXMgKi8sCi0J
CQkJNTM4RUM4MDUxRjk2QUY4MTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UyLW1tLm1tIGluIFNv
dXJjZXMgKi8sCi0JCQkJNTM4RUM4MDcxRjk2QUY4MTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2Uz
LW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1NkMxRkExQUJGMzAwNkRCNjNBIC8qIFVu
aWZpZWRTb3VyY2U0LW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1NkQxRkExQUJGMzAw
NkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1LW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1
NkUxRkExQUJGMzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U2LW1tLm1tIGluIFNvdXJjZXMgKi8s
Ci0JCQkJREU1Rjg1NkYxRkExQUJGMzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U3LW1tLm1tIGlu
IFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1NzAxRkExQUJGMzAwNkRCNjNBIC8qIFVuaWZpZWRTb3Vy
Y2U4LW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1NzExRkExQUJGMzAwNkRCNjNBIC8q
IFVuaWZpZWRTb3VyY2U5LW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1NzIxRkExQUJG
MzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxMC1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCURF
NUY4NTczMUZBMUFCRjMwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMTEtbW0ubW0gaW4gU291cmNl
cyAqLywKLQkJCQlERTVGODU3NDFGQTFBQkYzMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTEyLW1t
Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1NzUxRkExQUJGMzAwNkRCNjNBIC8qIFVuaWZp
ZWRTb3VyY2UxMy1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCURFNUY4NTc2MUZBMUFCRjMwMDZE
QjYzQSAvKiBVbmlmaWVkU291cmNlMTQtbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVGODU3
NzFGQTFBQkYzMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTE1LW1tLm1tIGluIFNvdXJjZXMgKi8s
Ci0JCQkJREU1Rjg1NzgxRkExQUJGMzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxNi1tbS5tbSBp
biBTb3VyY2VzICovLAotCQkJCURFNUY4NTc5MUZBMUFCRjQwMDZEQjYzQSAvKiBVbmlmaWVkU291
cmNlMTctbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVGODU3QTFGQTFBQkY0MDA2REI2M0Eg
LyogVW5pZmllZFNvdXJjZTE4LW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1N0IxRkEx
QUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxOS1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJ
CURFNUY4NTdDMUZBMUFCRjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMjAtbW0ubW0gaW4gU291
cmNlcyAqLywKLQkJCQlERTVGODU3RDFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTIx
LW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1N0UxRkExQUJGNDAwNkRCNjNBIC8qIFVu
aWZpZWRTb3VyY2UyMi1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCURFNUY4NTdGMUZBMUFCRjQw
MDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMjMtbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVG
ODU4MDFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTI0LW1tLm1tIGluIFNvdXJjZXMg
Ki8sCi0JCQkJREU1Rjg1ODExRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UyNS1tbS5t
bSBpbiBTb3VyY2VzICovLAotCQkJCURFNUY4NTgyMUZBMUFCRjQwMDZEQjYzQSAvKiBVbmlmaWVk
U291cmNlMjYtbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVGODU4MzFGQTFBQkY0MDA2REI2
M0EgLyogVW5pZmllZFNvdXJjZTI3LW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1ODQx
RkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UyOC1tbS5tbSBpbiBTb3VyY2VzICovLAot
CQkJCURFNUY4NTg1MUZBMUFCRjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMjktbW0ubW0gaW4g
U291cmNlcyAqLywKLQkJCQlERTVGODU4NjFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJj
ZTMwLW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1ODcxRkExQUJGNDAwNkRCNjNBIC8q
IFVuaWZpZWRTb3VyY2UzMS1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCURFNUY4NTg4MUZBMUFC
RjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMzItbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlE
RTVGODU4OTFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTMzLW1tLm1tIGluIFNvdXJj
ZXMgKi8sCi0JCQkJREU1Rjg1OEExRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzNC1t
bS5tbSBpbiBTb3VyY2VzICovLAotCQkJCURFNUY4NThCMUZBMUFCRjQwMDZEQjYzQSAvKiBVbmlm
aWVkU291cmNlMzUtbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVGODU4QzFGQTFBQkY0MDA2
REI2M0EgLyogVW5pZmllZFNvdXJjZTM2LW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1
OEQxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzNy1tbS5tbSBpbiBTb3VyY2VzICov
LAotCQkJCURFNUY4NThFMUZBMUFCRjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMzgtbW0ubW0g
aW4gU291cmNlcyAqLywKLQkJCQlERTVGODU4RjFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNv
dXJjZTM5LW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1OTAxRkExQUJGNDAwNkRCNjNB
IC8qIFVuaWZpZWRTb3VyY2U0MC1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCURFNUY4NTkxMUZB
MUFCRjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDEtbW0ubW0gaW4gU291cmNlcyAqLywKLQkJ
CQlERTVGODU5MjFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQyLW1tLm1tIGluIFNv
dXJjZXMgKi8sCi0JCQkJREU1Rjg1OTMxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0
My1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCURFNUY4NTk0MUZBMUFCRjQwMDZEQjYzQSAvKiBV
bmlmaWVkU291cmNlNDQtbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVGODU5NTFGQTFBQkY0
MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ1LW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1
Rjg1OTYxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0Ni1tbS5tbSBpbiBTb3VyY2Vz
ICovLAotCQkJCURFNUY4NTk3MUZBMUFCRjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDctbW0u
bW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVGODU5ODFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmll
ZFNvdXJjZTQ4LW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1OTkxRkExQUJGNDAwNkRC
NjNBIC8qIFVuaWZpZWRTb3VyY2U0OS1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCURFNUY4NTlB
MUZBMUFCRjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTAtbW0ubW0gaW4gU291cmNlcyAqLywK
LQkJCQlERTVGODY1MDFGQTJBRjI0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTUxLW1tLm1tIGlu
IFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg2NTExRkEyQUYyNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3Vy
Y2U1Mi1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCURFNUY4NjUyMUZBMkFGMjQwMDZEQjYzQSAv
KiBVbmlmaWVkU291cmNlNTMtbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVGODY1MzFGQTJB
RjI0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTU0LW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJ
REU1Rjg2NTQxRkEyQUYyNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1NS1tbS5tbSBpbiBTb3Vy
Y2VzICovLAotCQkJCURFNUY4NjU1MUZBMkFGMjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTYt
bW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVGODY1NjFGQTJBRjI0MDA2REI2M0EgLyogVW5p
ZmllZFNvdXJjZTU3LW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg2NTcxRkEyQUYyNDAw
NkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1OC1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCURFNUY4
NjU4MUZBMkFGMjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTktbW0ubW0gaW4gU291cmNlcyAq
LywKLQkJCQlERTVGODY1OTFGQTJBRjI0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTYwLW1tLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4MDIxRjk2QUY4MTAwNEQyMkE4IC8qIFVuaWZpZWRT
b3VyY2UxLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUzOEVDODA1MUY5NkFGODEwMDREMjJBOCAv
KiBVbmlmaWVkU291cmNlMi1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODA0MUY5NkFG
ODEwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzhF
QzgwNzFGOTZBRjgxMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTMtbW0ubW0gaW4gU291cmNlcyAq
LywKIAkJCQk1MzhFQzgwNjFGOTZBRjgxMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTMuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1NkMxRkExQUJGMzAwNkRCNjNBIC8qIFVuaWZpZWRTb3Vy
Y2U0LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4MDgxRjk2QUY4MTAwNEQyMkE4IC8q
IFVuaWZpZWRTb3VyY2U0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCURFNUY4NTZEMUZBMUFCRjMw
MDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVD
ODA5MUY5NkFGODEwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlERTVGODU2RTFGQTFBQkYzMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTYtbW0ubW0gaW4g
U291cmNlcyAqLywKIAkJCQk1MzhFQzgwQTFGOTZBRjgxMDA0RDIyQTggLyogVW5pZmllZFNvdXJj
ZTYuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1NkYxRkExQUJGMzAwNkRCNjNBIC8qIFVu
aWZpZWRTb3VyY2U3LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4MEIxRjk2QUY4MTAw
NEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U3LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCURFNUY4NTcw
MUZBMUFCRjMwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlOC1tbS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTUzOEVDODBDMUY5NkFGODEwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlOC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlERTVGODU3MTFGQTFBQkYzMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTkt
bW0ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzhFQzgwRDFGOTZBRjgxMDA0RDIyQTggLyogVW5p
ZmllZFNvdXJjZTkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1NzIxRkExQUJGMzAwNkRC
NjNBIC8qIFVuaWZpZWRTb3VyY2UxMC1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODBF
MUY5NkFGODEwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMTAuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJREU1Rjg1NzMxRkExQUJGMzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxMS1tbS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTUzOEVDODBGMUY5NkFGODEwMDREMjJBOCAvKiBVbmlmaWVkU291cmNl
MTEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1NzQxRkExQUJGMzAwNkRCNjNBIC8qIFVu
aWZpZWRTb3VyY2UxMi1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODEwMUY5NkFGODEw
MDREMjJBOCAvKiBVbmlmaWVkU291cmNlMTIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1
NzUxRkExQUJGMzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxMy1tbS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTUzOEVDODExMUY5NkFGODEwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMTMuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1NzYxRkExQUJGMzAwNkRCNjNBIC8qIFVuaWZpZWRTb3Vy
Y2UxNC1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODEyMUY5NkFGODEwMDREMjJBOCAv
KiBVbmlmaWVkU291cmNlMTQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1NzcxRkExQUJG
MzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxNS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUz
OEVDODEzMUY5NkFGODEwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMTUuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJREU1Rjg1NzgxRkExQUJGMzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxNi1tbS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODE0MUY5NkFGODEwMDREMjJBOCAvKiBVbmlmaWVk
U291cmNlMTYuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1NzkxRkExQUJGNDAwNkRCNjNB
IC8qIFVuaWZpZWRTb3VyY2UxNy1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODE1MUY5
NkFGODEwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMTcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
REU1Rjg1N0ExRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxOC1tbS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTUzOEVDODE2MUY5NkFGODEwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMTgu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1N0IxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZp
ZWRTb3VyY2UxOS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODE3MUY5NkFGODEwMDRE
MjJBOCAvKiBVbmlmaWVkU291cmNlMTkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1N0Mx
RkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UyMC1tbS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTUzOEVDODE4MUY5NkFGODEwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMjAuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJREU1Rjg1N0QxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2Uy
MS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODg2MUY5OTNGOUMwMDREMjJBOCAvKiBV
bmlmaWVkU291cmNlMjEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1N0UxRkExQUJGNDAw
NkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UyMi1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVD
ODg3MUY5OTNGOUMwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMjIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJREU1Rjg1N0YxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UyMy1tbS5tbSBp
biBTb3VyY2VzICovLAogCQkJCTUzOEVDODg4MUY5OTNGOUMwMDREMjJBOCAvKiBVbmlmaWVkU291
cmNlMjMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1ODAxRkExQUJGNDAwNkRCNjNBIC8q
IFVuaWZpZWRTb3VyY2UyNC1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODg5MUY5OTNG
OUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMjQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1
Rjg1ODExRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UyNS1tbS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTUzOEVDODhBMUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMjUuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1ODIxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRT
b3VyY2UyNi1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODhCMUY5OTNGOUQwMDREMjJB
OCAvKiBVbmlmaWVkU291cmNlMjYuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1ODMxRkEx
QUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UyNy1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTUzOEVDODhDMUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMjcuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJREU1Rjg1ODQxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UyOC1t
bS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODhEMUY5OTNGOUQwMDREMjJBOCAvKiBVbmlm
aWVkU291cmNlMjguY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1ODUxRkExQUJGNDAwNkRC
NjNBIC8qIFVuaWZpZWRTb3VyY2UyOS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODhF
MUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMjkuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJREU1Rjg1ODYxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzMC1tbS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTUzOEVDODhGMUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNl
MzAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1ODcxRkExQUJGNDAwNkRCNjNBIC8qIFVu
aWZpZWRTb3VyY2UzMS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODkwMUY5OTNGOUQw
MDREMjJBOCAvKiBVbmlmaWVkU291cmNlMzEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1
ODgxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzMi1tbS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTUzOEVDODkxMUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMzIuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1ODkxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3Vy
Y2UzMy1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODkyMUY5OTNGOUQwMDREMjJBOCAv
KiBVbmlmaWVkU291cmNlMzMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1OEExRkExQUJG
NDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzNC1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUz
OEVDODkzMUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMzQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJREU1Rjg1OEIxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzNS1tbS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODk0MUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVk
U291cmNlMzUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1OEMxRkExQUJGNDAwNkRCNjNB
IC8qIFVuaWZpZWRTb3VyY2UzNi1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODk1MUY5
OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMzYuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
REU1Rjg1OEQxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzNy1tbS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTUzOEVDODk2MUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMzcu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1OEUxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZp
ZWRTb3VyY2UzOC1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODk3MUY5OTNGOUQwMDRE
MjJBOCAvKiBVbmlmaWVkU291cmNlMzguY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1OEYx
RkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzOS1tbS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTUzOEVDODk4MUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMzkuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJREU1Rjg1OTAxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0
MC1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODk5MUY5OTNGOUQwMDREMjJBOCAvKiBV
bmlmaWVkU291cmNlNDAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1OTExRkExQUJGNDAw
NkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0MS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVD
ODlBMUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNDEuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJREU1Rjg1OTIxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0Mi1tbS5tbSBp
biBTb3VyY2VzICovLAogCQkJCTUzOEVDODlCMUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291
cmNlNDIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1OTMxRkExQUJGNDAwNkRCNjNBIC8q
IFVuaWZpZWRTb3VyY2U0My1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODlDMUY5OTNG
OUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNDMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1
Rjg1OTQxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0NC1tbS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTUzOEVDODlEMUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNDQuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1OTUxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRT
b3VyY2U0NS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODlFMUY5OTNGOUQwMDREMjJB
OCAvKiBVbmlmaWVkU291cmNlNDUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1OTYxRkEx
QUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0Ni1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTUzOEVDODlGMUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNDYuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJREU1Rjg1OTcxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0Ny1t
bS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDOEEwMUY5OTNGOUQwMDREMjJBOCAvKiBVbmlm
aWVkU291cmNlNDcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1OTgxRkExQUJGNDAwNkRC
NjNBIC8qIFVuaWZpZWRTb3VyY2U0OC1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDOEEx
MUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNDguY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJREU1Rjg1OTkxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0OS1tbS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTUzOEVDOEEyMUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNl
NDkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1OUExRkExQUJGNDAwNkRCNjNBIC8qIFVu
aWZpZWRTb3VyY2U1MC1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDOEEzMUY5OTNGOUQw
MDREMjJBOCAvKiBVbmlmaWVkU291cmNlNTAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg2
NTAxRkEyQUYyNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1MS1tbS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTUzOEVDOEE0MUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNTEuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJREU1Rjg2NTExRkEyQUYyNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3Vy
Y2U1Mi1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDOEE1MUY5OTNGOUQwMDREMjJBOCAv
KiBVbmlmaWVkU291cmNlNTIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg2NTIxRkEyQUYy
NDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1My1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUz
OEVDOEE2MUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNTMuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJREU1Rjg2NTMxRkEyQUYyNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1NC1tbS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDOEE3MUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVk
U291cmNlNTQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg2NTQxRkEyQUYyNDAwNkRCNjNB
IC8qIFVuaWZpZWRTb3VyY2U1NS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDOEE4MUY5
OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNTUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
REU1Rjg2NTUxRkEyQUYyNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1Ni1tbS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTUzOEVDOEE5MUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNTYu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg2NTYxRkEyQUYyNDAwNkRCNjNBIC8qIFVuaWZp
ZWRTb3VyY2U1Ny1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDOEFBMUY5OTNGOUQwMDRE
MjJBOCAvKiBVbmlmaWVkU291cmNlNTcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg2NTcx
RkEyQUYyNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1OC1tbS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTUzOEVDOEFCMUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNTguY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJREU1Rjg2NTgxRkEyQUYyNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1
OS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDOEFDMUY5OTNGOUQwMDREMjJBOCAvKiBV
bmlmaWVkU291cmNlNTkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg2NTkxRkEyQUYyNDAw
NkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U2MC1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVD
OEFEMUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNjAuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTM4RUM4QUUxRjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U2MS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MzhFQzhBRjFGOTkzRjlEMDA0RDIyQTggLyogVW5pZmllZFNvdXJj
ZTYyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcAppbmRleCA0ZDMzNTAx
YzZkYWUxYmE2YTU4NTdhMzcwNzdmYmE2ZjFiMDliMDVhLi5mMGVjNzY2ZTM1MzhkNGQ5MjQxZjc4
MGIzOGUzNzNkMDBlOTYwN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcApAQCAtMzIsNyArMzIs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IHsgcmVnaXN0cmF0aW9uS2V5Lmlzb2xhdGVkQ29weSgpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLCBzY3JpcHRVUkwuaXNvbGF0ZWRDb3B5KCkgfTsKKyAg
ICByZXR1cm4geyByZWdpc3RyYXRpb25LZXkuaXNvbGF0ZWRDb3B5KCksIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBzY3JpcHQuaXNvbGF0ZWRDb3B5KCksIHNjcmlwdFVSTC5pc29sYXRlZENvcHko
KSwgd29ya2VyVHlwZSB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHRE
YXRhLmgKaW5kZXggMDhjMzFiYzk1NDBkZGJhZTMyNjQ4NGRjNTllMTc0MDhhOTg2ZDViNC4uYjdk
NjZmMWU1YTRhNGVkZGUxNTY4M2VhODJlMzRkNDQyZDUyZWE3MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEu
aApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIgogI2luY2x1ZGUgIlVS
TC5oIgorI2luY2x1ZGUgIldvcmtlclR5cGUuaCIKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKIApAQCAtMzgsNiArMzksNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsK
ICAgICBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcjsKICAg
ICBTdHJpbmcgc2NyaXB0OwogICAgIFVSTCBzY3JpcHRVUkw7CisgICAgV29ya2VyVHlwZSB3b3Jr
ZXJUeXBlOwogICAgIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpv
cHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IGRlY29kZShEZWNvZGVyJik7CkBAIC00
OCw3ICs1MCw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgewogdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IHJlZ2lzdHJhdGlvbktleSA8
PCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA8PCBzY3JpcHQgPDwgc2NyaXB0VVJMOworICAgIGVu
Y29kZXIgPDwgcmVnaXN0cmF0aW9uS2V5IDw8IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIDw8IHNj
cmlwdCA8PCBzY3JpcHRVUkwgPDwgd29ya2VyVHlwZTsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4KQEAgLTY5LDggKzcxLDEyIEBAIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRl
eHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29kZShEZWNvZGVyCiAgICAgVVJM
IHNjcmlwdFVSTDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNjcmlwdFVSTCkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4ge3sgV1RGTW92ZSgqcmVnaXN0cmF0
aW9uS2V5KSwgV1RGTW92ZSgqc2VydmljZVdvcmtlcklkZW50aWZpZXIpLCBXVEZNb3ZlKHNjcmlw
dCksIFdURk1vdmUoc2NyaXB0VVJMKSB9fTsKKyAgICAKKyAgICBXb3JrZXJUeXBlIHdvcmtlclR5
cGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0od29ya2VyVHlwZSkpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAgcmV0dXJuIHt7IFdURk1vdmUoKnJlZ2lzdHJh
dGlvbktleSksIFdURk1vdmUoKnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSwgV1RGTW92ZShzY3Jp
cHQpLCBXVEZNb3ZlKHNjcmlwdFVSTCksIHdvcmtlclR5cGUgfX07CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggNGJmMTlkODViMjI5YTFlMGU4
ZjgzNmQ4MzdjOTQ4ZjQ0NTkxYjE3Zi4uM2EyMGIzYTlkNmEyMGY5MDBlZjdkYzEzNTEyMjZlNzM4
ODBkZTU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTMzLDkgKzMzLDggQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OlNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3Qg
U2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwg
U2VydmljZVdvcmtlclRocmVhZCYgdGhyZWFkLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENv
bnRlbnRTZWN1cml0eVBvbGljeSwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgTW9u
b3RvbmljVGltZSB0aW1lT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29u
bmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIsIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkKK1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6U2VydmljZVdvcmtlckds
b2JhbFNjb3BlKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQs
IGJvb2wgaXNPbmxpbmUsIFNlcnZpY2VXb3JrZXJUaHJlYWQmIHRocmVhZCwgYm9vbCBzaG91bGRC
eXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZjxTZWN1cml0eU9yaWdpbj4m
JiB0b3BPcmlnaW4sIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25u
ZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3Zp
ZGVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgOiBXb3JrZXJHbG9iYWxTY29wZSh1
cmwsIGlkZW50aWZpZXIsIHVzZXJBZ2VudCwgaXNPbmxpbmUsIHRocmVhZCwgc2hvdWxkQnlwYXNz
TWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBXVEZNb3ZlKHRvcE9yaWdpbiksIHRpbWVP
cmlnaW4sIGNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIHNlc3Npb25JRCkKLSAgICAs
IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIp
CiAgICAgLCBtX2NvbnRleHREYXRhKGNyb3NzVGhyZWFkQ29weShkYXRhKSkKICAgICAsIG1fY2xp
ZW50cyhTZXJ2aWNlV29ya2VyQ2xpZW50czo6Y3JlYXRlKCp0aGlzKSkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUuaAppbmRleCBlZTQ5NTg2OTI0MGVlZmY3MmQ4MmViN2VmNDMzNGJjYWNiZGZkZGQ3Li45MDAx
NTE3ZGRmNjQ0ZDk4OTUwMjQ1OWJmNTllNjI1NDVlNjc0NjA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5o
CkBAIC01MSw4ICs1MSw2IEBAIHB1YmxpYzoKICAgICBTZXJ2aWNlV29ya2VyQ2xpZW50cyYgY2xp
ZW50cygpIHsgcmV0dXJuIG1fY2xpZW50cy5nZXQoKTsgfQogICAgIFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb24qIHJlZ2lzdHJhdGlvbigpOwogICAgIAotICAgIHVpbnQ2NF90IHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllcjsgfQotCiAgICAgdm9pZCBza2lwV2FpdGluZyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsK
IAogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qg
ZmluYWw7CkBAIC02MCw5ICs1OCw4IEBAIHB1YmxpYzoKICAgICBTZXJ2aWNlV29ya2VyVGhyZWFk
JiB0aHJlYWQoKTsKIAogcHJpdmF0ZToKLSAgICBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWlu
dDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YSYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUsIFNlcnZpY2VXb3JrZXJUaHJlYWQmLCBib29s
IHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgUmVmPFNlY3VyaXR5
T3JpZ2luPiYmIHRvcE9yaWdpbiwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBJREJDbGllbnQ6
OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKiwgUEFMOjpTZXNzaW9uSUQpOwor
ICAgIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
dXNlckFnZW50LCBib29sIGlzT25saW5lLCBTZXJ2aWNlV29ya2VyVGhyZWFkJiwgYm9vbCBzaG91
bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZjxTZWN1cml0eU9yaWdp
bj4mJiB0b3BPcmlnaW4sIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgSURCQ2xpZW50OjpJREJD
b25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciosIFBBTDo6U2Vzc2lvbklEKTsKIAotICAg
IHVpbnQ2NF90IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXI7CiAgICAgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhIG1fY29udGV4dERhdGE7CiAgICAgUmVmPFNlcnZpY2VXb3JrZXJDbGllbnRz
PiBtX2NsaWVudHM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJUeXBlcy5oCmluZGV4IGEzYzZjM2U2MTc4ZWI4NWU0ODQyZmMxYTA2ZDNk
ZWE0ZWUyODRhYTIuLmM3MGFlMDhhYTQ1N2JmMzQwMGQxOTE2NmZlOGUyNzhiNWIxMzNhZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyVHlw
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclR5
cGVzLmgKQEAgLTUwLDYgKzUwLDkgQEAgZW51bSBjbGFzcyBTaG91bGROb3RpZnlXaGVuUmVzb2x2
ZWQgeyBObywgWWVzIH07CiBlbnVtIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
VHlwZSB7IH07CiB1c2luZyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciA9IE9i
amVjdElkZW50aWZpZXI8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXJUeXBlPjsK
IAorZW51bSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyVHlwZSB7IH07Cit1
c2luZyBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyID0gT2JqZWN0SWRlbnRp
ZmllcjxTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyVHlwZT47CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggNjMzOGU0ZTc1NWU2ZjRkZjgyMTY0MTVkMjFl
MmVmNGM0Mzk2MTFlNi4uMjNjNmJiNmY4ZWNmMmM4MmVkODVlOTE1ZGY0YTk4NTcxMjc3NzljNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTczLDkgKzczLDggQEAgcHJpdmF0ZToK
IC8vIEZJWE1FOiBVc2UgYSB2YWxpZCBpc09ubGluZSBmbGFnCiAvLyBGSVhNRTogVXNlIHZhbGlk
IHJ1bnRpbWUgZmxhZ3MKIAotU2VydmljZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVh
ZCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhJiBkYXRhLCBQQUw6OlNlc3Npb25JRCwgV29ya2VyTG9hZGVyUHJveHkmIGxv
YWRlclByb3h5LCBXb3JrZXJEZWJ1Z2dlclByb3h5JiBkZWJ1Z2dlclByb3h5KQorU2VydmljZVdv
cmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEmIGRhdGEsIFBBTDo6U2Vzc2lvbklELCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJv
eHksIFdvcmtlckRlYnVnZ2VyUHJveHkmIGRlYnVnZ2VyUHJveHkpCiAgICAgOiBXb3JrZXJUaHJl
YWQoZGF0YS5zY3JpcHRVUkwsICJzZXJ2aWNld29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50aWZp
ZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpLCBBU0NJSUxpdGVyYWwoIldvcmtlclVzZXJB
Z2VudCIpLCAvKiBpc09ubGluZSAqLyBmYWxzZSwgZGF0YS5zY3JpcHQsIGxvYWRlclByb3h5LCBk
ZWJ1Z2dlclByb3h5LCBEdW1teVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2hhcmVkKCksIFdv
cmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25z
ZUhlYWRlcnMgeyB9LCBmYWxzZSwgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShkYXRhLnNjcmlwdFVS
TCkuZ2V0KCksIE1vbm90b25pY1RpbWU6Om5vdygpLCBudWxscHRyLCBudWxscHRyLCBKU0M6OlJ1
bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpLCBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKSkKLSAgICAsIG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIpCiAgICAgLCBtX2RhdGEoZGF0YS5pc29sYXRlZENvcHkoKSkKICAgICAsIG1f
d29ya2VyT2JqZWN0UHJveHkoRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZCgp
KQogewpAQCAtODYsNyArODUsNyBAQCBTZXJ2aWNlV29ya2VyVGhyZWFkOjp+U2VydmljZVdvcmtl
clRocmVhZCgpID0gZGVmYXVsdDsKIAogUmVmPFdvcmtlckdsb2JhbFNjb3BlPiBTZXJ2aWNlV29y
a2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGlu
ZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91
bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZjxTZWN1cml0eU9yaWdp
bj4mJiB0b3BPcmlnaW4sIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKQogewotICAgIHJldHVybiBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0
ZShtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBtX2RhdGEsIHVybCwgaWRlbnRpZmllciwg
dXNlckFnZW50LCBpc09ubGluZSwgKnRoaXMsIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRT
ZWN1cml0eVBvbGljeSwgV1RGTW92ZSh0b3BPcmlnaW4pLCB0aW1lT3JpZ2luLCBpZGJDb25uZWN0
aW9uUHJveHkoKSwgc29ja2V0UHJvdmlkZXIoKSwgc2Vzc2lvbklEKTsKKyAgICByZXR1cm4gU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUobV9kYXRhLCB1cmwsIGlkZW50aWZpZXIsIHVz
ZXJBZ2VudCwgaXNPbmxpbmUsICp0aGlzLCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2Vj
dXJpdHlQb2xpY3ksIFdURk1vdmUodG9wT3JpZ2luKSwgdGltZU9yaWdpbiwgaWRiQ29ubmVjdGlv
blByb3h5KCksIHNvY2tldFByb3ZpZGVyKCksIHNlc3Npb25JRCk7CiB9CiAKIHZvaWQgU2Vydmlj
ZVdvcmtlclRocmVhZDo6cnVuRXZlbnRMb29wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaAppbmRl
eCA3M2RlY2Q1MDM5MGI1ODAwMGVlNjlmNzFmZGI3NjFjYmYyNzU0YjM5Li44NGE4ZTNiNDc2MzJj
Yjg1MDIyYmJmYjYwMDQ0YWM1NTFhYWRlZjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCkBA
IC02MCw3ICs2MCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoKTsKICAg
ICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KCk7CiAKLSAgICB1aW50NjRfdCBzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXI7IH0KICAgICBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGNvbnRleHREYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAKICAgICBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBp
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
OyB9CkBAIC03MCwxMiArNjksMTEgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcnVuRXZlbnRMb29w
KCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2VydmljZVdvcmtl
clRocmVhZCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhJiwgUEFMOjpTZXNzaW9uSUQsIFdvcmtlckxvYWRlclByb3h5Jiwg
V29ya2VyRGVidWdnZXJQcm94eSYpOworICAgIFdFQkNPUkVfRVhQT1JUIFNlcnZpY2VXb3JrZXJU
aHJlYWQoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiwgUEFMOjpTZXNzaW9uSUQsIFdv
cmtlckxvYWRlclByb3h5JiwgV29ya2VyRGVidWdnZXJQcm94eSYpOwogCiAgICAgdm9pZCB1cGRh
dGVFeHRlbmRlZEV2ZW50c1NldChFeHRlbmRhYmxlRXZlbnQqIG5ld0V2ZW50ID0gbnVsbHB0cik7
CiAgICAgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKCkgY29uc3QgeyByZXR1cm4gIW1fZXh0ZW5kZWRF
dmVudHMuaXNFbXB0eSgpOyB9CiAKLSAgICB1aW50NjRfdCBtX3NlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyOwogICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBtX2RhdGE7CiAgICAgV29ya2Vy
T2JqZWN0UHJveHkmIG1fd29ya2VyT2JqZWN0UHJveHk7CiAgICAgVmVjdG9yPFJlZjxFeHRlbmRh
YmxlRXZlbnQ+PiBtX2V4dGVuZGVkRXZlbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eS5jcHAKaW5kZXggODIxZGNlYTQ1N2JhYTE2MmUyZjJjMzE0MmE4ZDlkODk4OTVhMjNhYS4u
MGY1N2IwOWZiMzNmMzE3N2EwZGUyMzRlMzc0ZDU0OTE5Mzk5ZjZkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCkBAIC0zNiwxMSArMzYsNiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlZjxTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk+IFNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eTo6Y3JlYXRlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24s
IHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEmIGRhdGEsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ2FjaGVTdG9yYWdl
UHJvdmlkZXImIGNhY2hlU3RvcmFnZVByb3ZpZGVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSB7IFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24p
LCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZGF0YSwgc2Vzc2lvbklELCBjYWNoZVN0b3Jh
Z2VQcm92aWRlciB9KTsKLX0KLQogc3RhdGljIGlubGluZSBVbmlxdWVSZWY8UGFnZT4gY3JlYXRl
UGFnZUZvclNlcnZpY2VXb3JrZXIoUGFnZUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uLCBj
b25zdCBVUkwmIHVybCkKIHsKICAgICBhdXRvIHBhZ2UgPSBtYWtlVW5pcXVlUmVmPFBhZ2U+KFdU
Rk1vdmUoY29uZmlndXJhdGlvbikpOwpAQCAtNTIsMTAgKzQ3LDEwIEBAIHN0YXRpYyBpbmxpbmUg
VW5pcXVlUmVmPFBhZ2U+IGNyZWF0ZVBhZ2VGb3JTZXJ2aWNlV29ya2VyKFBhZ2VDb25maWd1cmF0
aW9uJiYgY29uCiAgICAgcmV0dXJuIHBhZ2U7CiB9CiAKLVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5KFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZp
Z3VyYXRpb24sIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ2Fj
aGVTdG9yYWdlUHJvdmlkZXImIGNhY2hlU3RvcmFnZVByb3ZpZGVyKQorU2VydmljZVdvcmtlclRo
cmVhZFByb3h5OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoUGFnZUNvbmZpZ3VyYXRpb24mJiBw
YWdlQ29uZmlndXJhdGlvbiwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhLCBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENhY2hlU3RvcmFnZVByb3ZpZGVyJiBjYWNoZVN0b3Jh
Z2VQcm92aWRlcikKICAgICA6IG1fcGFnZShjcmVhdGVQYWdlRm9yU2VydmljZVdvcmtlcihXVEZN
b3ZlKHBhZ2VDb25maWd1cmF0aW9uKSwgZGF0YS5zY3JpcHRVUkwpKQogICAgICwgbV9kb2N1bWVu
dCgqbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQotICAgICwgbV9zZXJ2aWNlV29ya2Vy
VGhyZWFkKFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmNyZWF0ZShzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgZGF0YSwgc2Vzc2lvbklELCAqdGhpcywgKnRoaXMpKQorICAgICwgbV9zZXJ2aWNlV29y
a2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmNyZWF0ZShkYXRhLCBzZXNzaW9uSUQsICp0
aGlzLCAqdGhpcykpCiAgICAgLCBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyKGNhY2hlU3RvcmFnZVBy
b3ZpZGVyKQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogICAgICwgbV9pbnNwZWN0b3JQ
cm94eSgqdGhpcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKaW5kZXggYjk5ODg1
NmU3MTQyMzQxODM1ZmFkNTM5Mzc1NmI5NmVjMzdhOGIxNy4uMTI3MmIyNDM1Mzk3NzBiNmM4NWUx
YzEzZmI2NjViM2Y2ZDMzZjJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgK
QEAgLTQ3LDE0ICs0NywxNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOwogCiBj
bGFzcyBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8U2VydmljZVdvcmtlclRocmVhZFByb3h5PiwgcHVibGljIFdvcmtlckxvYWRlclBy
b3h5LCBwdWJsaWMgV29ya2VyRGVidWdnZXJQcm94eSB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk+IGNyZWF0ZShQYWdlQ29u
ZmlndXJhdGlvbiYmLCB1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3Qg
U2VydmljZVdvcmtlckNvbnRleHREYXRhJiwgUEFMOjpTZXNzaW9uSUQsIENhY2hlU3RvcmFnZVBy
b3ZpZGVyJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxTZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHk+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShzdGQ6OmZv
cndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICB9CiAKICAgICBTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyVGhyZWFkLT5p
ZGVudGlmaWVyKCk7IH0KICAgICBTZXJ2aWNlV29ya2VyVGhyZWFkJiB0aHJlYWQoKSB7IHJldHVy
biBtX3NlcnZpY2VXb3JrZXJUaHJlYWQuZ2V0KCk7IH0KICAgICBTZXJ2aWNlV29ya2VySW5zcGVj
dG9yUHJveHkmIGluc3BlY3RvclByb3h5KCkgeyByZXR1cm4gbV9pbnNwZWN0b3JQcm94eTsgfQog
CiBwcml2YXRlOgotICAgIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShQYWdlQ29uZmlndXJhdGlv
biYmLCB1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdv
cmtlckNvbnRleHREYXRhJiwgUEFMOjpTZXNzaW9uSUQsIENhY2hlU3RvcmFnZVByb3ZpZGVyJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgU2VydmljZVdvcmtlclRocmVhZFByb3h5KFBhZ2VDb25maWd1
cmF0aW9uJiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYsIFBBTDo6U2Vzc2lvbklE
LCBDYWNoZVN0b3JhZ2VQcm92aWRlciYpOwogCiAgICAgLy8gV29ya2VyTG9hZGVyUHJveHkKICAg
ICBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzayYmLCBjb25zdCBTdHJpbmcmIG1vZGUpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCBiOTBi
OGI2MTM5OGU2ZDQzNmM2YmFmYmE5ZWYwMDA5ZjhmMTBhYWVhLi5kNmQxMzQyM2JhNWUyMmQxYzk2
YmE2MWQ0YjgyODYxOWNiNzIwODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMzQsMTkgKzM0LDIwIEBACiAjaW5jbHVk
ZSAiU1dPcmlnaW5TdG9yZS5oIgogI2luY2x1ZGUgIlNXU2VydmVySm9iUXVldWUuaCIKICNpbmNs
dWRlICJTV1NlcnZlclJlZ2lzdHJhdGlvbi5oIgorI2luY2x1ZGUgIlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlNXU2VydmVyV29ya2VyLmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCIKICNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29y
a2VySm9iRGF0YS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBnZW5lcmF0ZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkK
IHsKLSAgICBzdGF0aWMgdWludDY0X3QgaWRlbnRpZmllciA9IDA7Ci0gICAgcmV0dXJuIG1ha2VP
YmplY3RJZGVudGlmaWVyPFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyVHlwZT4oKytpZGVudGlmaWVy
KTsKKyAgICByZXR1cm4gZ2VuZXJhdGVPYmplY3RJZGVudGlmaWVyPFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyVHlwZT4oKTsKIH0KIAogU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb24oU1dT
ZXJ2ZXImIHNlcnZlciwgdWludDY0X3QgaWRlbnRpZmllcikKQEAgLTYxLDYgKzYyLDEyIEBAIFNX
U2VydmVyOjpDb25uZWN0aW9uOjp+Q29ubmVjdGlvbigpCiAgICAgbV9zZXJ2ZXIudW5yZWdpc3Rl
ckNvbm5lY3Rpb24oKnRoaXMpOwogfQogCitIYXNoU2V0PFNXU2VydmVyKj4mIFNXU2VydmVyOjph
bGxTZXJ2ZXJzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTV1NlcnZl
cio+PiBzZXJ2ZXJzOworICAgIHJldHVybiBzZXJ2ZXJzOworfQorCiBTV1NlcnZlcjo6flNXU2Vy
dmVyKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2Nvbm5lY3Rpb25zLmlzRW1wdHkoKSk7CkBA
IC03NSw2ICs4Miw4IEBAIFNXU2VydmVyOjp+U1dTZXJ2ZXIoKQogICAgIC8vIEJ1dCBvbmNlIGl0
IGRvZXMgc3RhcnQgaGFwcGVuaW5nLCB0aGlzIEFTU0VSVCB3aWxsIGNhdGNoIHVzIGRvaW5nIGl0
IHdyb25nLgogICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV90YXNrVGhyZWFkTG9jayk7CiAgICAg
QVNTRVJUKCFtX3Rhc2tUaHJlYWQpOworICAgIAorICAgIGFsbFNlcnZlcnMoKS5yZW1vdmUodGhp
cyk7CiB9CiAKIFNXU2VydmVyUmVnaXN0cmF0aW9uKiBTV1NlcnZlcjo6Z2V0UmVnaXN0cmF0aW9u
KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKQEAg
LTEyOCwyMSArMTM3LDYgQEAgdm9pZCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6ZmluaXNoRmV0Y2hp
bmdTY3JpcHRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2gKICAgICBtX3NlcnZlci5z
Y3JpcHRGZXRjaEZpbmlzaGVkKCp0aGlzLCByZXN1bHQpOwogfQogCi12b2lkIFNXU2VydmVyOjpD
b25uZWN0aW9uOjpkaWRGaW5pc2hJbnN0YWxsKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmIGtleSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkKLXsKLSAgICBtX3NlcnZlci5kaWRGaW5pc2hJbnN0YWxs
KCp0aGlzLCBrZXksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCB3YXNTdWNjZXNzZnVsKTsKLX0K
LQotdm9pZCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6ZGlkRmluaXNoQWN0aXZhdGlvbihjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQotewotICAgIG1fc2VydmVyLmRpZEZpbmlzaEFjdGl2
YXRpb24oKnRoaXMsIGtleSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotfQotCi12b2lkIFNX
U2VydmVyOjpDb25uZWN0aW9uOjpzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBoYXNQZW5k
aW5nRXZlbnRzKQotewotICAgIG1fc2VydmVyLnNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZl
bnRzKCp0aGlzLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgaGFzUGVuZGluZ0V2ZW50cyk7Ci19
Ci0KIHZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OmRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9t
aXNlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIGtleSkKIHsKICAgICBtX3Nl
cnZlci5kaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZSgqdGhpcywga2V5KTsKQEAgLTE1OCwx
OSArMTUyLDEwIEBAIHZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OnJlbW92ZVNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JblNlcnZlcihjb25zdCBTZXJ2aWNlCiAgICAgbV9zZXJ2ZXIucmVtb3Zl
Q2xpZW50U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbigqdGhpcywga2V5LCBpZGVudGlmaWVyKTsK
IH0KIAotdm9pZCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3Rh
cnQoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
Ci17Ci0gICAgbV9zZXJ2ZXIuc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoKnRoaXMsIHJlZ2lz
dHJhdGlvbktleSwgaWRlbnRpZmllciwgbWVzc2FnZSk7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXI6OkNv
bm5lY3Rpb246OnNjcmlwdENvbnRleHRTdGFydGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllcikKLXsKLSAgICBtX3NlcnZlci5zY3JpcHRDb250ZXh0U3RhcnRlZCgqdGhpcywgcmVnaXN0
cmF0aW9uS2V5LCBpZGVudGlmaWVyKTsKLX0KLQogU1dTZXJ2ZXI6OlNXU2VydmVyKFVuaXF1ZVJl
ZjxTV09yaWdpblN0b3JlPiYmIG9yaWdpblN0b3JlKQogICAgIDogbV9vcmlnaW5TdG9yZShXVEZN
b3ZlKG9yaWdpblN0b3JlKSkKIHsKKyAgICBhbGxTZXJ2ZXJzKCkuYWRkKHRoaXMpOwogICAgIG1f
dGFza1RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKEFTQ0lJTGl0ZXJhbCgiU2VydmljZVdvcmtlciBU
YXNrIFRocmVhZCIpLCBbdGhpc10gewogICAgICAgICB0YXNrVGhyZWFkRW50cnlQb2ludCgpOwog
ICAgIH0pOwpAQCAtMjQ1LDUyICsyMzAsMzYgQEAgdm9pZCBTV1NlcnZlcjo6c2NyaXB0RmV0Y2hG
aW5pc2hlZChDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyRmUKICAg
ICBqb2JRdWV1ZS0+c2NyaXB0RmV0Y2hGaW5pc2hlZChjb25uZWN0aW9uLCByZXN1bHQpOwogfQog
Ci12b2lkIFNXU2VydmVyOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRp
b25LZXksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKK3ZvaWQgU1dTZXJ2ZXI6OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KFNXU2Vy
dmVyV29ya2VyJiB3b3JrZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBBU1NFUlQo
bV9jb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOwotICAgIAot
ICAgIGlmIChhdXRvKiBqb2JRdWV1ZSA9IG1fam9iUXVldWVzLmdldChyZWdpc3RyYXRpb25LZXkp
KQotICAgICAgICBqb2JRdWV1ZS0+c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29ubmVjdGlv
biwgaWRlbnRpZmllciwgbWVzc2FnZSk7CisgICAgaWYgKGF1dG8qIGpvYlF1ZXVlID0gbV9qb2JR
dWV1ZXMuZ2V0KHdvcmtlci5yZWdpc3RyYXRpb25LZXkoKSkpCisgICAgICAgIGpvYlF1ZXVlLT5z
Y3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydCh3b3JrZXIuaWRlbnRpZmllcigpLCBtZXNzYWdlKTsK
IH0KIAotdm9pZCBTV1NlcnZlcjo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQoQ29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9u
S2V5LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBTV1NlcnZlcjo6
c2NyaXB0Q29udGV4dFN0YXJ0ZWQoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikKIHsKLSAgICBBU1NF
UlQobV9jb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOwotCi0g
ICAgaWYgKGF1dG8qIGpvYlF1ZXVlID0gbV9qb2JRdWV1ZXMuZ2V0KHJlZ2lzdHJhdGlvbktleSkp
Ci0gICAgICAgIGpvYlF1ZXVlLT5zY3JpcHRDb250ZXh0U3RhcnRlZChjb25uZWN0aW9uLCBpZGVu
dGlmaWVyKTsKLX0KLQotdm9pZCBTV1NlcnZlcjo6ZGlkRmluaXNoSW5zdGFsbChDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3Ry
YXRpb25LZXksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBib29sIHdhc1N1Y2Nlc3NmdWwpCi17Ci0gICAgQVNTRVJUKG1fY29ubmVjdGlvbnMuY29udGFp
bnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKLQotICAgIGlmIChhdXRvKiBqb2JRdWV1ZSA9
IG1fam9iUXVldWVzLmdldChyZWdpc3RyYXRpb25LZXkpKQotICAgICAgICBqb2JRdWV1ZS0+ZGlk
RmluaXNoSW5zdGFsbChjb25uZWN0aW9uLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgd2FzU3Vj
Y2Vzc2Z1bCk7CisgICAgaWYgKGF1dG8qIGpvYlF1ZXVlID0gbV9qb2JRdWV1ZXMuZ2V0KHdvcmtl
ci5yZWdpc3RyYXRpb25LZXkoKSkpCisgICAgICAgIGpvYlF1ZXVlLT5zY3JpcHRDb250ZXh0U3Rh
cnRlZCh3b3JrZXIuaWRlbnRpZmllcigpKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6ZGlkRmluaXNo
QWN0aXZhdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKQordm9pZCBTV1NlcnZlcjo6ZGlkRmluaXNoSW5zdGFsbChT
V1NlcnZlcldvcmtlciYgd29ya2VyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCiB7Ci0gICAgQVNTRVJU
X1VOVVNFRChjb25uZWN0aW9uLCBtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24uaWRl
bnRpZmllcigpKSk7Ci0KLSAgICBpZiAoYXV0byogcmVnaXN0cmF0aW9uID0gZ2V0UmVnaXN0cmF0
aW9uKHJlZ2lzdHJhdGlvbktleSkpCi0gICAgICAgIFNXU2VydmVySm9iUXVldWU6OmRpZEZpbmlz
aEFjdGl2YXRpb24oKnJlZ2lzdHJhdGlvbiwgc2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAg
IGlmIChhdXRvKiBqb2JRdWV1ZSA9IG1fam9iUXVldWVzLmdldCh3b3JrZXIucmVnaXN0cmF0aW9u
S2V5KCkpKQorICAgICAgICBqb2JRdWV1ZS0+ZGlkRmluaXNoSW5zdGFsbCh3b3JrZXIuaWRlbnRp
ZmllcigpLCB3YXNTdWNjZXNzZnVsKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6c2V0U2VydmljZVdv
cmtlckhhc1BlbmRpbmdFdmVudHMoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU2VydmljZVdvcmtl
cklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgaGFzUGVuZGluZ0V2ZW50
cykKK3ZvaWQgU1dTZXJ2ZXI6OmRpZEZpbmlzaEFjdGl2YXRpb24oU1dTZXJ2ZXJXb3JrZXImIHdv
cmtlcikKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGNvbm5lY3Rpb24sIG1fY29ubmVjdGlvbnMuY29u
dGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKLQotICAgIGlmIChhdXRvKiBzZXJ2aWNl
V29ya2VyID0gbV93b3JrZXJzQnlJRC5nZXQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKQotICAg
ICAgICBzZXJ2aWNlV29ya2VyLT5zZXRIYXNQZW5kaW5nRXZlbnRzKGhhc1BlbmRpbmdFdmVudHMp
OworICAgIGlmIChhdXRvKiByZWdpc3RyYXRpb24gPSBnZXRSZWdpc3RyYXRpb24od29ya2VyLnJl
Z2lzdHJhdGlvbktleSgpKSkKKyAgICAgICAgU1dTZXJ2ZXJKb2JRdWV1ZTo6ZGlkRmluaXNoQWN0
aXZhdGlvbigqcmVnaXN0cmF0aW9uLCB3b3JrZXIuaWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBT
V1NlcnZlcjo6ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoQ29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5
KQogewotICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24uaWRlbnRp
ZmllcigpKSk7CisgICAgQVNTRVJUX1VOVVNFRChjb25uZWN0aW9uLCBtX2Nvbm5lY3Rpb25zLmNv
bnRhaW5zKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKSk7CiAKICAgICBpZiAoYXV0byogam9iUXVl
dWUgPSBtX2pvYlF1ZXVlcy5nZXQocmVnaXN0cmF0aW9uS2V5KSkKLSAgICAgICAgam9iUXVldWUt
PmRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKGNvbm5lY3Rpb24pOworICAgICAgICBqb2JR
dWV1ZS0+ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoKTsKIH0KIAogdm9pZCBTV1NlcnZl
cjo6YWRkQ2xpZW50U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXksIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCkBAIC0zMjEsMjYgKzI5MCw3NSBA
QCB2b2lkIFNXU2VydmVyOjpyZW1vdmVDbGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKENv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbgogICAgIHJlZ2lzdHJhdGlvbi0+cmVtb3ZlQ2xpZW50
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihjb25uZWN0aW9uLmlkZW50aWZpZXIoKSk7CiB9CiAK
LVJlZjxTV1NlcnZlcldvcmtlcj4gU1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcihDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRp
b25LZXksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgV29ya2VyVHlwZSB0
eXBlKQordm9pZCBTV1NlcnZlcjo6dXBkYXRlV29ya2VyKENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgV29ya2VyVHlwZSB0eXBlKQogewogICAgIGF1dG8gc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgPSBnZW5lcmF0ZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCk7
CiAKLSAgICBhdXRvIHJlc3VsdCA9IG1fd29ya2Vyc0J5SUQuYWRkKHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBTV1NlcnZlcldvcmtlcjo6Y3JlYXRlKHJlZ2lzdHJhdGlvbktleSwgdXJsLCBzY3Jp
cHQsIHR5cGUsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSk7Ci0gICAgQVNTRVJUKHJlc3VsdC5p
c05ld0VudHJ5KTsKKyAgICBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgZGF0YSA9IHsgcmVnaXN0
cmF0aW9uS2V5LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc2NyaXB0LCB1cmwsIHR5cGUgfTsK
IAotICAgIGNvbm5lY3Rpb24uaW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KHsgcmVnaXN0cmF0
aW9uS2V5LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc2NyaXB0LCB1cmwgfSk7CisgICAgLy8g
UmlnaHQgbm93IHdlIG9ubHkgZXZlciBrZWVwIHVwIHRvIG9uZSBjb25uZWN0aW9uIHRvIG9uZSBT
VyBjb250ZXh0IHByb2Nlc3MuCisgICAgLy8gQW5kIGl0IHNob3VsZCBhbHdheXMgZXhpc3QgaWYg
d2UncmUgY2FsbGluZyB1cGRhdGVXb3JrZXIKKyAgICBhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpnbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7
CisgICAgaWYgKCFjb25uZWN0aW9uKSB7CisgICAgICAgIG1fcGVuZGluZ0NvbnRleHREYXRhcy5h
cHBlbmQoV1RGTW92ZShkYXRhKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgCi0gICAg
cmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisgICAgaW5zdGFsbENvbnRleHRE
YXRhKGRhdGEpOwogfQogCi12b2lkIFNXU2VydmVyOjpmaXJlSW5zdGFsbEV2ZW50KENvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKQordm9pZCBTV1NlcnZlcjo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQo
KQogewotICAgIGNvbm5lY3Rpb24uZmlyZUluc3RhbGxFdmVudChzZXJ2aWNlV29ya2VySWRlbnRp
Zmllcik7CisgICAgQVNTRVJUKFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Z2xvYmFsU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbigpKTsKKyAgICBmb3IgKGF1dG8mIGRhdGEgOiBtX3BlbmRp
bmdDb250ZXh0RGF0YXMpCisgICAgICAgIGluc3RhbGxDb250ZXh0RGF0YShkYXRhKTsKKyAgICAK
KyAgICBtX3BlbmRpbmdDb250ZXh0RGF0YXMuY2xlYXIoKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6
ZmlyZUFjdGl2YXRlRXZlbnQoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCit2b2lkIFNXU2VydmVyOjppbnN0YWxs
Q29udGV4dERhdGEoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhKQogewotICAg
IGNvbm5lY3Rpb24uZmlyZUFjdGl2YXRlRXZlbnQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwor
ICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omdsb2Jh
bFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKKyAgICBBU1NFUlQoY29ubmVjdGlvbik7CisK
KyAgICBhdXRvIHJlc3VsdCA9IG1fd29ya2Vyc0J5SUQuYWRkKGRhdGEuc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIFNXU2VydmVyV29ya2VyOjpjcmVhdGUoKnRoaXMsIGRhdGEucmVnaXN0cmF0aW9u
S2V5LCBjb25uZWN0aW9uLT5pZGVudGlmaWVyKCksIGRhdGEuc2NyaXB0VVJMLCBkYXRhLnNjcmlw
dCwgZGF0YS53b3JrZXJUeXBlLCBkYXRhLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSk7CisgICAg
QVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKKworICAgIGNvbm5lY3Rp
b24tPmluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChkYXRhKTsKK30KKwordm9pZCBTV1NlcnZl
cjo6ZmlyZUluc3RhbGxFdmVudChTV1NlcnZlcldvcmtlciYgd29ya2VyKQoreworLy8gICAgYXV0
byogd29ya2VyID0gbV93b3JrZXJzQnlJRC5nZXQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwor
Ly8gICAgaWYgKCF3b3JrZXIpIHsKKy8vICAgICAgICBMT0dfRVJST1IoIlJlcXVlc3QgdG8gZmly
ZSBpbnN0YWxsIGV2ZW50IG9uIGEgd29ya2VyIHRoYXQgY2Fubm90IGJlIGZvdW5kIGluIHRoZSBz
ZXJ2ZXIiKTsKKy8vICAgICAgICByZXR1cm47CisvLyAgICB9CisKKyAgICBhdXRvKiBjb25uZWN0
aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9ySWRlbnRpZmll
cih3b3JrZXIuY29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKCkpOworICAgIGlmICghY29ubmVj
dGlvbikgeworICAgICAgICBMT0dfRVJST1IoIlJlcXVlc3QgdG8gZmlyZSBpbnN0YWxsIGV2ZW50
IG9uIGEgd29ya2VyIHdob3NlIGNvbnRleHQgY29ubmVjdGlvbiBkb2VzIG5vdCBleGlzdCIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29ubmVjdGlvbi0+ZmlyZUluc3RhbGxFdmVu
dCh3b3JrZXIuaWRlbnRpZmllcigpKTsKK30KKwordm9pZCBTV1NlcnZlcjo6ZmlyZUFjdGl2YXRl
RXZlbnQoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikKK3sKKy8vICAgIGF1dG8qIHdvcmtlciA9IG1f
d29ya2Vyc0J5SUQuZ2V0KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKy8vICAgIGlmICghd29y
a2VyKSB7CisvLyAgICAgICAgTE9HX0VSUk9SKCJSZXF1ZXN0IHRvIGZpcmUgaW5zdGFsbCBldmVu
dCBvbiBhIHdvcmtlciB0aGF0IGNhbm5vdCBiZSBmb3VuZCBpbiB0aGUgc2VydmVyIik7CisvLyAg
ICAgICAgcmV0dXJuOworLy8gICAgfQorCisgICAgYXV0byogY29ubmVjdGlvbiA9IFNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvcklkZW50aWZpZXIod29ya2VyLmNvbnRl
eHRDb25uZWN0aW9uSWRlbnRpZmllcigpKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24pIHsKKyAgICAg
ICAgTE9HX0VSUk9SKCJSZXF1ZXN0IHRvIGZpcmUgaW5zdGFsbCBldmVudCBvbiBhIHdvcmtlciB3
aG9zZSBjb250ZXh0IGNvbm5lY3Rpb24gZG9lcyBub3QgZXhpc3QiKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGNvbm5lY3Rpb24tPmZpcmVBY3RpdmF0ZUV2ZW50KHdvcmtlci5pZGVu
dGlmaWVyKCkpOwogfQogCiB2b2lkIFNXU2VydmVyOjp0YXNrVGhyZWFkRW50cnlQb2ludCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5k
ZXggYmNhMzg2NWY5NmU5NDBjZjc2Y2Q4NGRhNmRmYjM3MzgzMWI4M2IwYi4uODM4YzdlNWM0Mjcw
OTQwYTk5ZGE2NzU1NGUyYWI0M2IwZTk4Mzc1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1
ZGUgIlNlcnZpY2VXb3JrZXJKb2IuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaCIKKyNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRR
dWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFRhc2suaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgpAQCAtNDcsNiArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBT
V09yaWdpblN0b3JlOwogY2xhc3MgU1dTZXJ2ZXJKb2JRdWV1ZTsKIGNsYXNzIFNXU2VydmVyUmVn
aXN0cmF0aW9uOworY2xhc3MgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOwogZW51bSBjbGFz
cyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGU7CiBlbnVtIGNsYXNzIFNlcnZpY2VXb3Jr
ZXJTdGF0ZTsKIHN0cnVjdCBFeGNlcHRpb25EYXRhOwpAQCAtNjEsMTEgKzYzLDYgQEAgcHVibGlj
OgogICAgIHB1YmxpYzoKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+Q29ubmVjdGlv
bigpOwogCi0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NyaXB0Q29udGV4dEZhaWxlZFRv
U3RhcnQoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNjcmlwdENvbnRleHRTdGFydGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGlkRmluaXNoSW5zdGFsbChjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCk7Ci0gICAgICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbihjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAgICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBib29sIGhhc1BlbmRpbmdFdmVudHMpOwogICAgICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKGNvbnN0IFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKTsKICAgICAgICAgY29uc3QgU1dTZXJ2ZXJSZWdpc3Ry
YXRpb24qIGRvUmVnaXN0cmF0aW9uTWF0Y2hpbmcoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0
b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMKSBjb25zdCB7IHJldHVybiBtX3NlcnZlci5k
b1JlZ2lzdHJhdGlvbk1hdGNoaW5nKHRvcE9yaWdpbiwgY2xpZW50VVJMKTsgfQogCkBAIC05MCwx
MSArODcsNiBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlVW5yZWdpc3Ry
YXRpb25Kb2JJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiwgYm9vbCByZWdpc3RyYXRpb25SZXN1bHQpID0gMDsKICAgICAg
ICAgdmlydHVhbCB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVu
dGlmaWVyKSA9IDA7CiAKLSAgICAgICAgLy8gTWVzc2FnZXMgdG8gdGhlIFNXIGhvc3QgV2ViUHJv
Y2VzcwotICAgICAgICB2aXJ0dWFsIHZvaWQgaW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KGNv
bnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lk
IGZpcmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKLSAgICAgICAg
dmlydHVhbCB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9
IDA7Ci0KICAgICAgICAgU1dTZXJ2ZXImIG1fc2VydmVyOwogICAgIH07CiAKQEAgLTExOCwxNCAr
MTEwLDIzIEBAIHB1YmxpYzoKICAgICB2b2lkIHBvc3RUYXNrKENyb3NzVGhyZWFkVGFzayYmKTsK
ICAgICB2b2lkIHBvc3RUYXNrUmVwbHkoQ3Jvc3NUaHJlYWRUYXNrJiYpOwogCi0gICAgUmVmPFNX
U2VydmVyV29ya2VyPiB1cGRhdGVXb3JrZXIoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgV29y
a2VyVHlwZSk7Ci0gICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KENvbm5lY3Rpb24mLCBTZXJ2aWNl
V29ya2VySWRlbnRpZmllcik7Ci0gICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChDb25uZWN0aW9u
JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIHZvaWQgdXBkYXRlV29ya2VyKENvbm5l
Y3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiBzY3JpcHQsIFdvcmtlclR5cGUpOworICAgIHZvaWQgZmlyZUluc3RhbGxF
dmVudChTV1NlcnZlcldvcmtlciYpOworICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoU1dTZXJ2
ZXJXb3JrZXImKTsKICAgICBTV1NlcnZlcldvcmtlciogd29ya2VyQnlJRChTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBpZGVudGlmaWVyKSBjb25zdCB7IHJldHVybiBtX3dvcmtlcnNCeUlELmdldChp
ZGVudGlmaWVyKTsgfQogICAgIAogICAgIENvbm5lY3Rpb24qIGdldENvbm5lY3Rpb24odWludDY0
X3QgaWRlbnRpZmllcikgeyByZXR1cm4gbV9jb25uZWN0aW9ucy5nZXQoaWRlbnRpZmllcik7IH0K
ICAgICBTV09yaWdpblN0b3JlJiBvcmlnaW5TdG9yZSgpIHsgcmV0dXJuIG1fb3JpZ2luU3RvcmU7
IH0KIAorICAgIHZvaWQgc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoU1dTZXJ2ZXJXb3JrZXIm
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgc2NyaXB0Q29udGV4dFN0YXJ0ZWQo
U1dTZXJ2ZXJXb3JrZXImKTsKKyAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoU1dTZXJ2ZXJXb3Jr
ZXImLCBib29sIHdhc1N1Y2Nlc3NmdWwpOworICAgIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbihT
V1NlcnZlcldvcmtlciYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uQ3JlYXRlZCgpOworICAgIAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBI
YXNoU2V0PFNXU2VydmVyKj4mIGFsbFNlcnZlcnMoKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHJl
Z2lzdGVyQ29ubmVjdGlvbihDb25uZWN0aW9uJik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyQ29ubmVj
dGlvbihDb25uZWN0aW9uJik7CkBAIC0xMzQsMTEgKzEzNSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBoYW5kbGVUYXNrUmVwbGllc09uTWFpblRocmVhZCgpOwogCiAgICAgdm9pZCBzY3JpcHRGZXRj
aEZpbmlzaGVkKENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKTsK
LSAgICB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KENvbm5lY3Rpb24mLCBjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgdm9pZCBzY3JpcHRDb250ZXh0U3RhcnRlZChDb25u
ZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoQ29ubmVjdGlvbiYsIGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgYm9vbCB3YXNTdWNjZXNzZnVsKTsKLSAgICB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oQ29u
bmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29y
a2VySWRlbnRpZmllcik7Ci0gICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50
cyhDb25uZWN0aW9uJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgaGFzUGVuZGluZ0V2
ZW50cyk7CisKICAgICB2b2lkIGRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKENvbm5lY3Rp
b24mLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7CiAKICAgICB2b2lkIGFk
ZENsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
Zmllcik7CkBAIC0xNDYsNiArMTQzLDggQEAgcHJpdmF0ZToKIAogICAgIFdFQkNPUkVfRVhQT1JU
IGNvbnN0IFNXU2VydmVyUmVnaXN0cmF0aW9uKiBkb1JlZ2lzdHJhdGlvbk1hdGNoaW5nKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCkgY29u
c3Q7CiAKKyAgICB2b2lkIGluc3RhbGxDb250ZXh0RGF0YShjb25zdCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEmKTsKKwogICAgIEhhc2hNYXA8dWludDY0X3QsIENvbm5lY3Rpb24qPiBtX2Nvbm5l
Y3Rpb25zOwogICAgIEhhc2hNYXA8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSwgc3RkOjp1
bmlxdWVfcHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPj4gbV9yZWdpc3RyYXRpb25zOwogICAgIEhh
c2hNYXA8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSwgc3RkOjp1bmlxdWVfcHRyPFNXU2Vy
dmVySm9iUXVldWU+PiBtX2pvYlF1ZXVlczsKQEAgLTE2MSw2ICsxNjAsNyBAQCBwcml2YXRlOgog
ICAgIExvY2sgbV9tYWluVGhyZWFkUmVwbHlMb2NrOwogICAgIGJvb2wgbV9tYWluVGhyZWFkUmVw
bHlTY2hlZHVsZWQgeyBmYWxzZSB9OwogICAgIFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiBtX29y
aWdpblN0b3JlOworICAgIERlcXVlPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gbV9wZW5kaW5n
Q29udGV4dERhdGFzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1
ZS5jcHAKaW5kZXggZjg0OWFiODgyMzU3MmY5MTNhYjIxZWZlZGU1YTg4NWE2M2EzMTYxZi4uOWZl
ZmExMjdjODEyYWY0YWQ0YjU0NjRlZjBhMmVhZjI3OWFhYzE2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUu
Y3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hG
aW5pc2hlZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uCiB9CiAKIC8vIGh0
dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyN1cGRhdGUtYWxnb3JpdGhtCi12b2lk
IFNXU2VydmVySm9iUXVldWU6OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KFNXU2VydmVyOjpD
b25uZWN0aW9uJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICAvLyBJ
ZiBhbiB1bmNhdWdodCBydW50aW1lIHNjcmlwdCBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBhYm92
ZSBzdGVwLCB0aGVuOgogICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fc2VydmVyLmdldFJlZ2lz
dHJhdGlvbihtX3JlZ2lzdHJhdGlvbktleSk7CkBAIC0xMDEsMTYgKzEwMSwxNiBAQCB2b2lkIFNX
U2VydmVySm9iUXVldWU6OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KFNXU2VydmVyOjpDb25u
ZWN0aW9uJiwgU2VydmljZQogICAgIGZpbmlzaEN1cnJlbnRKb2IoKTsKIH0KIAotdm9pZCBTV1Nl
cnZlckpvYlF1ZXVlOjpzY3JpcHRDb250ZXh0U3RhcnRlZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgU1dT
ZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgaWRlbnRpZmllcikKIHsKICAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBtX3NlcnZlci5nZXRS
ZWdpc3RyYXRpb24obV9yZWdpc3RyYXRpb25LZXkpOwogICAgIEFTU0VSVChyZWdpc3RyYXRpb24p
OwogCi0gICAgaW5zdGFsbCgqcmVnaXN0cmF0aW9uLCBjb25uZWN0aW9uLCBpZGVudGlmaWVyKTsK
KyAgICBpbnN0YWxsKCpyZWdpc3RyYXRpb24sIGlkZW50aWZpZXIpOwogfQogCiAvLyBodHRwczov
L3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jaW5zdGFsbAotdm9pZCBTV1NlcnZlckpvYlF1
ZXVlOjppbnN0YWxsKFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIFNXU2VydmVy
OjpDb25uZWN0aW9uJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaW5zdGFsbGluZ1dvcmtlcikK
K3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6aW5zdGFsbChTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVn
aXN0cmF0aW9uLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpbnN0YWxsaW5nV29ya2VyKQogewog
ICAgIC8vIFRoZSBJbnN0YWxsIGFsZ29yaXRobSBzaG91bGQgbmV2ZXIgYmUgaW52b2tlZCB3aXRo
IGEgbnVsbCB3b3JrZXIuCiAgICAgYXV0byogd29ya2VyID0gbV9zZXJ2ZXIud29ya2VyQnlJRChp
bnN0YWxsaW5nV29ya2VyKTsKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIFNXU2VydmVySm9iUXVl
dWU6Omluc3RhbGwoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgU1dTZXJ2ZXI6
OkNvbgogfQogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jaW5zdGFs
bCAoYWZ0ZXIgcmVzb2x2aW5nIHByb21pc2UpLgotdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpkaWRS
ZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShTV1NlcnZlcjo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
bikKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2Uo
KQogewogICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fc2VydmVyLmdldFJlZ2lzdHJhdGlvbiht
X3JlZ2lzdHJhdGlvbktleSk7CiAgICAgQVNTRVJUKHJlZ2lzdHJhdGlvbik7CkBAIC0xMzYsMTEg
KzEzNiwxMiBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OmRpZFJlc29sdmVSZWdpc3RyYXRpb25Q
cm9taXNlKFNXU2VydmVyOjpDb25uZWN0aW9uJiBjb25uZQogICAgIHJlZ2lzdHJhdGlvbi0+Zmly
ZVVwZGF0ZUZvdW5kRXZlbnQoKTsKIAogICAgIC8vIFF1ZXVlIGEgdGFzayB0byBmaXJlIHRoZSBJ
bnN0YWxsRXZlbnQuCi0gICAgbV9zZXJ2ZXIuZmlyZUluc3RhbGxFdmVudChjb25uZWN0aW9uLCBy
ZWdpc3RyYXRpb24tPmluc3RhbGxpbmdXb3JrZXIoKS0+aWRlbnRpZmllcigpKTsKKyAgICBBU1NF
UlQocmVnaXN0cmF0aW9uLT5pbnN0YWxsaW5nV29ya2VyKCkpOworICAgIG1fc2VydmVyLmZpcmVJ
bnN0YWxsRXZlbnQoKnJlZ2lzdHJhdGlvbi0+aW5zdGFsbGluZ1dvcmtlcigpKTsKIH0KIAogLy8g
aHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI2luc3RhbGwKLXZvaWQgU1dTZXJ2
ZXJKb2JRdWV1ZTo6ZGlkRmluaXNoSW5zdGFsbChTV1NlcnZlcjo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNz
ZnVsKQordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpkaWRGaW5pc2hJbnN0YWxsKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkKIHsKICAgICBhdXRv
KiByZWdpc3RyYXRpb24gPSBtX3NlcnZlci5nZXRSZWdpc3RyYXRpb24obV9yZWdpc3RyYXRpb25L
ZXkpOwogICAgIEFTU0VSVChyZWdpc3RyYXRpb24pOwpAQCAtMTc5LDExICsxODAsMTEgQEAgdm9p
ZCBTV1NlcnZlckpvYlF1ZXVlOjpkaWRGaW5pc2hJbnN0YWxsKFNXU2VydmVyOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBTZXJ2aWMKICAgICBmaW5pc2hDdXJyZW50Sm9iKCk7CiAKICAgICAvLyBG
SVhNRTogV2FpdCBmb3IgYWxsIHRoZSB0YXNrcyBxdWV1ZWQgYnkgVXBkYXRlIFdvcmtlciBTdGF0
ZSBpbnZva2VkIGluIHRoaXMgYWxnb3JpdGhtIGhhdmUgZXhlY3V0ZWQuCi0gICAgdHJ5QWN0aXZh
dGUobV9zZXJ2ZXIsIGNvbm5lY3Rpb24sICpyZWdpc3RyYXRpb24pOworICAgIHRyeUFjdGl2YXRl
KG1fc2VydmVyLCAqcmVnaXN0cmF0aW9uKTsKIH0KIAogLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L1NlcnZpY2VXb3JrZXIvI3RyeS1hY3RpdmF0ZS1hbGdvcml0aG0KLXZvaWQgU1dTZXJ2ZXJKb2JR
dWV1ZTo6dHJ5QWN0aXZhdGUoU1dTZXJ2ZXImIHNlcnZlciwgU1dTZXJ2ZXI6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24pCit2b2lkIFNX
U2VydmVySm9iUXVldWU6OnRyeUFjdGl2YXRlKFNXU2VydmVyJiBzZXJ2ZXIsIFNXU2VydmVyUmVn
aXN0cmF0aW9uJiByZWdpc3RyYXRpb24pCiB7CiAgICAgLy8gSWYgcmVnaXN0cmF0aW9uJ3Mgd2Fp
dGluZyB3b3JrZXIgaXMgbnVsbCwgcmV0dXJuLgogICAgIGlmICghcmVnaXN0cmF0aW9uLndhaXRp
bmdXb3JrZXIoKSkKQEAgLTE5OCwxMSArMTk5LDExIEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6
dHJ5QWN0aXZhdGUoU1dTZXJ2ZXImIHNlcnZlciwgU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mIGNvbm5l
CiAgICAgLy8gICBhbmQgbm8gc2VydmljZSB3b3JrZXIgY2xpZW50IGlzIHVzaW5nIHJlZ2lzdHJh
dGlvbgogICAgIC8vIEZJWE1FOiBDaGVjayBmb3IgdGhlIHNraXAgd2FpdGluZyBmbGFnLgogICAg
IGlmICghcmVnaXN0cmF0aW9uLmFjdGl2ZVdvcmtlcigpIHx8ICFyZWdpc3RyYXRpb24uYWN0aXZl
V29ya2VyKCktPmhhc1BlbmRpbmdFdmVudHMoKSkKLSAgICAgICAgYWN0aXZhdGUoc2VydmVyLCBj
b25uZWN0aW9uLCByZWdpc3RyYXRpb24pOworICAgICAgICBhY3RpdmF0ZShzZXJ2ZXIsIHJlZ2lz
dHJhdGlvbik7CiB9CiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNh
Y3RpdmF0ZQotdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjphY3RpdmF0ZShTV1NlcnZlciYgc2VydmVy
LCBTV1NlcnZlcjo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24m
IHJlZ2lzdHJhdGlvbikKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6YWN0aXZhdGUoU1dTZXJ2ZXIm
IHNlcnZlciwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbikKIHsKICAgICAvLyBJ
ZiByZWdpc3RyYXRpb24ncyB3YWl0aW5nIHdvcmtlciBpcyBudWxsLCBhYm9ydCB0aGVzZSBzdGVw
cy4KICAgICBpZiAoIXJlZ2lzdHJhdGlvbi53YWl0aW5nV29ya2VyKCkpCkBAIC0yMjYsNyArMjI3
LDggQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjphY3RpdmF0ZShTV1NlcnZlciYgc2VydmVyLCBT
V1NlcnZlcjo6Q29ubmVjdGlvbiYgY29ubmVjdGkKICAgICAvLyBGSVhNRTogSW52b2tlIFJ1biBT
ZXJ2aWNlIFdvcmtlciBhbGdvcml0aG0gd2l0aCBhY3RpdmVXb3JrZXIgYXMgdGhlIGFyZ3VtZW50
LgogCiAgICAgLy8gUXVldWUgYSB0YXNrIHRvIGZpcmUgdGhlIGFjdGl2YXRlIGV2ZW50LgotICAg
IHNlcnZlci5maXJlQWN0aXZhdGVFdmVudChjb25uZWN0aW9uLCByZWdpc3RyYXRpb24uYWN0aXZl
V29ya2VyKCktPmlkZW50aWZpZXIoKSk7CisgICAgQVNTRVJUKHJlZ2lzdHJhdGlvbi5hY3RpdmVX
b3JrZXIoKSk7CisgICAgc2VydmVyLmZpcmVBY3RpdmF0ZUV2ZW50KCpyZWdpc3RyYXRpb24uYWN0
aXZlV29ya2VyKCkpOwogfQogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtl
ci8jYWN0aXZhdGUgKHBvc3QgYWN0aXZhdGUgZXZlbnQgc3RlcHMpLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuaApp
bmRleCAyZjc3YjA5N2YyMTY2ZTFiNjgyYTI5YjFjNzdlMjE0ZWQ3YWU1ZTg0Li4zMTBkMThiM2Iw
MTM0ZjI5MTI1YTlmODYzMGViNDgxZTRhYjVhZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuaApAQCAtNDgs
MTEgKzQ4LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHJ1bk5leHRKb2IoKTsKIAogICAgIHZvaWQg
c2NyaXB0RmV0Y2hGaW5pc2hlZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VX
b3JrZXJGZXRjaFJlc3VsdCYpOwotICAgIHZvaWQgc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQo
U1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKTsKLSAgICB2b2lkIHNjcmlwdENvbnRleHRTdGFydGVkKFNXU2VydmVyOjpD
b25uZWN0aW9uJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAgIHZvaWQgZGlkRmluaXNo
SW5zdGFsbChTV1NlcnZlcjo6Q29ubmVjdGlvbiYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBi
b29sIHdhc1N1Y2Nlc3NmdWwpOworICAgIHZvaWQgc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQo
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9p
ZCBzY3JpcHRDb250ZXh0U3RhcnRlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisgICAgdm9p
ZCBkaWRGaW5pc2hJbnN0YWxsKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nl
c3NmdWwpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oU1dTZXJ2ZXJSZWdp
c3RyYXRpb24mLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgdm9pZCBkaWRSZXNvbHZl
UmVnaXN0cmF0aW9uUHJvbWlzZShTV1NlcnZlcjo6Q29ubmVjdGlvbiYpOworICAgIHZvaWQgZGlk
UmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGpvYlRp
bWVyRmlyZWQoKTsKQEAgLTY2LDkgKzY2LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdHJ5Q2xl
YXJSZWdpc3RyYXRpb24oU1dTZXJ2ZXJSZWdpc3RyYXRpb24mKTsKICAgICB2b2lkIGNsZWFyUmVn
aXN0cmF0aW9uKFNXU2VydmVyUmVnaXN0cmF0aW9uJik7Ci0gICAgdm9pZCBpbnN0YWxsKFNXU2Vy
dmVyUmVnaXN0cmF0aW9uJiwgU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBTZXJ2aWNlV29ya2VySWRl
bnRpZmllcik7Ci0gICAgc3RhdGljIHZvaWQgdHJ5QWN0aXZhdGUoU1dTZXJ2ZXImLCBTV1NlcnZl
cjo6Q29ubmVjdGlvbiYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJik7Ci0gICAgc3RhdGljIHZvaWQg
YWN0aXZhdGUoU1dTZXJ2ZXImLCBTV1NlcnZlcjo6Q29ubmVjdGlvbiYsIFNXU2VydmVyUmVnaXN0
cmF0aW9uJik7CisgICAgdm9pZCBpbnN0YWxsKFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIpOworICAgIHN0YXRpYyB2b2lkIHRyeUFjdGl2YXRlKFNXU2VydmVy
JiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mKTsKKyAgICBzdGF0aWMgdm9pZCBhY3RpdmF0ZShTV1Nl
cnZlciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJik7CiAKICAgICBEZXF1ZTxTZXJ2aWNlV29ya2Vy
Sm9iRGF0YT4gbV9qb2JRdWV1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcAppbmRleCBm
NzNiZWZlY2I0MzYyMmEwYjdkMDkyNDUwZWRlZjk2MmU4NDZhZjcwLi43MzI3Nzk3YjgwNmQ0YjI4
NTM5MmM1ODFhOTVhMTljZWIzMmRjMWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcApA
QCAtMzcsOCArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBnZW5lcmF0ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyKCkKIHsKLSAgICBzdGF0aWMgdWludDY0X3QgaWRlbnRpZmllciA9IDA7Ci0g
ICAgcmV0dXJuIG1ha2VPYmplY3RJZGVudGlmaWVyPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyVHlwZT4oKytpZGVudGlmaWVyKTsKKyAgICByZXR1cm4gZ2VuZXJhdGVPYmplY3RJ
ZGVudGlmaWVyPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyVHlwZT4oKTsKIH0K
IAogU1dTZXJ2ZXJSZWdpc3RyYXRpb246OlNXU2VydmVyUmVnaXN0cmF0aW9uKFNXU2VydmVyJiBz
ZXJ2ZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIGtleSwgU2VydmljZVdv
cmtlclVwZGF0ZVZpYUNhY2hlIHVwZGF0ZVZpYUNhY2hlLCBjb25zdCBVUkwmIHNjb3BlVVJMLCBj
b25zdCBVUkwmIHNjcmlwdFVSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zZmUwMTBmNzFmYmRlZTJlMDBlMjljNmY5YTJkNDg2NTIxOTE4MDRk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTA3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSAi
U1dTZXJ2ZXIuaCIKKyNpbmNsdWRlICJTV1NlcnZlcldvcmtlci5oIgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyIGdlbmVyYXRlU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbklkZW50aWZpZXIoKQoreworICAgIHJldHVybiBnZW5lcmF0ZU9iamVjdElkZW50aWZp
ZXI8U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllclR5cGU+KCk7Cit9CisKK3N0
YXRpYyBIYXNoTWFwPFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIsIFNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbio+JiBhbGxDb25uZWN0aW9ucygpCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRp
ZmllciwgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4+IGNvbm5lY3Rpb25zOworICAgIHJl
dHVybiBjb25uZWN0aW9uczsKK30KKworU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQorICAgIDogbV9pZGVudGlmaWVyKGdlbmVyYXRlU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIoKSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9
IGFsbENvbm5lY3Rpb25zKCkuYWRkKG1faWRlbnRpZmllciwgdGhpcyk7CisgICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKK30KKworU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjp+U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkKK3sKKyAgICBhdXRvIHJl
c3VsdCA9IGFsbENvbm5lY3Rpb25zKCkucmVtb3ZlKG1faWRlbnRpZmllcik7CisgICAgQVNTRVJU
X1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
biogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9ySWRlbnRpZmllcihT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAg
cmV0dXJuIGFsbENvbm5lY3Rpb25zKCkuZ2V0KGlkZW50aWZpZXIpOworfQorCitTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24qIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Z2xvYmFsU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbigpCit7CisgICAgaWYgKGFsbENvbm5lY3Rpb25zKCkuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAgICBBU1NFUlQoYWxsQ29u
bmVjdGlvbnMoKS5zaXplKCkgPT0gMSk7CisgICAgcmV0dXJuIGFsbENvbm5lY3Rpb25zKCkuYmVn
aW4oKS0+dmFsdWU7Cit9CisKK3ZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzY3Jp
cHRDb250ZXh0RmFpbGVkVG9TdGFydChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGlmIChhdXRvKiB3
b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKSkKKyAgICAgICAgd29ya2VyLT5zY3JpcHRDb250ZXh0RmFpbGVk
VG9TdGFydChtZXNzYWdlKTsKK30KKwordm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OnNjcmlwdENvbnRleHRTdGFydGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvKiB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6
ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkKKyAg
ICAgICAgd29ya2VyLT5zY3JpcHRDb250ZXh0U3RhcnRlZCgpOworfQorICAgIAordm9pZCBTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZEZpbmlzaEluc3RhbGwoU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkKK3sK
KyAgICBpZiAoYXV0byogd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9y
SWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpCisgICAgICAgIHdvcmtlci0+ZGlk
RmluaXNoSW5zdGFsbCh3YXNTdWNjZXNzZnVsKTsKK30KKwordm9pZCBTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OmRpZEZpbmlzaEFjdGl2YXRpb24oU2VydmljZVdvcmtlcklkZW50aWZpZXIg
c2VydmljZVdvcmtlcklkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8qIHdvcmtlciA9IFNXU2Vy
dmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50
aWZpZXIpKQorICAgICAgICB3b3JrZXItPmRpZEZpbmlzaEFjdGl2YXRpb24oKTsKK30KKwordm9p
ZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5n
RXZlbnRzKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBi
b29sIGhhc1BlbmRpbmdFdmVudHMpCit7CisgICAgaWYgKGF1dG8qIHdvcmtlciA9IFNXU2VydmVy
V29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZp
ZXIpKQorICAgICAgICB3b3JrZXItPnNldEhhc1BlbmRpbmdFdmVudHMoaGFzUGVuZGluZ0V2ZW50
cyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjI0YTU0NmNkYWRiMGZkN2NmMjlmOThiN2I4ZDZlMDY0NTcxNjMwZDUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCisjaW5j
bHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgU1dTZXJ2ZXI7CitzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOworCitj
bGFzcyBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiB7CitwdWJsaWM6CisgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB+U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7CisKKyAgICBT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworICAgIC8vIE1lc3NhZ2VzIHRvIHRoZSBTVyBob3N0
IHByb2Nlc3MKKyAgICB2aXJ0dWFsIHZvaWQgaW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KGNv
bnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmly
ZUluc3RhbGxFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOworCisg
ICAgLy8gTWVzc2FnZXMgYmFjayBmcm9tIHRoZSBTVyBob3N0IHByb2Nlc3MKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2NyaXB0Q29udGV4dFN0YXJ0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZGlkRmluaXNoSW5zdGFsbChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
Ym9vbCB3YXNTdWNjZXNzZnVsKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEZpbmlzaEFj
dGl2YXRpb24oU2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHMoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGJvb2wgaGFzUGVuZGluZ0V2ZW50cyk7CisKKyAgICBzdGF0aWMgU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uKiBjb25uZWN0aW9uRm9ySWRlbnRpZmllcihTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25JZGVudGlmaWVyKTsKKworICAgIC8vIEZJWE1FOiBXaGlsZSB3ZSBvbmx5IGV2ZXIg
aGF2ZSBvbmUgU1cgY29udGV4dCBwcm9jZXNzIHRoaXMgbWV0aG9kIG1ha2VzIHNlbnNlLgorICAg
IC8vIE9uY2Ugd2UgaGF2ZSBtdWx0aXBsZSBvbmVzIHRoaXMgbWV0aG9kIHNob3VsZCBnbyBhd2F5
IGZvcmNpbmcgdXNlIG9mIGNvbm5lY3Rpb25Gb3JJZGVudGlmaWVyKCkKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBnbG9iYWxTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKCk7CisKK3Byb3RlY3RlZDoKKyAgICBXRUJDT1JFX0VYUE9SVCBTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKKworcHJpdmF0ZToKKyAgICBTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25JZGVudGlmaWVyIG1faWRlbnRpZmllcjsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtl
ci5jcHAKaW5kZXggMTI1YTI2NGY1N2NlNTBmMDU2NmJjMjlhYjcyMmRmNTgxYjQ2YmUyZi4uNWJi
MjMwY2ZmMDcwZGNmYjQxNTE3NWE4MDRkZGM4YTc0OTQwOWFmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAK
QEAgLTI4LDI0ICsyOCw2NSBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1dT
ZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0LCBXb3JrZXJUeXBlIHR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIp
Ci0gICAgOiBtX3JlZ2lzdHJhdGlvbktleShyZWdpc3RyYXRpb25LZXkpCitzdGF0aWMgSGFzaE1h
cDxTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU1dTZXJ2ZXJXb3JrZXIqPiYgYWxsV29ya2Vycygp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8U2VydmljZVdvcmtlcklkZW50
aWZpZXIsIFNXU2VydmVyV29ya2VyKj4+IHdvcmtlcnM7CisgICAgcmV0dXJuIHdvcmtlcnM7Cit9
CisKK1NXU2VydmVyV29ya2VyKiBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVu
dGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgcmV0dXJu
IGFsbFdvcmtlcnMoKS5nZXQoaWRlbnRpZmllcik7Cit9CisKK1NXU2VydmVyV29ya2VyOjpTV1Nl
cnZlcldvcmtlcihTV1NlcnZlciYgc2VydmVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50
aWZpZXIgY29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBzY3JpcHQsIFdvcmtlclR5cGUgdHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIg
aWRlbnRpZmllcikKKyAgICA6IG1fc2VydmVyKHNlcnZlcikKKyAgICAsIG1fcmVnaXN0cmF0aW9u
S2V5KHJlZ2lzdHJhdGlvbktleSkKKyAgICAsIG1fY29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVy
KGNvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcikKICAgICAsIG1fc2NyaXB0VVJMKHVybCkKICAg
ICAsIG1fc2NyaXB0KHNjcmlwdCkKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAg
ICwgbV90eXBlKHR5cGUpCiB7CisgICAgYXV0byByZXN1bHQgPSBhbGxXb3JrZXJzKCkuYWRkKGlk
ZW50aWZpZXIsIHRoaXMpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdF
bnRyeSk7CiB9CiAKLVNXU2VydmVyV29ya2VyOjp+U1dTZXJ2ZXJXb3JrZXIoKSA9IGRlZmF1bHQ7
CitTV1NlcnZlcldvcmtlcjo6flNXU2VydmVyV29ya2VyKCkKK3sKKyAgICBhdXRvIHRha2VuID0g
YWxsV29ya2VycygpLnRha2UobV9pZGVudGlmaWVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHRha2Vu
LCB0YWtlbiA9PSB0aGlzKTsKK30KIAogdm9pZCBTV1NlcnZlcldvcmtlcjo6dGVybWluYXRlKCkK
IHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50CiB9CiAKK3ZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnNj
cmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBt
X3NlcnZlci5zY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydCgqdGhpcywgbWVzc2FnZSk7Cit9CisK
K3ZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnNjcmlwdENvbnRleHRTdGFydGVkKCkKK3sKKyAgICBtX3Nl
cnZlci5zY3JpcHRDb250ZXh0U3RhcnRlZCgqdGhpcyk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXJXb3Jr
ZXI6OmRpZEZpbmlzaEluc3RhbGwoYm9vbCB3YXNTdWNjZXNzZnVsKQoreworICAgIG1fc2VydmVy
LmRpZEZpbmlzaEluc3RhbGwoKnRoaXMsIHdhc1N1Y2Nlc3NmdWwpOworfQorCit2b2lkIFNXU2Vy
dmVyV29ya2VyOjpkaWRGaW5pc2hBY3RpdmF0aW9uKCkKK3sKKyAgICBtX3NlcnZlci5kaWRGaW5p
c2hBY3RpdmF0aW9uKCp0aGlzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCmluZGV4IDFhNjgxZWIyOWNl
ODViNTkwM2M3YTQxZDk3YTA0NGE4YjRhZDBhMzUuLjM4YjBiNDdhY2U3OGJhYzE5YWEyNDk3MzBi
MDU2OWI0NzRkYmRmMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKQEAgLTM1LDEzICszNSwxNCBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNXU2VydmVyOwogZW51bSBjbGFzcyBXb3JrZXJUeXBl
OwogCiBjbGFzcyBTV1NlcnZlcldvcmtlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxT
V1NlcnZlcldvcmtlcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U1dTZXJ2ZXJXb3JrZXI+
IGNyZWF0ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25L
ZXksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgV29ya2VyVHlwZSB0eXBl
LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIHRlbXBsYXRlIDx0eXBl
bmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmPFNXU2VydmVyV29ya2VyPiBjcmVhdGUoQXJncyYmLi4u
IGFyZ3MpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTV1NlcnZlcldvcmtl
cihyZWdpc3RyYXRpb25LZXksIHVybCwgc2NyaXB0LCB0eXBlLCBpZGVudGlmaWVyKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNXU2VydmVyV29ya2VyKHN0ZDo6Zm9yd2FyZDxBcmdz
PihhcmdzKS4uLikpOwogICAgIH0KICAgICAKICAgICBTV1NlcnZlcldvcmtlcihjb25zdCBTV1Nl
cnZlcldvcmtlciYpID0gZGVsZXRlOwpAQCAtNDksMTEgKzUwLDE0IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgdGVybWluYXRlKCk7CiAKKyAgICBTV1NlcnZlciYgc2VydmVyKCk7CisgICAgY29uc3Qg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWdpc3RyYXRpb25LZXk7IH0KICAgICBjb25zdCBVUkwmIHNjcmlwdFVSTCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2NyaXB0VVJMOyB9CiAgICAgY29uc3QgU3RyaW5nJiBzY3JpcHQoKSBj
b25zdCB7IHJldHVybiBtX3NjcmlwdDsgfQogICAgIFdvcmtlclR5cGUgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZTsgfQogCiAgICAgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIFNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbklkZW50aWZpZXIgY29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9jb250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXI7IH0KIAogICAgIFNlcnZpY2VX
b3JrZXJTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KICAgICB2b2lkIHNl
dFN0YXRlKFNlcnZpY2VXb3JrZXJTdGF0ZSBzdGF0ZSkgeyBtX3N0YXRlID0gc3RhdGU7IH0KQEAg
LTYxLDEwICs2NSwxOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKCkgY29u
c3QgeyByZXR1cm4gbV9oYXNQZW5kaW5nRXZlbnRzOyB9CiAgICAgdm9pZCBzZXRIYXNQZW5kaW5n
RXZlbnRzKGJvb2wgdmFsdWUpIHsgbV9oYXNQZW5kaW5nRXZlbnRzID0gdmFsdWU7IH0KIAorICAg
IHZvaWQgc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsK
KyAgICB2b2lkIHNjcmlwdENvbnRleHRTdGFydGVkKCk7CisgICAgdm9pZCBkaWRGaW5pc2hJbnN0
YWxsKGJvb2wgd2FzU3VjY2Vzc2Z1bCk7CisgICAgdm9pZCBkaWRGaW5pc2hBY3RpdmF0aW9uKCk7
CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU1dTZXJ2ZXJXb3JrZXIqIGV4aXN0aW5nV29y
a2VyRm9ySWRlbnRpZmllcihTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisKIHByaXZhdGU6Ci0g
ICAgU1dTZXJ2ZXJXb3JrZXIoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNv
bnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcik7CisgICAgU1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImLCBjb25zdCBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRp
ZmllciwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIFdvcmtlclR5cGUsIFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKTsKIAorICAgIFNXU2VydmVyJiBtX3NlcnZlcjsKICAgICBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IG1fcmVnaXN0cmF0aW9uS2V5OworICAgIFNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgbV9jb250ZXh0Q29ubmVjdGlvbklkZW50aWZp
ZXI7CiAgICAgVVJMIG1fc2NyaXB0VVJMOwogICAgIFN0cmluZyBtX3NjcmlwdDsKICAgICBTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1h
a2UKaW5kZXggNDM5YjFlZThmODliMmNiMmRlNjZiMDIwOWZhMzBkYjM5N2NkMWE2OS4uZDcyMWMw
YjE4Y2ExYjFmOTMwNDYyM2QwNjRiMDQ2NmRhMmQ1ZjRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMubWFrZQpAQCAtMTY0LDYgKzE2NCw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFdl
YlNXQ2xpZW50Q29ubmVjdGlvbiBcCiAgICAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24g
XAogICAgIFdlYlNXU2VydmVyQ29ubmVjdGlvbiBcCisgICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uIFwKICAgICBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyIFwKICAgICBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkgXAogICAgIFdlYlByb2Nlc3MgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA5OGQ5N2FkZmM4NGI3MWY0Yjg3MGZm
NmZkOWZhNjQ1ODJkNjZkOGRmLi5lOTljYjZkZDgxZmE2MzljNmFjYWQ2MjVhM2RkMmU5ZmZkMGU3
YzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApA
QCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1N0b3JlZENyZWRlbnRpYWxzUG9saWN5Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9Xb3JrZXJUeXBlLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTW9ub3RvbmljVGltZTsK
QEAgLTc5Nyw2ICs3OTgsMTQgQEAgdGVtcGxhdGUgPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29y
ZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k+IHsKICAgICA+OwogfTsKIAordGVtcGxhdGUgPD4g
c3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6V29ya2VyVHlwZT4geworICAgIHVzaW5nIHZhbHVl
cyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OldvcmtlclR5cGUsCisgICAgICAgIFdl
YkNvcmU6OldvcmtlclR5cGU6OkNsYXNzaWMsCisgICAgICAgIFdlYkNvcmU6OldvcmtlclR5cGU6
Ok1vZHVsZQorICAgID47Cit9OworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogdGVtcGxh
dGUgPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6U2VydmljZVdvcmtlclVwZGF0ZVZpYUNh
Y2hlPiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNmE4YjMzMDA3MjQ0ODY3ZjRjY2U3OGM5ZTgzNWU0
NTk3NTQzY2VkOS4uMGVjMzRkYjgxMTI4NDk0ODcwYTQ2ZGQ3YmM3OTRjYmE0NzQ4NTRjNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTM4LDYgKzM4LDcgQEAK
ICNpbmNsdWRlICJXZWJTV0NsaWVudENvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV1Nl
cnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9O
b3RJbXBsZW1lbnRlZC5oPgpAQCAtMTA0LDI0ICsxMDUsNiBAQCB2b2lkIFdlYlNXU2VydmVyQ29u
bmVjdGlvbjo6dXBkYXRlV29ya2VyU3RhdGVJbkNsaWVudChTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciB3bwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6VXBkYXRlV29y
a2VyU3RhdGUod29ya2VyLCBzdGF0ZSkpOwogfQogCi12b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlv
bjo6aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSYgZGF0YSkKLXsKLSAgICBpZiAoc2VuZFRvQ29udGV4dFByb2Nlc3MoTWVzc2FnZXM6Oldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpJbnN0YWxsU2VydmljZVdvcmtlcihpZGVudGlm
aWVyKCksIGRhdGEpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wZW5kaW5nQ29udGV4dERh
dGFzLmFwcGVuZChkYXRhKTsKLX0KLQotdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmZpcmVJ
bnN0YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIpCi17Ci0gICAgc2VuZFRvQ29udGV4dFByb2Nlc3MoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uOjpGaXJlSW5zdGFsbEV2ZW50KGlkZW50aWZpZXIoKSwgc2VydmljZVdv
cmtlcklkZW50aWZpZXIpKTsKLX0KLQotdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmZpcmVB
Y3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKQotewotICAgIHNlbmRUb0NvbnRleHRQcm9jZXNzKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6RmlyZUFjdGl2YXRlRXZlbnQoaWRlbnRpZmllcigpLCBzZXJ2aWNl
V29ya2VySWRlbnRpZmllcikpOwotfQotCiB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3Rh
cnRGZXRjaCh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdv
cmtlcklkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBzZW5k
VG9Db250ZXh0UHJvY2VzcyhNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OlN0YXJ0RmV0Y2goaWRlbnRpZmllcigpLCBmZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRpb25zKSk7CkBAIC0xNzIsMjUgKzE1NSwxMiBAQCB2b2lk
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6bWF0Y2hSZWdpc3RyYXRpb24odWludDY0X3QgcmVnaXN0
cmF0aW9uTWF0Y2hSZXF1ZXN0SQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVj
dGlvbjo6RGlkTWF0Y2hSZWdpc3RyYXRpb24geyByZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVu
dGlmaWVyLCBzdGQ6Om51bGxvcHQgfSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wg
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzZW5kVG9Db250ZXh0UHJvY2VzcyhVJiYgbWVzc2FnZSkK
K3RlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzZW5kVG9D
b250ZXh0UHJvY2VzcyhVJiYgbWVzc2FnZSkKIHsKLSAgICBpZiAoIW1fY29udGV4dENvbm5lY3Rp
b24pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBtX2NvbnRleHRDb25uZWN0
aW9uLT5zZW5kPFU+KFdURk1vdmUobWVzc2FnZSksIDApOworICAgIGlmIChhdXRvKiBjb25uZWN0
aW9uID0gU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLmdsb2JhbFNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24oKSkKKyAgICAgICAgY29ubmVjdGlvbi0+c2VuZChXVEZNb3ZlKG1lc3NhZ2UpKTsK
IH0KIAotdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnNldENvbnRleHRDb25uZWN0aW9uKElQ
Qzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbikKLXsKLSAgICBtX2NvbnRleHRDb25uZWN0aW9uID0g
Y29ubmVjdGlvbjsKLQotICAgIC8vIFdlIGNhbiBub3cgc3RhcnQgYW55IHBlbmRpbmcgc2Vydmlj
ZSB3b3JrZXIgdXBkYXRlcy4KLSAgICBmb3IgKGF1dG8mIHBlbmRpbmdDb250ZXh0RGF0YSA6IG1f
cGVuZGluZ0NvbnRleHREYXRhcykKLSAgICAgICAgaW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0
KHBlbmRpbmdDb250ZXh0RGF0YSk7Ci0gICAgCi0gICAgbV9wZW5kaW5nQ29udGV4dERhdGFzLmNs
ZWFyKCk7Ci19Ci0gICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAppbmRl
eCA3ZjFjZDUxZWNmMTNkYWU2NGYyZDA1YjI2Y2VkYjZkMzU2ODQ5YzRkLi5iODBiM2JmZDQ3Y2Ex
MjEwNTI3MDQ5MzFmNzMxYjVlYTA5Nzg0NDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29u
bmVjdGlvbi5oCkBAIC00Niw3ICs0Niw2IEBAIHB1YmxpYzoKICAgICB+V2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uKCkgZmluYWw7CiAKICAgICB2b2lkIGRpc2Nvbm5lY3RlZEZyb21XZWJQcm9jZXNzKCk7
Ci0gICAgdm9pZCBzZXRDb250ZXh0Q29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qKTsKICAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZp
bmFsOwogCiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9z
ZXNzaW9uSUQ7IH0KQEAgLTc1LDIyICs3NCwxNSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBtYXRj
aFJlZ2lzdHJhdGlvbih1aW50NjRfdCByZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpVUkwm
IGNsaWVudFVSTCk7CiAKLSAgICAvLyBNZXNzYWdlcyB0byB0aGUgU1cgY29udGV4dCBXZWJQcm9j
ZXNzCi0gICAgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViQ29yZTo6
U2VydmljZVdvcmtlckNvbnRleHREYXRhJikgZmluYWw7Ci0gICAgdm9pZCBmaXJlSW5zdGFsbEV2
ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2b2lkIGZp
cmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsK
LQogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBmaW5hbCB7
IHJldHVybiBtX2NvbnRlbnRDb25uZWN0aW9uLnB0cigpOyB9CiAgICAgdWludDY0X3QgbWVzc2Fn
ZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBmaW5hbCB7IHJldHVybiBpZGVudGlmaWVyKCk7IH0KLQot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1l
c3NhZ2UpOwogICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgc2VuZFRvQ29udGV4
dFByb2Nlc3MoVSYmIG1lc3NhZ2UpOworCiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7
CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2NvbnRlbnRDb25uZWN0aW9uOwogICAgIFJl
ZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29udGV4dENvbm5lY3Rpb247Ci0gICAgCi0gICAgRGVx
dWU8V2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBtX3BlbmRpbmdDb250ZXh0RGF0
YXM7CiB9OyAvLyBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb24KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI4MmVmMzUzYTZjYjI1NTFhMjg3YmZjN2EzYmVlMWUxYWQzNjli
YWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDc2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQor
CisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1l
c3BhY2UgV2ViS2l0IHsKKworV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9u
KQorICAgIDogbV9pcGNDb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCit7Cit9CisKK0lQ
Qzo6Q29ubmVjdGlvbiogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlU2Vu
ZGVyQ29ubmVjdGlvbigpCit7CisgICAgcmV0dXJuIG1faXBjQ29ubmVjdGlvbi5wdHIoKTsKK30K
KwordWludDY0X3QgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVy
RGVzdGluYXRpb25JRCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uQ2xvc2VkKCkKK3sKKyAgICAvLyBGSVhNRTog
RG8gd2hhdCBoZXJlLi4uPworfQorCit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSYgZGF0YSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6SW5zdGFsbFNlcnZpY2VXb3JrZXIoZGF0YSkpOworfQorCit2b2lkIFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZmlyZUluc3RhbGxFdmVudChTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6RmlyZUluc3RhbGxFdmVudChzZXJ2aWNlV29y
a2VySWRlbnRpZmllcikpOworfQorCit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6ZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtl
cklkZW50aWZpZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OkZpcmVBY3RpdmF0ZUV2ZW50KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg3Yjc2ZDJhOWMxNTU5M2E4MmJiYmUyN2FiNzUzNTBlNDcwNjNmNDMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw2OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gOiBw
dWJsaWMgV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpN
ZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAg
IHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmPFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKHN0ZDo6Zm9y
d2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgIH0KKworICAgIHZvaWQgY29ubmVjdGlvbkNsb3Nl
ZCgpOworCisgICAgSVBDOjpDb25uZWN0aW9uKiBpcGNDb25uZWN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9pcGNDb25uZWN0aW9uLnB0cigpOyB9CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
cgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgZmluYWw7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYpOworCisgICAgLy8gSVBDOjpNZXNz
YWdlU2VuZGVyCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigp
IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgZmluYWw7
CisKKyAgICAvLyBNZXNzYWdlcyB0byB0aGUgU1cgaG9zdCBXZWJQcm9jZXNzCisgICAgdm9pZCBp
bnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNv
bnRleHREYXRhJikgZmluYWw7CisgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKKyAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKKyAgICAKKyAgICBSZWY8
SVBDOjpDb25uZWN0aW9uPiBtX2lwY0Nvbm5lY3Rpb247CisgICAgCit9OyAvLyBjbGFzcyBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjlkYzhjMTYzYjQxMDdmOThiMTY5ZDVmMzVmYWY4MTUxZmE2ZGQ1NWQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzUgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKKworbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIHsK
KyAgICAjIFdoZW4gcG9zc2libGUsIHRoZXNlIG1lc3NhZ2VzIGNhbiBiZSBpbXBsZW1lbnRlZCBk
aXJlY3RseSBieSBXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24KKworICAgIFNj
cmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFN0cmluZyBtZXNzYWdlKTsKKyAgICBTY3JpcHRDb250ZXh0U3RhcnRlZChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKTsKKyAgICBEaWRGaW5p
c2hJbnN0YWxsKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJv
b2wgd2FzU3VjY2Vzc2Z1bCk7CisgICAgRGlkRmluaXNoQWN0aXZhdGlvbihXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKTsKKyAgICBTZXRTZXJ2aWNlV29ya2VySGFz
UGVuZGluZ0V2ZW50cyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKTsKK30KKworI2VuZGlmIC8vIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
dG9yYWdlUHJvY2Vzcy5jcHAKaW5kZXggYjRjZjhlOWM3ZThjODBhNGRhNGY5ZmU3ZDEyYTJjMGU3
NGRiOTlkZi4uNmYxM2ViZmRmMDhlNDUxMmQyMzZhMjVlNTI1NTFiYTgxODI0N2U3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKQEAgLTMz
LDEwICszMywxMiBAQAogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1
ZGUgIldlYlNXT3JpZ2luU3RvcmUuaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb24u
aCIKKyNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKICNpbmNsdWRl
ICJXZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvSURCS2V5RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50
ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NXU2VydmVyV29ya2VyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgpAQCAt
NDQsNiArNDYsMTAgQEAKICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRUYXNrLmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyNpbmNs
dWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2VuZGlmCisK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTc5LDgg
Kzg1LDkgQEAgYm9vbCBTdG9yYWdlUHJvY2Vzczo6c2hvdWxkVGVybWluYXRlKCkKIHZvaWQgU3Rv
cmFnZVByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKG1fd29ya2VyQ29udGV4dFByb2Nlc3ND
b25uZWN0aW9uID09ICZjb25uZWN0aW9uKSB7Ci0gICAgICAgIG1fd29ya2VyQ29udGV4dFByb2Nl
c3NDb25uZWN0aW9uID0gbnVsbHB0cjsKKyAgICBpZiAobV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uICYmIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+aXBjQ29ubmVjdGlvbigpID09ICZj
b25uZWN0aW9uKSB7CisgICAgICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+Y29ubmVj
dGlvbkNsb3NlZCgpOworICAgICAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gPSBudWxs
cHRyOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2Vsc2UKQEAgLTk4LDYgKzEwNSwxNiBAQCB2
b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIElQQzo6RGVjb2RlcgogICAgICAgICBkaWRSZWNlaXZlU3RvcmFnZVByb2Nlc3NN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHN3Q29ubmVjdGlvbiA9IFNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Z2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bigpKSB7CisgICAgICAgICAgICBhdXRvKiB3ZWJTV0Nvbm5lY3Rpb24gPSBzdGF0aWNfY2FzdDxX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qPihzd0Nvbm5lY3Rpb24pOworICAgICAgICAg
ICAgd2ViU1dDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsKKyAgICAgICAgICAgIHJldHVybjsgICAgICAgIAorICAgICAgICB9CisgICAgfQorI2VuZGlm
CiB9CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKQEAgLTM1MywyNCArMzcwLDI0IEBA
IFdlYlNXT3JpZ2luU3RvcmUmIFN0b3JhZ2VQcm9jZXNzOjpzd09yaWdpblN0b3JlRm9yU2Vzc2lv
bihQQUw6OlNlc3Npb25JRCBzZXNzaW9uCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYlNXT3Jp
Z2luU3RvcmUmPihzd1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklEKS5vcmlnaW5TdG9yZSgpKTsK
IH0KIAotSVBDOjpDb25uZWN0aW9uKiBTdG9yYWdlUHJvY2Vzczo6d29ya2VyQ29udGV4dFByb2Nl
c3NDb25uZWN0aW9uKCkKK1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogU3RvcmFnZVBy
b2Nlc3M6Omdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQogewotICAgIHJldHVybiBt
X3dvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbi5nZXQoKTsKKyAgICByZXR1cm4gbV9zZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmdldCgpOwogfQogCi12b2lkIFN0b3JhZ2VQcm9jZXNzOjpj
cmVhdGVXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oKQordm9pZCBTdG9yYWdlUHJvY2Vz
czo6Y3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpCiB7Ci0gICAgaWYgKG1fd2FpdGlu
Z0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbikKKyAgICBpZiAobV93YWl0aW5nRm9y
U2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKICAgICAK
LSAgICBtX3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPSB0cnVlOwor
ICAgIG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uID0gdHJ1ZTsK
ICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJv
Y2Vzc1Byb3h5OjpHZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oKSwgMCk7CiB9CiAK
IHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZEdldFdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlv
bihJUEM6OkF0dGFjaG1lbnQmJiBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAg
QVNTRVJUKG1fd2FpdGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbik7Ci0gICAg
bV93YWl0aW5nRm9yV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uID0gZmFsc2U7CisgICAg
QVNTRVJUKG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKTsKKyAg
ICBtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9IGZhbHNlOwog
CiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVu
dGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyID0gZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVy
LnJlbGVhc2VGaWxlRGVzY3JpcHRvcigpOwpAQCAtMzg1LDI1ICs0MDIsMTQgQEAgdm9pZCBTdG9y
YWdlUHJvY2Vzczo6ZGlkR2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKElQQzo6QXR0
YWNobWVudCYmIGVuY28KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fd29ya2VyQ29u
dGV4dFByb2Nlc3NDb25uZWN0aW9uID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVDbGllbnRDb25u
ZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCAqdGhpcyk7Ci0gICAgbV93b3JrZXJDb250ZXh0
UHJvY2Vzc0Nvbm5lY3Rpb24tPm9wZW4oKTsKKyAgICBhdXRvIGlwY0Nvbm5lY3Rpb24gPSBJUEM6
OkNvbm5lY3Rpb246OmNyZWF0ZUNsaWVudENvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIs
ICp0aGlzKTsKKyAgICBpcGNDb25uZWN0aW9uLT5vcGVuKCk7CisgICAgbV9zZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjcmVhdGUoV1RG
TW92ZShpcGNDb25uZWN0aW9uKSk7CiAgICAgCiAgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDog
bV9zdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbnMpCiAgICAgICAgIGNvbm5lY3Rpb24tPndv
cmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbkNyZWF0ZWQoKTsKIH0KIAotdm9pZCBTdG9yYWdl
UHJvY2Vzczo6c2VydmljZVdvcmtlckNvbnRleHRGYWlsZWRUb1N0YXJ0KHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
JiByZWdpc3RyYXRpb25LZXksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgaWYgKGF1dG8qIGNvbm5l
Y3Rpb24gPSBtX3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyKSkKLSAgICAgICAgY29ubmVjdGlvbi0+c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQocmVn
aXN0cmF0aW9uS2V5LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgbWVzc2FnZSk7Ci19Ci0KLXZv
aWQgU3RvcmFnZVByb2Nlc3M6OnNlcnZpY2VXb3JrZXJDb250ZXh0U3RhcnRlZCh1aW50NjRfdCBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSYgcmVnaXN0cmF0aW9uS2V5LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29y
a2VySWRlbnRpZmllcikKLXsKLSAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1fc3dTZXJ2ZXJD
b25uZWN0aW9ucy5nZXQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKQotICAgICAgICBjb25u
ZWN0aW9uLT5zY3JpcHRDb250ZXh0U3RhcnRlZChyZWdpc3RyYXRpb25LZXksIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKTsKLX0KLQogdm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlkRmFpbEZldGNoKHVp
bnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZp
ZXIpCiB7CiAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBtX3N3U2VydmVyQ29ubmVjdGlvbnMu
Z2V0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKQEAgLTQ0MCwyNSArNDQ2LDYgQEAgdm9p
ZCBTdG9yYWdlUHJvY2Vzczo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3Qg
U2VydmljZVdvcmtlckNsaWVudEkKICAgICAgICAgY29ubmVjdGlvbi0+cG9zdE1lc3NhZ2VUb1Nl
cnZpY2VXb3JrZXJDbGllbnQoZGVzdGluYXRpb25JZGVudGlmaWVyLnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4p
OwogfQogCi12b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaWRGaW5pc2hTZXJ2aWNlV29ya2VySW5zdGFs
bCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKQotewotICAgIGlm
IChhdXRvKiBjb25uZWN0aW9uID0gbV9zd1NlcnZlckNvbm5lY3Rpb25zLmdldChzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllcikpCi0gICAgICAgIGNvbm5lY3Rpb24tPmRpZEZpbmlzaEluc3RhbGwo
cmVnaXN0cmF0aW9uS2V5LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgd2FzU3VjY2Vzc2Z1bCk7
Ci19Ci0KLXZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZEZpbmlzaFNlcnZpY2VXb3JrZXJBY3RpdmF0
aW9uKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQotewotICAgIGlmIChhdXRvKiBjb25uZWN0aW9u
ID0gbV9zd1NlcnZlckNvbm5lY3Rpb25zLmdldChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikp
Ci0gICAgICAgIGNvbm5lY3Rpb24tPmRpZEZpbmlzaEFjdGl2YXRpb24ocmVnaXN0cmF0aW9uS2V5
LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci19Ci0KLQotdm9pZCBTdG9yYWdlUHJvY2Vzczo6
c2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHModWludDY0X3Qgc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBib29sIGhhc1BlbmRpbmdFdmVudHMpCi17Ci0gICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24g
PSBtX3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkK
LSAgICAgICAgY29ubmVjdGlvbi0+c2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHMoc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIGhhc1BlbmRpbmdFdmVudHMpOwotfQotCiB2b2lkIFN0b3Jh
Z2VQcm9jZXNzOjpyZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24pCiB7CiAgICAgQVNTRVJUKCFtX3N3U2VydmVyQ29ubmVjdGlvbnMuY29u
dGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaAppbmRleCA2MjZmN2Q3ZmJlNGFjNjQzYzljNGI4OWIw
M2Q0NzM1OTY0YjkxMmNiLi41OTFiNTgzZTFhM2NiZDNlZWI0MTMxYjljMmU2NjU2MDI2NmUyNGUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNz
LmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCkBA
IC00Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBTdG9yYWdlVG9XZWJQ
cm9jZXNzQ29ubmVjdGlvbjsKIGNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKK2NsYXNzIFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBl
Owogc3RydWN0IFN0b3JhZ2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogCkBAIC04MCw4ICs4
MSwxMCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAg
ICBJUEM6OkNvbm5lY3Rpb24qIHdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbigpOwotICAg
IHZvaWQgY3JlYXRlV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKCk7CisgICAgLy8gRm9y
IG5vdyB3ZSBqdXN0IGhhdmUgb25lIGdsb2JhbCBjb25uZWN0aW9uIHRvIHNlcnZpY2Ugd29ya2Vy
IGNvbnRleHQgcHJvY2Vzc2VzLgorICAgIC8vIFRoaXMgd2lsbCBjaGFuZ2UgaW4gdGhlIGZ1dHVy
ZS4KKyAgICBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIGdsb2JhbFNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24oKTsKKyAgICB2b2lkIGNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24oKTsKIAogICAgIFdlYkNvcmU6OlNXU2VydmVyJiBzd1NlcnZlckZvclNlc3Npb24oUEFMOjpT
ZXNzaW9uSUQpOwogICAgIHZvaWQgcmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uJik7CkBAIC0xMTYsOCArMTE5LDYgQEAgcHJpdmF0ZToKICNlbmRpZgogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGRpZEdldFdvcmtlckNvbnRleHRQcm9j
ZXNzQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQmJiBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZp
ZXIpOwotICAgIHZvaWQgc2VydmljZVdvcmtlckNvbnRleHRGYWlsZWRUb1N0YXJ0KHVpbnQ2NF90
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5JiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgdm9pZCBzZXJ2aWNlV29ya2VyQ29udGV4dFN0YXJ0ZWQo
dWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
cik7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKHVpbnQ2NF90IHNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVGZXRjaERhdGEodWlu
dDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmll
ciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7
CkBAIC0xMjUsOSArMTI2LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZhaWxGZXRjaCh1aW50
NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVy
KTsKICAgICB2b2lkIGRpZE5vdEhhbmRsZUZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpOwogCi0gICAgdm9pZCBkaWRGaW5p
c2hTZXJ2aWNlV29ya2VySW5zdGFsbCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpOwotICAgIHZvaWQg
ZGlkRmluaXNoU2VydmljZVdvcmtlckFjdGl2YXRpb24odWludDY0X3Qgc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkm
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgdm9pZCBzZXRTZXJ2aWNl
V29ya2VySGFzUGVuZGluZ0V2ZW50cyh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgaGFzUGVuZGluZ0V2ZW50
cyk7CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVy
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2lu
KTsKICAgICBXZWJTV09yaWdpblN0b3JlJiBzd09yaWdpblN0b3JlRm9yU2Vzc2lvbihQQUw6OlNl
c3Npb25JRCk7CiAjZW5kaWYKQEAgLTE1Niw4ICsxNTQsOCBAQCBwcml2YXRlOgogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGRpZENyZWF0ZVdvcmtlckNvbnRleHRQcm9jZXNz
Q29ubmVjdGlvbihjb25zdCBJUEM6OkF0dGFjaG1lbnQmKTsKIAotICAgIFJlZlB0cjxJUEM6OkNv
bm5lY3Rpb24+IG1fd29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uOwotICAgIGJvb2wgbV93
YWl0aW5nRm9yV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uIHsgZmFsc2UgfTsKKyAgICBS
ZWZQdHI8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiBtX3NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb247CisgICAgYm9vbCBtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29u
bmVjdGlvbiB7IGZhbHNlIH07CiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OlNXU2VydmVyPj4gbV9zd1NlcnZlcnM7CiAgICAgSGFzaE1hcDx1aW50
NjRfdCwgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uKj4gbV9zd1NlcnZlckNvbm5lY3Rpb25zOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9j
ZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJv
Y2Vzcy5tZXNzYWdlcy5pbgppbmRleCAzYjZkMzM5MzZlODk3NGIxYjY1NjczYjNjOWMwZjg0Nzc4
ZjZkOGU4Li4wNTc0OTAyMzNmMWFkNjg1MTRmZjRiMjdlNDRlZWExZTk2ZWRjNWU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVz
c2FnZXMuaW4KQEAgLTM4LDEyICszOCw2IEBAIG1lc3NhZ2VzIC0+IFN0b3JhZ2VQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgRGlkR2V0V29y
a2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFu
ZGxlKQogCi0gICAgU2VydmljZVdvcmtlckNvbnRleHRGYWlsZWRUb1N0YXJ0KHVpbnQ2NF90IHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5IHJlZ2lzdHJhdGlvbktleSwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIg
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIFN0cmluZyBtZXNzYWdlKQotICAgIFNlcnZpY2VXb3Jr
ZXJDb250ZXh0U3RhcnRlZCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2Vi
Q29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSByZWdpc3RyYXRpb25LZXksIFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQotICAg
IERpZEZpbmlzaFNlcnZpY2VXb3JrZXJJbnN0YWxsKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHJlZ2lzdHJh
dGlvbktleSwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCk7Ci0gICAgRGlkRmluaXNoU2VydmljZVdvcmtl
ckFjdGl2YXRpb24odWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgcmVnaXN0cmF0aW9uS2V5LCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgU2V0
U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHModWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBib29sIGhhc1BlbmRpbmdFdmVudHMpOwotCiAgICAgRGlkTm90SGFuZGxlRmV0
Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRl
bnRpZmllcikKICAgICBEaWRGYWlsRmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcikKICAgICBEaWRSZWNlaXZlRmV0Y2hSZXNw
b25zZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VUb1dlYlByb2Nl
c3NDb25uZWN0aW9uLmNwcAppbmRleCA0NTQ1YmM0YTI1MmNmOGE5YjE0MmJhOTMwZjQ0MmFhOTFm
YTI2MmFjLi45YjA5Nzc4NTNmMTQwZGMxNDU5YmFlNmM1MTBiMTA0N2NjYzRhMTUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VUb1dl
YlByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMzUsNiArMzUsMTEgQEAKICNpbmNsdWRlICJXZWJT
V1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAK
KyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
TWVzc2FnZXMuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgUEFMOwogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKQEAgLTg1LDYgKzkwLDExIEBAIHZvaWQgU3RvcmFnZVRvV2ViUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
CiAgICAgICAgICAgICBpdGVyYXRvci0+dmFsdWUtPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rp
b24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBTdG9yYWdlUHJvY2Vz
czo6c2luZ2xldG9uKCkuZ2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpLT5kaWRSZWNl
aXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
ICNlbmRpZgogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xNDgsMTAgKzE1OCw4IEBA
IHZvaWQgU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmVzdGFibGlzaFNXU2VydmVyQ29u
bmVjdGlvbihTZXNzaW9uSUQgc2Vzc2lvCiAKICAgICBTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9u
KCkucmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oKihjb25uZWN0aW9uUmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSkpOwogCi0gICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBTdG9yYWdlUHJvY2Vzczo6
c2luZ2xldG9uKCkud29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKCkpCi0gICAgICAgIGNv
bm5lY3Rpb25SZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5zZXRDb250ZXh0Q29ubmVjdGlvbihjb25u
ZWN0aW9uKTsKLSAgICBlbHNlCi0gICAgICAgIFN0b3JhZ2VQcm9jZXNzOjpzaW5nbGV0b24oKS5j
cmVhdGVXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKyAgICBpZiAoIVN0b3JhZ2VQ
cm9jZXNzOjpzaW5nbGV0b24oKS5nbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkpCisg
ICAgICAgIFN0b3JhZ2VQcm9jZXNzOjpzaW5nbGV0b24oKS5jcmVhdGVTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKCk7CiB9CiAKIHZvaWQgU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OnJl
bW92ZVNXU2VydmVyQ29ubmVjdGlvbih1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
cikKQEAgLTE2NSwxMSArMTczLDggQEAgdm9pZCBTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlv
bjo6cmVtb3ZlU1dTZXJ2ZXJDb25uZWN0aW9uKHVpbnQ2NF90IHNlcnZlckNvbm4KIAogdm9pZCBT
dG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6d29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0
aW9uQ3JlYXRlZCgpCiB7Ci0gICAgYXV0byogaXBjQ29ubmVjdGlvbiA9IFN0b3JhZ2VQcm9jZXNz
OjpzaW5nbGV0b24oKS53b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKLSAgICBBU1NF
UlQoaXBjQ29ubmVjdGlvbik7Ci0KLSAgICBmb3IgKGF1dG8mIHN3Q29ubmVjdGlvbiA6IG1fc3dD
b25uZWN0aW9ucy52YWx1ZXMoKSkKLSAgICAgICAgc3dDb25uZWN0aW9uLT5zZXRDb250ZXh0Q29u
bmVjdGlvbihpcGNDb25uZWN0aW9uKTsKKyAgICBmb3IgKGF1dG8qIHNlcnZlciA6IFNXU2VydmVy
OjphbGxTZXJ2ZXJzKCkpCisgICAgICAgIHNlcnZlci0+c2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bkNyZWF0ZWQoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5YTE0NDdiNjMwZTEwNmIxYTdhZjM4NGI3OWVlN2Ez
NDNiODQwMmM1Li4wOGRlM2MzOTRlMjE5NDc3MjMwY2U5ZDQ0OWJkMWQxY2UzMDk1MGY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEw
MTksNiArMTAxOSw4IEBACiAJCTUxNEJERUQzMTZDOThFREQwMEU0RTI1RSAvKiBTdGF0aXN0aWNz
UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE0QkRFRDIxNkM5OEVERDAwRTRFMjVFIC8qIFN0YXRpc3RpY3NSZXF1ZXN0LmggKi87IH07CiAJ
CTUxNEQ5RjU3MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEQ5RjU1MTkxMTlEMzUw
MDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIuaCAqLzsgfTsKIAkJNTE0RDlGNTgxOTExOUQz
NTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEQ5RjU2MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2
aWNlc0NvbnRyb2xsZXIubW0gKi87IH07CisJCTUxNTI2MkJDMUZCOTUxNUQwMDcwRTU3OSAvKiBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1MjYyQkIxRkI5NTEzMTAwNzBFNTc5IC8q
IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmggKi87IH07CisJCTUxNTI2
MkJEMUZCOTUxNjEwMDcwRTU3OSAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE1MjYyQkExRkI5NTEzMTAwNzBFNTc5IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUxNTc4QjgzMTIwOUVDRUYwMEEz
N0M0QSAvKiBBUElEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTU3OEI4MjEyMDlFQ0VGMDBBMzdDNEEgLyogQVBJRGF0YS5oICovOyB9OwogCQk1
MTVCRTE3NzFENTNGRTg3MDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJFMTczMUQ1M0ZEREMw
MEREN0M2OCAvKiBXZWJHYW1lcGFkUHJvdmlkZXIuY3BwICovOyB9OwogCQk1MTVCRTE3OTFENTNG
RThGMDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVCRTE3NDFENTNGRERDMDBERDdDNjggLyogV2Vi
R2FtZXBhZFByb3ZpZGVyLmggKi87IH07CkBAIC0xMDU4LDYgKzEwNjAsNyBAQAogCQk1MTdERDVC
RTE4MERBN0QzMDA4MTY2MEIgLyogU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdERDVCQzE4MERBN0QzMDA4MTY2
MEIgLyogU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAgKi87IH07CiAJCTUxN0RENUJGMTgwREE3RDMw
MDgxNjYwQiAvKiBTdG9yYWdlUHJvY2Vzc1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdERDVCRDE4MERBN0QzMDA4MTY2MEIgLyogU3RvcmFn
ZVByb2Nlc3NQcm94eS5oICovOyB9OwogCQk1MTgzRERFQzE2MzBCREZDMDA4QkU1QzcgLyogTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMDVCMEQ0MTYyRjdBN0EwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwICovOyB9OworCQk1MTg1NDMwRTFGQjY4MTYxMDA0NzhGOTUgLyogV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODU0MzBEMUZCNjgwRkEwMDQ3OEY5NSAvKiBXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwICovOyB9OwogCQk1MTg3MUI1QjEyN0NCODlEMDBG
NzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE4NzFCNTkxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRN
ZW51LmNwcCAqLzsgfTsKIAkJNTE4NzFCNUMxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRN
ZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg3
MUI1QTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuaCAqLzsgfTsKIAkJNTE4QUNB
RUExMkFFRTZCQjAwQjA0QjgzIC8qIFdLUHJvdGVjdGlvblNwYWNlVHlwZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxOEFDQUU5MTJBRUU2QkIwMEIw
NEI4MyAvKiBXS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMzNTksNiArMzM2Miw5IEBACiAJCTUxNEJERUQy
MTZDOThFREQwMEU0RTI1RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdGF0aXN0aWNzUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTREOUY1NTE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VzQ29udHJvbGxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTREOUY1NjE5MTE5RDM1MDAwMDYzQTcg
LyogU2VydmljZXNDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gU2VydmljZXNDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MTUyNjJCOTFGQjk1MDM1MDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTE1MjYyQkExRkI5NTEzMTAwNzBFNTc5IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTUyNjJCQjFGQjk1MTMxMDA3MEU1NzkgLyog
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1NzhCODIxMjA5RUNFRjAwQTM3QzRB
IC8qIEFQSURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRGF0YS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVCRTE3MzFENTNGRERDMDBERDdDNjgg
LyogV2ViR2FtZXBhZFByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYkdhbWVwYWRQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxNUJFMTc0MUQ1M0ZEREMwMEREN0M2OCAvKiBXZWJHYW1lcGFkUHJvdmlkZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR2FtZXBhZFByb3ZpZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMzk2LDYgKzM0MDIsOCBAQAogCQk1MTdERDVCQzE4
MERBN0QzMDA4MTY2MEIgLyogU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3REQ1QkQxODBEQTdEMzAwODE2NjBCIC8qIFN0b3JhZ2VQ
cm9jZXNzUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZVBy
b2Nlc3NQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTgzQjM5MzEzNzlG
ODVDMDBFODc1NEUgLyogU2hpbS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBh
dGggPSBTaGltLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTg1NDMw
QzFGQjY4MEY5MDA0NzhGOTUgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTg1NDMwRDFGQjY4MEZBMDA0
NzhGOTUgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODcxQjU5MTI3Q0I4OUQwMEY3NjIz
MiAvKiBXZWJDb250ZXh0TWVudS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJDb250ZXh0TWVudS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
ODcxQjVBMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0TWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MThBQ0FFOTEyQUVFNkJCMDBCMDRCODMgLyogV0tQcm90ZWN0aW9uU3BhY2VU
eXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1Byb3RlY3Rpb25TcGFj
ZVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MzgzLDYgKzYzOTEsOSBA
QAogCQkJCTUxN0E1MzA5MUY0NzlFMzEwMERDREMwQSAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb24u
Y3BwICovLAogCQkJCTUxN0E1MzA3MUY0NzlFMzEwMERDREMwQSAvKiBXZWJTV1NlcnZlckNvbm5l
Y3Rpb24uaCAqLywKIAkJCQk1MTdBNTMwODFGNDc5RTMxMDBEQ0RDMEEgLyogV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLm1lc3NhZ2VzLmluICovLAorCQkJCTUxODU0MzBEMUZCNjgwRkEwMDQ3OEY5NSAv
KiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwICovLAorCQkJCTUxODU0MzBDMUZC
NjgwRjkwMDQ3OEY5NSAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCAqLywKKwkJ
CQk1MTUyNjJCOTFGQjk1MDM1MDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLm1lc3NhZ2VzLmluICovLAogCQkJKTsKIAkJCXBhdGggPSBTZXJ2aWNlV29ya2VyOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTgyMDIsNiArODIxMyw4IEBACiAJCQkJNDYwRjQ4
OEUxRjk5NkY2QzAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2Fn
ZXMuaCAqLywKIAkJCQk1MTdBNTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQk1MTdBNTJENjFGNDNBOUI2MDBEQ0RD
MEEgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCAqLywKKwkJCQk1MTUyNjJCQTFG
Qjk1MTMxMDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLywKKwkJCQk1MTUyNjJCQjFGQjk1MTMxMDA3MEU1NzkgLyogV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCAqLywKIAkJCQkxQUFGMDhCNTE5MjY5RTZE
MDBCNjM5MEMgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LywKIAkJCQkxQUFGMDhCNjE5MjY5RTZEMDBCNjM5MEMgLyogV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyTWVzc2FnZXMuaCAqLywKIAkJCQk3QzM2MUQ3NjE5MjgwM0JEMDAzNkE1OUQgLyogV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtOTEyNSw2
ICs5MTM4LDcgQEAKIAkJCQk4M0YxQTA3QTFGOTZFNzc5MDA0NUI5NEUgLyogV2ViU1dPcmlnaW5U
YWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3QTUzMEIxRjQ3OUUzNjAwRENEQzBBIC8qIFdl
YlNXU2VydmVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3QTUyRDkxRjQzQTlE
QTAwRENEQzBBIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1MTUyNjJCQzFGQjk1MTVEMDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMThFOTlDMUYyOTUyNjYw
MDNFRjlGNSAvKiBXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNBMEVGN0YxMjMzMUU3ODAwN0QzQ0ZCIC8qIFdlYlVuZG9TdGVwLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUFGMDhBRTE5MjY5MzY3MDBCNjM5MEMgLyogV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTEwNzkxLDYgKzEwODA1LDggQEAKIAkJCQk4M0Yx
QTA3OTFGOTZFNzc5MDA0NUI5NEUgLyogV2ViU1dPcmlnaW5UYWJsZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MTdBNTMwQTFGNDc5RTM2MDBEQ0RDMEEgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxN0E1MkQ4MUY0M0E5REEwMERDREMwQSAvKiBXZWJT
V1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NTE4NTQzMEUxRkI2ODE2MTAwNDc4Rjk1IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTUyNjJCRDFGQjk1MTYxMDA3MEU1NzkgLyogV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTUxMThFOTlCMUYyOTUyNjYwMDNFRjlGNSAvKiBXZWJUb1N0b3JhZ2VQcm9jZXNz
Q29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMDMzN0REODEyN0E1MUI2MDA4RkY0
RjQgLyogV2ViVG91Y2hFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyREE5NDRBMzE4ODRF
NEYwMDBFRDg2REIgLyogV2ViVG91Y2hFdmVudElPUy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCBlZGIyNDU0NzM5OWRiYzdmNTIzOGQ2
OGI1NWNiMzE4YmZmN2Y5NzEyLi5kZmRjNjJmODZkNmY2ODkzZGRiMDRhM2RhYTJjMjRlOTQ4YTI2
ZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0zNyw2ICszNyw3
IEBACiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNLZXlzLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVy
ZW5jZXNTdG9yZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRQcm92aWRlci5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yQ2xpZW50Lmg+CkBAIC05NSw4ICs5NiwxMCBAQCB2b2lk
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlJgogICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkuc2V0RmV0Y2hBUElFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQ
cmVmZXJlbmNlc0tleTo6ZmV0Y2hBUElFbmFibGVkS2V5KCkpKTsKIH0KIAotdm9pZCBXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIodWludDY0X3Qgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYg
ZGF0YSkKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNl
V29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKIHsKKyAgICBMT0co
U2VydmljZVdvcmtlciwgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2Vy
dmljZVdvcmtlciBmb3Igd29ya2VyICVzIiwgZGF0YS5zZXJ2aWNlV29ya2VySWRlbnRpZmllci5s
b2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKICAgICAvLyBGSVhNRTogUHJvdmlkZSBh
IHNlbnNpY2FsIHNlc3Npb24gSUQuCiAgICAgYXV0byBzZXNzaW9uSUQgPSBQQUw6OlNlc3Npb25J
RDo6ZGVmYXVsdFNlc3Npb25JRCgpOwogCkBAIC0xMTMsNyArMTE2LDcgQEAgdm9pZCBXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIodWludDY0X3Qgc2Vy
dmVyQ29ubmVjdGkKICAgICBhdXRvIGZyYW1lTG9hZGVyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ+KHNlc3Npb25JRCwgbV9wYWdlSUQsICsr
bV9wcmV2aW91c1NlcnZpY2VXb3JrZXJJRCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZGVy
Q2xpZW50Rm9yTWFpbkZyYW1lID0gZnJhbWVMb2FkZXJDbGllbnQucmVsZWFzZSgpOwogCi0gICAg
YXV0byBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgPSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6
OmNyZWF0ZShXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSwgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIGRhdGEsIHNlc3Npb25JRCwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FjaGVTdG9y
YWdlUHJvdmlkZXIoKSk7CisgICAgYXV0byBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgPSBTZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZShXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSwg
ZGF0YSwgc2Vzc2lvbklELCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZVN0b3JhZ2VQcm92
aWRlcigpKTsKICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5yZWdpc3RlclNlcnZp
Y2VXb3JrZXJUaHJlYWRGb3JJbnN0YWxsKFdURk1vdmUoc2VydmljZVdvcmtlclRocmVhZFByb3h5
KSk7CiAKICAgICBMT0coU2VydmljZVdvcmtlciwgIkNvbnRleHQgcHJvY2VzcyBQSUQ6ICVpIGNy
ZWF0ZWQgd29ya2VyIHRocmVhZFxuIiwgZ2V0cGlkKCkpOwpAQCAtMTIxLDE1ICsxMjQsMTAgQEAg
dm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIo
dWludDY0X3Qgc2VydmVyQ29ubmVjdGkKIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6c2VydmljZVdvcmtlclN0YXJ0ZWRXaXRoTWVzc2FnZShTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBleGNlcHRpb25NZXNz
YWdlKQogewotICAgIGF1dG8qIHRocmVhZFByb3h5ID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkuc2VydmljZVdvcmtlclRocmVhZFByb3h5KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsK
LSAgICBBU1NFUlQodGhyZWFkUHJveHkpOwotICAgIAotICAgIGF1dG8mIGRhdGEgPSB0aHJlYWRQ
cm94eS0+dGhyZWFkKCkuY29udGV4dERhdGEoKTsKLSAgICAKICAgICBpZiAoZXhjZXB0aW9uTWVz
c2FnZS5pc0VtcHR5KCkpCi0gICAgICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpTZXJ2aWNlV29ya2VyQ29udGV4dFN0YXJ0ZWQo
dGhyZWFkUHJveHktPnRocmVhZCgpLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCksIGRhdGEu
cmVnaXN0cmF0aW9uS2V5LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciksIDApOworICAgICAgICBt
X2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246OlNjcmlwdENvbnRleHRTdGFydGVkKHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKSwgMCk7CiAgICAgZWxzZQotICAgICAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6U2VydmljZVdvcmtlckNvbnRleHRG
YWlsZWRUb1N0YXJ0KHRocmVhZFByb3h5LT50aHJlYWQoKS5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllcigpLCBkYXRhLnJlZ2lzdHJhdGlvbktleSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGV4
Y2VwdGlvbk1lc3NhZ2UpLCAwKTsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTY3JpcHRD
b250ZXh0RmFpbGVkVG9TdGFydChzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZXhjZXB0aW9uTWVz
c2FnZSksIDApOwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzdGFy
dEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRj
aElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlcklkZW50aWZpZXI+IHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGZXRjaE9wdGlv
bnMmJiBvcHRpb25zKQpAQCAtMTQ5LDE1ICsxNDcsMTMgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShTZXJ2
aWMKICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5wb3N0TWVzc2FnZVRvU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlKGRlc3RpbmF0aW9uSWRlbnRpZmllciwgU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjphZG9wdChtZXNzYWdlLnZlY3RvcigpKSwgc291cmNlSWRlbnRpZmllciwgc291cmNl
T3JpZ2luKTsKIH0KIAotdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZmlyZUlu
c3RhbGxFdmVudCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgU2VydmljZVdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OmZpcmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmll
cikKIHsKLSAgICBVTlVTRURfUEFSQU0oc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpOwogICAg
IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZpcmVJbnN0YWxsRXZlbnQoaWRlbnRpZmll
cik7CiB9CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpcmVBY3RpdmF0
ZUV2ZW50KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6ZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikK
IHsKLSAgICBVTlVTRURfUEFSQU0oc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpOwogICAgIFNX
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZpcmVBY3RpdmF0ZUV2ZW50KGlkZW50aWZpZXIp
OwogfQogCkBAIC0xNjgsMjggKzE2NCwxNyBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZXJ2aQogCiB2
b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpkaWRGaW5pc2hJbnN0YWxsKFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nl
c3NmdWwpCiB7Ci0gICAgYXV0byogdGhyZWFkUHJveHkgPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5n
bGV0b24oKS5zZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoc2VydmljZVdvcmtlcklkZW50aWZpZXIp
OwotICAgIEFTU0VSVCh0aHJlYWRQcm94eSk7Ci0KLSAgICBhdXRvJiBkYXRhID0gdGhyZWFkUHJv
eHktPnRocmVhZCgpLmNvbnRleHREYXRhKCk7Ci0gICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkRpZEZpbmlzaFNlcnZpY2VXb3Jr
ZXJJbnN0YWxsKHRocmVhZFByb3h5LT50aHJlYWQoKS5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
cigpLCBkYXRhLnJlZ2lzdHJhdGlvbktleSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHdhc1N1
Y2Nlc3NmdWwpLCAwKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OkRpZEZpbmlzaEluc3RhbGwo
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIHdhc1N1Y2Nlc3NmdWwpLCAwKTsKIH0KIAogdm9pZCBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlkRmluaXNoQWN0aXZhdGlvbihTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKIHsKLSAgICBhdXRvKiB0
aHJlYWRQcm94eSA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eShzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgQVNTRVJUKHRocmVhZFBy
b3h5KTsKLQotICAgIGF1dG8mIGRhdGEgPSB0aHJlYWRQcm94eS0+dGhyZWFkKCkuY29udGV4dERh
dGEoKTsKLSAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpT
dG9yYWdlUHJvY2Vzczo6RGlkRmluaXNoU2VydmljZVdvcmtlckFjdGl2YXRpb24odGhyZWFkUHJv
eHktPnRocmVhZCgpLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCksIGRhdGEucmVnaXN0cmF0
aW9uS2V5LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciksIDApOworICAgIG1fY29ubmVjdGlvblRv
U3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6RGlkRmluaXNoQWN0aXZhdGlvbihzZXJ2aWNlV29ya2VySWRlbnRpZmllciksIDApOwog
fQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzZXRTZXJ2aWNlV29ya2Vy
SGFzUGVuZGluZ0V2ZW50cyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKQogewotICAgIGF1dG8qIHRocmVhZFByb3h5
ID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlclRocmVhZFByb3h5
KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICBBU1NFUlQodGhyZWFkUHJveHkpOwotCi0g
ICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVBy
b2Nlc3M6OlNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKHRocmVhZFByb3h5LT50aHJl
YWQoKS5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgaGFzUGVuZGluZ0V2ZW50cyksIDApOworICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6U2V0U2Vy
dmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHMoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGhhc1Bl
bmRpbmdFdmVudHMpLCAwKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggOGRhNmE1ZDZlYWQwNTU5MGFlMTQ1MGE2MzcyNzAy
MzhhYjA5MGJkNC4uZmEyYWM4MzkyYmRjNDgzOWNhMDExZmU2MDQ0MjQ4MjUwY2QwMDhkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC01OCwxMSArNTgsMTEgQEAgcHJpdmF0
ZToKIAogICAgIC8vIElQQyBtZXNzYWdlcy4KICAgICB2b2lkIHNlcnZpY2VXb3JrZXJTdGFydGVk
V2l0aE1lc3NhZ2UoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgZXhjZXB0aW9uTWVzc2FnZSkgZmluYWw7Ci0gICAgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtl
cih1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNvbnRleHREYXRhJik7CisgICAgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtlcihj
b25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmKTsKICAgICB2b2lkIHN0YXJ0
RmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNo
SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
cj4sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJik7
CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllciYgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmln
aW4pOwotICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAgIHZvaWQg
ZmlyZUFjdGl2YXRlRXZlbnQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICB2b2lkIGZpcmVJbnN0YWxsRXZl
bnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIHZvaWQgZmlyZUFjdGl2
YXRlRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogCiAgICAgUmVmPElQ
Qzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2VzczsKICAgICB1aW50NjRf
dCBtX3BhZ2VJRCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KaW5kZXggNWQyNTU1YWRjYzkyMjAwNmI5OGU0Y2RiNzA3NDA2M2M0NDQ0ZTY0
OS4uMTQ5OGQyNzIxOWYwNzQ2MjViMjE1MjQzNzMxNTYzMWVkNTJhMTgwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTIzLDExICsyMywx
MSBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogbWVzc2FnZXMgLT4gV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24gewotICAgIEluc3RhbGxTZXJ2aWNlV29ya2VyKHVpbnQ2NF90
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNvbnRleHREYXRhIGNvbnRleHREYXRhKQorICAgIEluc3RhbGxTZXJ2aWNlV29ya2VyKHN0cnVj
dCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgY29udGV4dERhdGEpCiAgICAgU3Rh
cnRGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0
Y2hJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyPiBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMgb3B0aW9ucykKICAgICBQb3N0TWVz
c2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2Us
IHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBzb3VyY2VJZGVu
dGlmaWVyLCBTdHJpbmcgc291cmNlT3JpZ2luKQotICAgIEZpcmVJbnN0YWxsRXZlbnQodWludDY0
X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCi0gICAgRmlyZUFjdGl2YXRlRXZlbnQodWludDY0X3Qgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCisgICAgRmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBpZGVudGlmaWVyKQorICAgIEZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB9CiAKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326837</attachid>
            <date>2017-11-13 18:47:15 -0800</date>
            <delta_ts>2017-11-13 19:58:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>139599</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggMGRhYmI3MzJhM2IuLmY1ZGY3MmVjNDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3
LTExLTEzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNYXNz
aXZlICJTZXJ2ZXItcHJvY2Vzcy10by1jb250ZXh0LXByb2Nlc3MiIGNvbm5lY3Rpb24gb3Zlcmhh
dWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk1
NTQKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICAqIHd0Zi9P
YmplY3RJZGVudGlmaWVyLmg6CisgICAgICAgIChXVEY6OmdlbmVyYXRlT2JqZWN0SWRlbnRpZmll
cik6CisgICAgICAgIChXVEY6Om1ha2VPYmplY3RJZGVudGlmaWVyKTogRGVsZXRlZC4KKwogMjAx
Ny0xMS0xMyAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CiAKICAgICAgICAgc3Rk
OjpleHBlY3RlZDogZml4IGFuZCB0ZXN0IG1vdmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L09iamVjdElkZW50aWZpZXIuaCBiL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaApp
bmRleCBlZjM3MTU0YTMxZS4uNjdkZWUwMjZiNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L09iamVjdElkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVy
LmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVT4gZnJpZW5kIE9iamVjdElkZW50aWZpZXI8VT4gbWFrZU9iamVjdElk
ZW50aWZpZXIodWludDY0X3QpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGZyaWVuZCBPYmpl
Y3RJZGVudGlmaWVyPFU+IGdlbmVyYXRlT2JqZWN0SWRlbnRpZmllcigpOwogICAgIGZyaWVuZCBz
dHJ1Y3QgSGFzaFRyYWl0czxPYmplY3RJZGVudGlmaWVyPjsKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVPiBmcmllbmQgc3RydWN0IE9iamVjdElkZW50aWZpZXJIYXNoOwogCkBAIC04MywxMiArODMs
MTQgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB1aW50NjRfdCBtX2lkZW50aWZpZXIgeyAwIH07
CisgICAgc3RhdGljIHVpbnQ2NF90IHNfY3VycmVudElkZW50aWZpZXI7CiB9OwogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBpbmxpbmUgT2JqZWN0SWRlbnRpZmllcjxUPiBtYWtlT2JqZWN0SWRlbnRp
Zmllcih1aW50NjRfdCBpZGVudGlmaWVyKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gdWludDY0X3Qg
T2JqZWN0SWRlbnRpZmllcjxUPjo6c19jdXJyZW50SWRlbnRpZmllcjsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gaW5saW5lIE9iamVjdElkZW50aWZpZXI8VD4gZ2VuZXJhdGVPYmplY3RJZGVudGlm
aWVyKCkKIHsKLSAgICBBU1NFUlQoT2JqZWN0SWRlbnRpZmllcjxUPjo6aXNWYWxpZElkZW50aWZp
ZXIoaWRlbnRpZmllcikpOwotICAgIHJldHVybiBPYmplY3RJZGVudGlmaWVyPFQ+IHsgaWRlbnRp
ZmllciB9OworICAgIHJldHVybiBPYmplY3RJZGVudGlmaWVyPFQ+IHsgKytPYmplY3RJZGVudGlm
aWVyPFQ+OjpzX2N1cnJlbnRJZGVudGlmaWVyIH07CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBPYmplY3RJZGVudGlmaWVySGFzaCB7CkBAIC0xMDYsNCArMTA4LDQgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoPE9iamVjdElkZW50aWZpZXI8VD4+IHsK
IH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6Ok9iamVjdElkZW50aWZpZXI7Ci11c2lu
ZyBXVEY6Om1ha2VPYmplY3RJZGVudGlmaWVyOwordXNpbmcgV1RGOjpnZW5lcmF0ZU9iamVjdElk
ZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGU0M2Y0MTBlOWUuLmJkMmY2NGI2OWVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTE3IEBACisyMDE3LTExLTEzICBCcmFkeSBFaWRzb24gIDxiZWlkc29u
QGFwcGxlLmNvbT4KKworICAgICAgICBNYXNzaXZlICJTZXJ2ZXItcHJvY2Vzcy10by1jb250ZXh0
LXByb2Nlc3MiIGNvbm5lY3Rpb24gb3ZlcmhhdWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk1NTQKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJp
cyBEdW1lei4KKworICAgICAgICBObyBuZXcgdGVzdHMgKFJlZmFjdG9yLCBubyBiZWhhdmlvciBj
aGFuZ2UpLgorCisgICAgICAgIEhhdmluZyB0aGUgU1dTZXJ2ZXI6OkNvbm5lY3Rpb24gb2JqZWN0
IGJlIG92ZXJsb2FkZWQgdG8gbWVhbiBib3RoIGNsaWVudC0+c2VydmVyIGFuZCBzZXJ2ZXItPmNv
bnRleHQgCisgICAgICAgIHdhcyB0aGUgd3JvbmcgZGVzaWduIGFuZCB3YXMgc3RhcnRpbmcgdG8g
Y3J1bWJsZSB1bmRlciBpdHMgb3duIHdlaWdodC4KKworICAgICAgICBTbyB0aGlzIHBhdGNoIGlu
dHJvZHVjZXMgYSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gdG8gbWFuYWdlIHRoZSBTdG9y
YWdlUHJvY2Vzcy1zaWRlIG9mIGNvbm5lY3Rpb25zCisgICAgICAgIHRvIGNvbnRleHQgcHJvY2Vz
c2VzLgorCisgICAgICAgIEFueSBtZXNzYWdlIHRoYXQgaXMgc3BlY2lmaWNhbGx5IGFib3V0IHRo
ZSBjb25uZWN0aW9uIGJldHdlZW4gdGhlIFN0b3JhZ2VQcm9jZXNzIGFuZCBjb250ZXh0IHByb2Nl
c3MKKyAgICAgICAgc2hvdWxkIHVzZSB0aGlzIGNvbm5lY3Rpb24gZ29pbmcgZm9yd2FyZC4KKwor
ICAgICAgICBSaWdodCBub3cgdGhlcmUgaXMgb25seSBvbmUgY29udGV4dCBwcm9jZXNzLCBidXQg
dGhpcyBkZXNpZ24ga2VlcHMgdXMgcmVhZHkgZm9yIHRoYXQgdG8gY2hhbmdlLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggYWxzbyBnZXRzIHJpZCBvZiBhIGxvdCBvZiAic2VydmVyIGNvbm5lY3Rpb24g
aWRlbnRpZmllciIgaW50ZWdlcnMgYmVpbmcgcGFzc2VkIGFtb25nc3QgcHJvY2Vzc2VzCisgICAg
ICAgIHRoYXQgd2VyZSBhY3R1YWxseSBwb2ludGxlc3MuCisKKyAgICAgICAgVGhpcyBwYXRjaCBp
cyBhbHNvIGEgcHJlcmVxdWlzaXRlIGZvciBtYW55IHRoaW5ncyB0aGF0IGFyZSBjb21pbmcgdXAg
c29vbiwgc3VjaCBhcyB0ZXJtaW5hdGlvbi4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjppc29sYXRlZENvcHkgY29uc3QpOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVjb2RlKToKKworICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6c2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgorCisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJUeXBlcy5oOgorCisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhyZWFkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OmNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKToKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlclRocmVhZFByb3h5OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpjcmVhdGUpOiBEZWxldGVkLgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eS5oOgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpnZW5lcmF0ZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNXU2VydmVyOjp+U1dTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1dT
ZXJ2ZXI6OlNXU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzY3JpcHRDb250
ZXh0RmFpbGVkVG9TdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c2NyaXB0Q29u
dGV4dFN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmRpZEZpbmlzaEluc3Rh
bGwpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmRpZEZpbmlzaEFjdGl2YXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1cGRhdGVXb3JrZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U1dTZXJ2ZXI6OnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjppbnN0YWxsQ29udGV4dERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6U1dTZXJ2ZXI6OmZpcmVJbnN0YWxsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U1dTZXJ2ZXI6OmZpcmVBY3RpdmF0ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVy
OjpDb25uZWN0aW9uOjpkaWRGaW5pc2hJbnN0YWxsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNXU2VydmVyOjpDb25uZWN0aW9uOjpkaWRGaW5pc2hBY3RpdmF0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpDb25uZWN0aW9uOjpzZXRTZXJ2aWNlV29ya2Vy
SGFzUGVuZGluZ0V2ZW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6
Q29ubmVjdGlvbjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OkNvbm5lY3Rpb246OnNjcmlwdENvbnRleHRTdGFydGVkKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzZXRTZXJ2aWNlV29ya2VySGFz
UGVuZGluZ0V2ZW50cyk6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5oOgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ckpvYlF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6OnNjcmlw
dENvbnRleHRGYWlsZWRUb1N0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9iUXVl
dWU6OnNjcmlwdENvbnRleHRTdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9i
UXVldWU6Omluc3RhbGwpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6ZGlk
UmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJK
b2JRdWV1ZTo6ZGlkRmluaXNoSW5zdGFsbCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpv
YlF1ZXVlOjp0cnlBY3RpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVl
OjphY3RpdmF0ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpv
YlF1ZXVlLmg6CisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVn
aXN0cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXIpOgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmdlbmVyYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjp+U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvcklkZW50aWZpZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpnbG9iYWxTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzY3JpcHRDb250ZXh0U3RhcnRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZEZpbmlzaElu
c3RhbGwpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpk
aWRGaW5pc2hBY3RpdmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6c2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHMpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
aWRlbnRpZmllciBjb25zdCk6CisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpleGlz
dGluZ1dvcmtlckZvcklkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3Jr
ZXI6OlNXU2VydmVyV29ya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjp+
U1dTZXJ2ZXJXb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OnNjcmlw
dENvbnRleHRGYWlsZWRUb1N0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2Vy
OjpzY3JpcHRDb250ZXh0U3RhcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtl
cjo6ZGlkRmluaXNoSW5zdGFsbCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6
ZGlkRmluaXNoQWN0aXZhdGlvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlcldvcmtlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6cmVnaXN0cmF0aW9uS2V5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpjb250ZXh0Q29ubmVjdGlv
bklkZW50aWZpZXIgY29uc3QpOgorCiAyMDE3LTExLTEzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KIAogICAgICAgICBtYXRjaFJlZ2lzdHJhdGlvbiBkb2VzIG5vdCBuZWVkIHRv
IGdvIHRvIFN0b3JhZ2VQcm9jZXNzIGlmIG5vIHNlcnZpY2Ugd29ya2VyIGlzIHJlZ2lzdGVyZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKaW5kZXggOWZkZGY1Yzk5NzkuLmFjOWY2ZTcyNmQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dApAQCAtMjE5NCw2ICsyMTk0LDcgQEAgd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0
b3JlLmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKIHdvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCit3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuY3BwCiAKIHhtbC9ET01QYXJzZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWRhNmUwMmI0ZTIuLjg5MjNkY2E1
YTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMzU1LDYgKzEzNTUsNyBAQAogCQk1MTgyQzI1ODFGMzE0M0NEMDA1OUJBN0Mg
LyogSlNTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgyQzI1NDFGMzE0MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNl
V29ya2VyQ29udGFpbmVyLmggKi87IH07CiAJCTUxODJDMjVBMUYzMTQzQ0QwMDU5QkE3QyAvKiBK
U1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE4MkMyNEQxRjMxNDI1MDAwNTlCQTdDIC8qIEpTU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlLmggKi87IH07CiAJCTUxODJDMjVDMUYzMTQzQ0QwMDU5QkE3QyAvKiBK
U1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxODJDMjUwMUYzMTQyNTAwMDU5QkE3QyAvKiBKU1NlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb24uaCAqLzsgfTsKKwkJNTE4NTQzMEIxRkI2Nzg0NTAwNDc4Rjk1IC8q
IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4NTQzMDkxRkI2NzgzRTAwNDc4Rjk1IC8qIFNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTUxODVGQzc1MUJCNEM0RTgwMDEyODk4RiAvKiBET01XaW5kb3dJbmRl
eGVkRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxRDcxOTZEMTgxMTA2REYwMDE2REM1MSAvKiBET01XaW5kb3dJbmRleGVkRGF0YWJhc2Uu
aCAqLzsgfTsKIAkJNTE4NUZDN0IxQkI0QzRFODAwMTI4OThGIC8qIElEQkN1cnNvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2NDVCNDExQjlGODg5
QjAwRjc4OUNFIC8qIElEQkN1cnNvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTUxODVGQzdFMUJCNEM0RTgwMDEyODk4RiAvKiBJREJDdXJzb3JX
aXRoVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNjQ1QjQzMUI5Rjg4OUIwMEY3ODlDRSAvKiBJREJDdXJzb3JXaXRoVmFsdWUuaCAqLzsgfTsK
QEAgLTE0MjYsNyArMTQyNyw3IEBACiAJCTUxRTY4MjEwMTYzODczMDIwMDNCQkYzQyAvKiBMb2Fk
ZXJTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFFNjgyMEYxNjM4NzMwMjAwM0JCRjNDIC8qIExvYWRlclN0cmF0ZWd5LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFRTdCMzgxQUE1MEIw
NTAwRjkyQjIxIC8qIFJlc291cmNlTG9hZEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRUU3QjM3MUFBNTBCMDUwMEY5MkIyMSAvKiBSZXNvdXJj
ZUxvYWRJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTFFRUFBNzQxQkVGRkFCMTAwMjE4MDA4IC8qIEluZGV4VmFsdWVFbnRyeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFRUFBNzIxQkVGRkE3
OTAwMjE4MDA4IC8qIEluZGV4VmFsdWVFbnRyeS5oICovOyB9OwotCQk1MUYxNzRGRTFGMzU4OTky
MDBDNzQ5NTAgLyogV29ya2VyVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFGMTc0RkMxRjM1ODk4ODAwQzc0OTUwIC8qIFdvcmtlclR5cGUuaCAq
LzsgfTsKKwkJNTFGMTc0RkUxRjM1ODk5MjAwQzc0OTUwIC8qIFdvcmtlclR5cGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjE3NEZDMUYzNTg5ODgw
MEM3NDk1MCAvKiBXb3JrZXJUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNTFGMTc1MDMxRjM1OEIzQjAwQzc0OTUwIC8qIEpTU2VydmljZVdv
cmtlclVwZGF0ZVZpYUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUYxNzUwMTFGMzU4QjM2MDBDNzQ5NTAgLyogSlNTZXJ2aWNlV29ya2VyVXBk
YXRlVmlhQ2FjaGUuaCAqLzsgfTsKIAkJNTFGMTc1MDYxRjM1OEJGNzAwQzc0OTUwIC8qIEpTV29y
a2VyVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFGMTc1MDUxRjM1OEJERTAwQzc0OTUwIC8qIEpTV29ya2VyVHlwZS5oICovOyB9OwogCQk1MUYx
NzU1RDFGM0VCQzgzMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMTc1NUExRjNFQkMwQzAwQzc0OTUwIC8q
IFNlcnZpY2VXb3JrZXIuaCAqLzsgfTsKQEAgLTc3MTEsNiArNzcxMiw4IEBACiAJCTUxODJDMjUy
MUYzMTQyNTAwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNT
ZXJ2aWNlV29ya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODJDMjUzMUYz
MTQyNTAwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNTZXJ2aWNlV29ya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4MkMy
NTQxRjMxNDI1MDAwNTlCQTdDIC8qIEpTU2VydmljZVdvcmtlckNvbnRhaW5lci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1NlcnZpY2VXb3JrZXJDb250YWluZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTE4NTQzMDkxRkI2NzgzRTAwNDc4Rjk1IC8qIFNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4NTQzMEEx
RkI2NzgzRjAwNDc4Rjk1IC8qIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTg1RkNCQzFCQjVDQjc3MDAx
Mjg5OEYgLyogSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IElEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxODVGQ0JEMUJCNUNCNzcwMDEyODk4RiAvKiBJREJDb25uZWN0aW9u
VG9TZXJ2ZXJEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJD
b25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MTg4NjRERTFCQkFGMzBGMDBFNTQwQzkgLyogVW5pcXVlSURCRGF0YWJhc2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5pcXVlSURCRGF0YWJhc2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTcxNDIsNiArMTcxNDUsOCBAQAogCQkJCTgz
MTFDMDAyMUZBQTJFODkwMEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggKi8sCiAJCQkJNTFG
NjQ1OTUxRjRBNjg2MTAwQjU0REVEIC8qIFNXU2VydmVyUmVnaXN0cmF0aW9uLmNwcCAqLywKIAkJ
CQk1MUY2NDU5NDFGNEE2ODRGMDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCAqLywK
KwkJCQk1MTg1NDMwQTFGQjY3ODNGMDA0NzhGOTUgLyogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcCAqLywKKwkJCQk1MTg1NDMwOTFGQjY3ODNFMDA0NzhGOTUgLyogU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmggKi8sCiAJCQkJNTE3QTUzNDMxRjUwQzE2MTAwRENEQzBBIC8qIFNX
U2VydmVyV29ya2VyLmNwcCAqLywKIAkJCQk1MTdBNTM0MjFGNTBDMTYxMDBEQ0RDMEEgLyogU1dT
ZXJ2ZXJXb3JrZXIuaCAqLywKIAkJCSk7CkBAIC0xNzMyNywxMjQgKzE3MzMyLDEyNCBAQAogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1MzhFQzdGMzFGOTZBQTVCMDA0
RDIyQTggLyogVW5pZmllZFNvdXJjZTEtbW0ubW0gKi8sCi0JCQkJNTM4RUM3RjgxRjk2QUE2OTAw
NEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UyLW1tLm1tICovLAotCQkJCTUzOEVDN0VEMUY5NkFBNTUw
MDREMjJBOCAvKiBVbmlmaWVkU291cmNlMy1tbS5tbSAqLywKLQkJCQlERTVGODU0OTFGQTFBQkJE
MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQtbW0ubW0gKi8sCi0JCQkJREU1Rjg1NjUxRkExQUJE
NjAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1LW1tLm1tICovLAotCQkJCURFNUY4NTZCMUZBMUFC
REIwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNi1tbS5tbSAqLywKLQkJCQlERTVGODU1RjFGQTFB
QkQxMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTctbW0ubW0gKi8sCi0JCQkJREU1Rjg1M0QxRkEx
QUJCMjAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U4LW1tLm1tICovLAotCQkJCURFNUY4NTU0MUZB
MUFCQzcwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlOS1tbS5tbSAqLywKLQkJCQlERTVGODU2MzFG
QTFBQkQ1MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTEwLW1tLm1tICovLAotCQkJCURFNUY4NTYx
MUZBMUFCRDMwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMTEtbW0ubW0gKi8sCi0JCQkJREU1Rjg1
NjQxRkExQUJENTAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxMi1tbS5tbSAqLywKLQkJCQlERTVG
ODU2QTFGQTFBQkRCMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTEzLW1tLm1tICovLAotCQkJCURF
NUY4NTRFMUZBMUFCQzIwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMTQtbW0ubW0gKi8sCi0JCQkJ
REU1Rjg1M0UxRkExQUJCMzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxNS1tbS5tbSAqLywKLQkJ
CQlERTVGODU1RTFGQTFBQkQwMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTE2LW1tLm1tICovLAot
CQkJCURFNUY4NTRBMUZBMUFCQkUwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMTctbW0ubW0gKi8s
Ci0JCQkJREU1Rjg1NTAxRkExQUJDMzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxOC1tbS5tbSAq
LywKLQkJCQlERTVGODU1MzFGQTFBQkM2MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTE5LW1tLm1t
ICovLAotCQkJCURFNUY4NTUyMUZBMUFCQzUwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMjAtbW0u
bW0gKi8sCi0JCQkJREU1Rjg1NUExRkExQUJDRDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UyMS1t
bS5tbSAqLywKLQkJCQlERTVGODU0RDFGQTFBQkMxMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTIy
LW1tLm1tICovLAotCQkJCURFNUY4NTQxMUZBMUFCQjYwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNl
MjMtbW0ubW0gKi8sCi0JCQkJREU1Rjg1NDYxRkExQUJCQjAwNkRCNjNBIC8qIFVuaWZpZWRTb3Vy
Y2UyNC1tbS5tbSAqLywKLQkJCQlERTVGODU0NzFGQTFBQkJCMDA2REI2M0EgLyogVW5pZmllZFNv
dXJjZTI1LW1tLm1tICovLAotCQkJCURFNUY4NTVEMUZBMUFCQ0YwMDZEQjYzQSAvKiBVbmlmaWVk
U291cmNlMjYtbW0ubW0gKi8sCi0JCQkJREU1Rjg1NjkxRkExQUJEQTAwNkRCNjNBIC8qIFVuaWZp
ZWRTb3VyY2UyNy1tbS5tbSAqLywKLQkJCQlERTVGODUzRjFGQTFBQkI0MDA2REI2M0EgLyogVW5p
ZmllZFNvdXJjZTI4LW1tLm1tICovLAotCQkJCURFNUY4NTY4MUZBMUFCRDkwMDZEQjYzQSAvKiBV
bmlmaWVkU291cmNlMjktbW0ubW0gKi8sCi0JCQkJREU1Rjg1NDIxRkExQUJCNzAwNkRCNjNBIC8q
IFVuaWZpZWRTb3VyY2UzMC1tbS5tbSAqLywKLQkJCQlERTVGODU1MTFGQTFBQkM0MDA2REI2M0Eg
LyogVW5pZmllZFNvdXJjZTMxLW1tLm1tICovLAotCQkJCURFNUY4NTYwMUZBMUFCRDIwMDZEQjYz
QSAvKiBVbmlmaWVkU291cmNlMzItbW0ubW0gKi8sCi0JCQkJREU1Rjg1NUIxRkExQUJDRTAwNkRC
NjNBIC8qIFVuaWZpZWRTb3VyY2UzMy1tbS5tbSAqLywKLQkJCQlERTVGODU1NzFGQTFBQkNBMDA2
REI2M0EgLyogVW5pZmllZFNvdXJjZTM0LW1tLm1tICovLAotCQkJCURFNUY4NTQwMUZBMUFCQjUw
MDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMzUtbW0ubW0gKi8sCi0JCQkJREU1Rjg1NTUxRkExQUJD
ODAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzNi1tbS5tbSAqLywKLQkJCQlERTVGODU0NTFGQTFB
QkJBMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTM3LW1tLm1tICovLAotCQkJCURFNUY4NTVDMUZB
MUFCQ0UwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMzgtbW0ubW0gKi8sCi0JCQkJREU1Rjg1NTkx
RkExQUJDQzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzOS1tbS5tbSAqLywKLQkJCQlERTVGODU1
NjFGQTFBQkM5MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQwLW1tLm1tICovLAotCQkJCURFNUY4
NTY2MUZBMUFCRDcwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDEtbW0ubW0gKi8sCi0JCQkJREU1
Rjg1NEYxRkExQUJDMzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0Mi1tbS5tbSAqLywKLQkJCQlE
RTVGODU0ODFGQTFBQkJDMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQzLW1tLm1tICovLAotCQkJ
CURFNUY4NTQzMUZBMUFCQjgwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDQtbW0ubW0gKi8sCi0J
CQkJREU1Rjg1NTgxRkExQUJDQjAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0NS1tbS5tbSAqLywK
LQkJCQlERTVGODU0NDFGQTFBQkI5MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ2LW1tLm1tICov
LAotCQkJCURFNUY4NTYyMUZBMUFCRDQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDctbW0ubW0g
Ki8sCi0JCQkJREU1Rjg1NjcxRkExQUJEODAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0OC1tbS5t
bSAqLywKLQkJCQlERTVGODU0QjFGQTFBQkJGMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ5LW1t
Lm1tICovLAotCQkJCURFNUY4NTRDMUZBMUFCQzAwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTAt
bW0ubW0gKi8sCi0JCQkJREU1Rjg2MzYxRkEyQUYwNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1
MS1tbS5tbSAqLywKLQkJCQlERTVGODYzNzFGQTJBRjA1MDA2REI2M0EgLyogVW5pZmllZFNvdXJj
ZTUyLW1tLm1tICovLAotCQkJCURFNUY4NjM1MUZBMkFGMDMwMDZEQjYzQSAvKiBVbmlmaWVkU291
cmNlNTMtbW0ubW0gKi8sCi0JCQkJREU1Rjg2MzMxRkEyQUYwMDAwNkRCNjNBIC8qIFVuaWZpZWRT
b3VyY2U1NC1tbS5tbSAqLywKLQkJCQlERTVGODYzQjFGQTJBRjA4MDA2REI2M0EgLyogVW5pZmll
ZFNvdXJjZTU1LW1tLm1tICovLAotCQkJCURFNUY4NjM0MUZBMkFGMDEwMDZEQjYzQSAvKiBVbmlm
aWVkU291cmNlNTYtbW0ubW0gKi8sCi0JCQkJREU1Rjg2MzgxRkEyQUYwNjAwNkRCNjNBIC8qIFVu
aWZpZWRTb3VyY2U1Ny1tbS5tbSAqLywKLQkJCQlERTVGODYzOTFGQTJBRjA3MDA2REI2M0EgLyog
VW5pZmllZFNvdXJjZTU4LW1tLm1tICovLAotCQkJCURFNUY4NjMyMUZBMkFFRkYwMDZEQjYzQSAv
KiBVbmlmaWVkU291cmNlNTktbW0ubW0gKi8sCi0JCQkJREU1Rjg2M0ExRkEyQUYwNzAwNkRCNjNB
IC8qIFVuaWZpZWRTb3VyY2U2MC1tbS5tbSAqLywKIAkJCQk1MzhFQzdGQTFGOTZBQTcwMDA0RDIy
QTggLyogVW5pZmllZFNvdXJjZTEuY3BwICovLAorCQkJCTUzOEVDN0Y4MUY5NkFBNjkwMDREMjJB
OCAvKiBVbmlmaWVkU291cmNlMi1tbS5tbSAqLywKIAkJCQk1MzhFQzdFRTFGOTZBQTU2MDA0RDIy
QTggLyogVW5pZmllZFNvdXJjZTIuY3BwICovLAorCQkJCTUzOEVDN0VEMUY5NkFBNTUwMDREMjJB
OCAvKiBVbmlmaWVkU291cmNlMy1tbS5tbSAqLywKIAkJCQk1MzhFQzdFQzFGOTZBQTU0MDA0RDIy
QTggLyogVW5pZmllZFNvdXJjZTMuY3BwICovLAorCQkJCURFNUY4NTQ5MUZBMUFCQkQwMDZEQjYz
QSAvKiBVbmlmaWVkU291cmNlNC1tbS5tbSAqLywKIAkJCQk1MzhFQzdFRjFGOTZBQTU3MDA0RDIy
QTggLyogVW5pZmllZFNvdXJjZTQuY3BwICovLAorCQkJCURFNUY4NTY1MUZBMUFCRDYwMDZEQjYz
QSAvKiBVbmlmaWVkU291cmNlNS1tbS5tbSAqLywKIAkJCQk1MzhFQzdGMDFGOTZBQTU4MDA0RDIy
QTggLyogVW5pZmllZFNvdXJjZTUuY3BwICovLAorCQkJCURFNUY4NTZCMUZBMUFCREIwMDZEQjYz
QSAvKiBVbmlmaWVkU291cmNlNi1tbS5tbSAqLywKIAkJCQk1MzhFQzdFQjFGOTZBQTUzMDA0RDIy
QTggLyogVW5pZmllZFNvdXJjZTYuY3BwICovLAorCQkJCURFNUY4NTVGMUZBMUFCRDEwMDZEQjYz
QSAvKiBVbmlmaWVkU291cmNlNy1tbS5tbSAqLywKIAkJCQk1MzhFQzdGMTFGOTZBQTU5MDA0RDIy
QTggLyogVW5pZmllZFNvdXJjZTcuY3BwICovLAorCQkJCURFNUY4NTNEMUZBMUFCQjIwMDZEQjYz
QSAvKiBVbmlmaWVkU291cmNlOC1tbS5tbSAqLywKIAkJCQk1MzhFQzdGMjFGOTZBQTVBMDA0RDIy
QTggLyogVW5pZmllZFNvdXJjZTguY3BwICovLAorCQkJCURFNUY4NTU0MUZBMUFCQzcwMDZEQjYz
QSAvKiBVbmlmaWVkU291cmNlOS1tbS5tbSAqLywKIAkJCQk1MzhFQzdGRTFGOTZBQTc2MDA0RDIy
QTggLyogVW5pZmllZFNvdXJjZTkuY3BwICovLAorCQkJCURFNUY4NTYzMUZBMUFCRDUwMDZEQjYz
QSAvKiBVbmlmaWVkU291cmNlMTAtbW0ubW0gKi8sCiAJCQkJNTM4RUM3RjUxRjk2QUE1RTAwNEQy
MkE4IC8qIFVuaWZpZWRTb3VyY2UxMC5jcHAgKi8sCisJCQkJREU1Rjg1NjExRkExQUJEMzAwNkRC
NjNBIC8qIFVuaWZpZWRTb3VyY2UxMS1tbS5tbSAqLywKIAkJCQk1MzhFQzdGNDFGOTZBQTVEMDA0
RDIyQTggLyogVW5pZmllZFNvdXJjZTExLmNwcCAqLywKKwkJCQlERTVGODU2NDFGQTFBQkQ1MDA2
REI2M0EgLyogVW5pZmllZFNvdXJjZTEyLW1tLm1tICovLAogCQkJCTUzOEVDN0Y2MUY5NkFBNUYw
MDREMjJBOCAvKiBVbmlmaWVkU291cmNlMTIuY3BwICovLAorCQkJCURFNUY4NTZBMUZBMUFCREIw
MDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMTMtbW0ubW0gKi8sCiAJCQkJNTM4RUM3RkQxRjk2QUE3
NDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UxMy5jcHAgKi8sCisJCQkJREU1Rjg1NEUxRkExQUJD
MjAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxNC1tbS5tbSAqLywKIAkJCQk1MzhFQzdGQzFGOTZB
QTczMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTE0LmNwcCAqLywKKwkJCQlERTVGODUzRTFGQTFB
QkIzMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTE1LW1tLm1tICovLAogCQkJCTUzOEVDN0ZGMUY5
NkFBNzcwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMTUuY3BwICovLAorCQkJCURFNUY4NTVFMUZB
MUFCRDAwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMTYtbW0ubW0gKi8sCiAJCQkJNTM4RUM3Rjcx
Rjk2QUE2MDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UxNi5jcHAgKi8sCisJCQkJREU1Rjg1NEEx
RkExQUJCRTAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxNy1tbS5tbSAqLywKIAkJCQk1MzhFQzgw
MTFGOTZBQTdBMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTE3LmNwcCAqLywKKwkJCQlERTVGODU1
MDFGQTFBQkMzMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTE4LW1tLm1tICovLAogCQkJCTUzOEVD
N0ZCMUY5NkFBNzIwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMTguY3BwICovLAorCQkJCURFNUY4
NTUzMUZBMUFCQzYwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMTktbW0ubW0gKi8sCiAJCQkJNTM4
RUM3RjkxRjk2QUE2RTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UxOS5jcHAgKi8sCisJCQkJREU1
Rjg1NTIxRkExQUJDNTAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UyMC1tbS5tbSAqLywKIAkJCQk1
MzhFQzgwMDFGOTZBQTc4MDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTIwLmNwcCAqLywKKwkJCQlE
RTVGODU1QTFGQTFBQkNEMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTIxLW1tLm1tICovLAogCQkJ
CTUzOEVDODM1MUY5OTNGMEQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMjEuY3BwICovLAorCQkJ
CURFNUY4NTREMUZBMUFCQzEwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMjItbW0ubW0gKi8sCiAJ
CQkJNTM4RUM4NEExRjk5M0YxODAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UyMi5jcHAgKi8sCisJ
CQkJREU1Rjg1NDExRkExQUJCNjAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UyMy1tbS5tbSAqLywK
IAkJCQk1MzhFQzgyQTFGOTkzRjA3MDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTIzLmNwcCAqLywK
KwkJCQlERTVGODU0NjFGQTFBQkJCMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTI0LW1tLm1tICov
LAogCQkJCTUzOEVDODNGMUY5OTNGMTIwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMjQuY3BwICov
LAorCQkJCURFNUY4NTQ3MUZBMUFCQkIwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMjUtbW0ubW0g
Ki8sCiAJCQkJNTM4RUM4M0ExRjk5M0YxMDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UyNS5jcHAg
Ki8sCisJCQkJREU1Rjg1NUQxRkExQUJDRjAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UyNi1tbS5t
bSAqLywKIAkJCQk1MzhFQzg0QzFGOTkzRjE5MDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTI2LmNw
cCAqLywKKwkJCQlERTVGODU2OTFGQTFBQkRBMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTI3LW1t
Lm1tICovLAogCQkJCTUzOEVDODVGMUY5OTNGMjMwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMjcu
Y3BwICovLAorCQkJCURFNUY4NTNGMUZBMUFCQjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMjgt
bW0ubW0gKi8sCiAJCQkJNTM4RUM4NEIxRjk5M0YxODAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2Uy
OC5jcHAgKi8sCisJCQkJREU1Rjg1NjgxRkExQUJEOTAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2Uy
OS1tbS5tbSAqLywKIAkJCQk1MzhFQzg1NTFGOTkzRjFFMDA0RDIyQTggLyogVW5pZmllZFNvdXJj
ZTI5LmNwcCAqLywKKwkJCQlERTVGODU0MjFGQTFBQkI3MDA2REI2M0EgLyogVW5pZmllZFNvdXJj
ZTMwLW1tLm1tICovLAogCQkJCTUzOEVDODc2MUY5OTNGMkYwMDREMjJBOCAvKiBVbmlmaWVkU291
cmNlMzAuY3BwICovLAorCQkJCURFNUY4NTUxMUZBMUFCQzQwMDZEQjYzQSAvKiBVbmlmaWVkU291
cmNlMzEtbW0ubW0gKi8sCiAJCQkJNTM4RUM4NUIxRjk5M0YyMTAwNEQyMkE4IC8qIFVuaWZpZWRT
b3VyY2UzMS5jcHAgKi8sCisJCQkJREU1Rjg1NjAxRkExQUJEMjAwNkRCNjNBIC8qIFVuaWZpZWRT
b3VyY2UzMi1tbS5tbSAqLywKIAkJCQk1MzhFQzgyQjFGOTkzRjA4MDA0RDIyQTggLyogVW5pZmll
ZFNvdXJjZTMyLmNwcCAqLywKKwkJCQlERTVGODU1QjFGQTFBQkNFMDA2REI2M0EgLyogVW5pZmll
ZFNvdXJjZTMzLW1tLm1tICovLAogCQkJCTUzOEVDODdGMUY5OTNGMzQwMDREMjJBOCAvKiBVbmlm
aWVkU291cmNlMzMuY3BwICovLAorCQkJCURFNUY4NTU3MUZBMUFCQ0EwMDZEQjYzQSAvKiBVbmlm
aWVkU291cmNlMzQtbW0ubW0gKi8sCiAJCQkJNTM4RUM4NTcxRjk5M0YxRjAwNEQyMkE4IC8qIFVu
aWZpZWRTb3VyY2UzNC5jcHAgKi8sCisJCQkJREU1Rjg1NDAxRkExQUJCNTAwNkRCNjNBIC8qIFVu
aWZpZWRTb3VyY2UzNS1tbS5tbSAqLywKIAkJCQk1MzhFQzg3QTFGOTkzRjMxMDA0RDIyQTggLyog
VW5pZmllZFNvdXJjZTM1LmNwcCAqLywKKwkJCQlERTVGODU1NTFGQTFBQkM4MDA2REI2M0EgLyog
VW5pZmllZFNvdXJjZTM2LW1tLm1tICovLAogCQkJCTUzOEVDODYwMUY5OTNGMjMwMDREMjJBOCAv
KiBVbmlmaWVkU291cmNlMzYuY3BwICovLAorCQkJCURFNUY4NTQ1MUZBMUFCQkEwMDZEQjYzQSAv
KiBVbmlmaWVkU291cmNlMzctbW0ubW0gKi8sCiAJCQkJNTM4RUM4MzIxRjk5M0YwQzAwNEQyMkE4
IC8qIFVuaWZpZWRTb3VyY2UzNy5jcHAgKi8sCisJCQkJREU1Rjg1NUMxRkExQUJDRTAwNkRCNjNB
IC8qIFVuaWZpZWRTb3VyY2UzOC1tbS5tbSAqLywKIAkJCQk1MzhFQzg3QjFGOTkzRjMyMDA0RDIy
QTggLyogVW5pZmllZFNvdXJjZTM4LmNwcCAqLywKKwkJCQlERTVGODU1OTFGQTFBQkNDMDA2REI2
M0EgLyogVW5pZmllZFNvdXJjZTM5LW1tLm1tICovLAogCQkJCTUzOEVDODdDMUY5OTNGMzIwMDRE
MjJBOCAvKiBVbmlmaWVkU291cmNlMzkuY3BwICovLAorCQkJCURFNUY4NTU2MUZBMUFCQzkwMDZE
QjYzQSAvKiBVbmlmaWVkU291cmNlNDAtbW0ubW0gKi8sCiAJCQkJNTM4RUM4NDkxRjk5M0YxNzAw
NEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U0MC5jcHAgKi8sCisJCQkJREU1Rjg1NjYxRkExQUJENzAw
NkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0MS1tbS5tbSAqLywKIAkJCQk1MzhFQzg0RTFGOTkzRjFB
MDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTQxLmNwcCAqLywKKwkJCQlERTVGODU0RjFGQTFBQkMz
MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQyLW1tLm1tICovLAogCQkJCTUzOEVDODNCMUY5OTNG
MTAwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNDIuY3BwICovLAorCQkJCURFNUY4NTQ4MUZBMUFC
QkMwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDMtbW0ubW0gKi8sCiAJCQkJNTM4RUM4NTIxRjk5
M0YxQzAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U0My5jcHAgKi8sCisJCQkJREU1Rjg1NDMxRkEx
QUJCODAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0NC1tbS5tbSAqLywKIAkJCQk1MzhFQzg2QTFG
OTkzRjI5MDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTQ0LmNwcCAqLywKKwkJCQlERTVGODU1ODFG
QTFBQkNCMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ1LW1tLm1tICovLAogCQkJCTUzOEVDODND
MUY5OTNGMTEwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNDUuY3BwICovLAorCQkJCURFNUY4NTQ0
MUZBMUFCQjkwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDYtbW0ubW0gKi8sCiAJCQkJNTM4RUM4
NzcxRjk5M0YzMDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U0Ni5jcHAgKi8sCisJCQkJREU1Rjg1
NjIxRkExQUJENDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0Ny1tbS5tbSAqLywKIAkJCQk1MzhF
Qzg2ODFGOTkzRjI4MDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTQ3LmNwcCAqLywKKwkJCQlERTVG
ODU2NzFGQTFBQkQ4MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ4LW1tLm1tICovLAogCQkJCTUz
OEVDODQzMUY5OTNGMTQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNDguY3BwICovLAorCQkJCURF
NUY4NTRCMUZBMUFCQkYwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDktbW0ubW0gKi8sCiAJCQkJ
NTM4RUM4N0QxRjk5M0YzMzAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U0OS5jcHAgKi8sCisJCQkJ
REU1Rjg1NEMxRkExQUJDMDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1MC1tbS5tbSAqLywKIAkJ
CQk1MzhFQzgyNzFGOTkzRjA2MDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTUwLmNwcCAqLywKKwkJ
CQlERTVGODYzNjFGQTJBRjA0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTUxLW1tLm1tICovLAog
CQkJCTUzOEVDODQ3MUY5OTNGMTYwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNTEuY3BwICovLAor
CQkJCURFNUY4NjM3MUZBMkFGMDUwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTItbW0ubW0gKi8s
CiAJCQkJNTM4RUM4ODAxRjk5M0YzNDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U1Mi5jcHAgKi8s
CisJCQkJREU1Rjg2MzUxRkEyQUYwMzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1My1tbS5tbSAq
LywKIAkJCQk1MzhFQzgyQzFGOTkzRjA5MDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTUzLmNwcCAq
LywKKwkJCQlERTVGODYzMzFGQTJBRjAwMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTU0LW1tLm1t
ICovLAogCQkJCTUzOEVDODY5MUY5OTNGMjgwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNTQuY3Bw
ICovLAorCQkJCURFNUY4NjNCMUZBMkFGMDgwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTUtbW0u
bW0gKi8sCiAJCQkJNTM4RUM4NkMxRjk5M0YyQTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U1NS5j
cHAgKi8sCisJCQkJREU1Rjg2MzQxRkEyQUYwMTAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1Ni1t
bS5tbSAqLywKIAkJCQk1MzhFQzg4NTFGOTkzRjNBMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTU2
LmNwcCAqLywKKwkJCQlERTVGODYzODFGQTJBRjA2MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTU3
LW1tLm1tICovLAogCQkJCTUzOEVDODc4MUY5OTNGMzAwMDREMjJBOCAvKiBVbmlmaWVkU291cmNl
NTcuY3BwICovLAorCQkJCURFNUY4NjM5MUZBMkFGMDcwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNl
NTgtbW0ubW0gKi8sCiAJCQkJNTM4RUM4MkYxRjk5M0YwQTAwNEQyMkE4IC8qIFVuaWZpZWRTb3Vy
Y2U1OC5jcHAgKi8sCisJCQkJREU1Rjg2MzIxRkEyQUVGRjAwNkRCNjNBIC8qIFVuaWZpZWRTb3Vy
Y2U1OS1tbS5tbSAqLywKIAkJCQk1MzhFQzg2QjFGOTkzRjI5MDA0RDIyQTggLyogVW5pZmllZFNv
dXJjZTU5LmNwcCAqLywKKwkJCQlERTVGODYzQTFGQTJBRjA3MDA2REI2M0EgLyogVW5pZmllZFNv
dXJjZTYwLW1tLm1tICovLAogCQkJCTUzOEVDODc5MUY5OTNGMzEwMDREMjJBOCAvKiBVbmlmaWVk
U291cmNlNjAuY3BwICovLAogCQkJCTUzOEVDODdFMUY5OTNGMzMwMDREMjJBOCAvKiBVbmlmaWVk
U291cmNlNjEuY3BwICovLAogCQkJCTUzOEVDODVBMUY5OTNGMjAwMDREMjJBOCAvKiBVbmlmaWVk
U291cmNlNjIuY3BwICovLApAQCAtMjk0MTgsNiArMjk0MjMsNyBAQAogCQkJCTUxN0E1MkYwMUY0
NzUzNUIwMERDREMwQSAvKiBTV1NlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMxMUMwMDMx
RkFBMkU5NTAwRTNDOEU1IC8qIFNXU2VydmVySm9iUXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxRjY0NTk3MUY0QTY4NkYwMEI1NERFRCAvKiBTV1NlcnZlclJlZ2lzdHJhdGlvbi5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTE4NTQzMEIxRkI2Nzg0NTAwNDc4Rjk1IC8qIFNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3QTUzNDYxRjUwQzE3RjAwRENE
QzBBIC8qIFNXU2VydmVyV29ya2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTgwODExNzE2RkNG
OUNCMDBCODBEMDcgLyogU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMDNDMDc0MTg4NDY5NUUwMEE1RjhDQSAvKiBTeXN0ZW1NZW1vcnkuaCBpbiBIZWFkZXJz
ICovLApAQCAtMzAzNjgsMTI0ICszMDM3NCwxMjQgQEAKIAkJCQlCRTg4RTBDMTE3MTVDRTI2MDA2
NThEOTggLyogVHJhY2tMaXN0QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzNCREMwNTFG
Njg0MzYxMDBFRTM0RUQgLyogVHJhY2tQcml2YXRlQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1MzhFQzgwMzFGOTZBRjgxMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTEtbW0ubW0gaW4gU291
cmNlcyAqLywKLQkJCQk1MzhFQzgwNTFGOTZBRjgxMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTIt
bW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQk1MzhFQzgwNzFGOTZBRjgxMDA0RDIyQTggLyogVW5p
ZmllZFNvdXJjZTMtbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVGODU2QzFGQTFBQkYzMDA2
REI2M0EgLyogVW5pZmllZFNvdXJjZTQtbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVGODU2
RDFGQTFBQkYzMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTUtbW0ubW0gaW4gU291cmNlcyAqLywK
LQkJCQlERTVGODU2RTFGQTFBQkYzMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTYtbW0ubW0gaW4g
U291cmNlcyAqLywKLQkJCQlERTVGODU2RjFGQTFBQkYzMDA2REI2M0EgLyogVW5pZmllZFNvdXJj
ZTctbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVGODU3MDFGQTFBQkYzMDA2REI2M0EgLyog
VW5pZmllZFNvdXJjZTgtbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVGODU3MTFGQTFBQkYz
MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTktbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVG
ODU3MjFGQTFBQkYzMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTEwLW1tLm1tIGluIFNvdXJjZXMg
Ki8sCi0JCQkJREU1Rjg1NzMxRkExQUJGMzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxMS1tbS5t
bSBpbiBTb3VyY2VzICovLAotCQkJCURFNUY4NTc0MUZBMUFCRjMwMDZEQjYzQSAvKiBVbmlmaWVk
U291cmNlMTItbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVGODU3NTFGQTFBQkYzMDA2REI2
M0EgLyogVW5pZmllZFNvdXJjZTEzLW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1NzYx
RkExQUJGMzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UxNC1tbS5tbSBpbiBTb3VyY2VzICovLAot
CQkJCURFNUY4NTc3MUZBMUFCRjMwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMTUtbW0ubW0gaW4g
U291cmNlcyAqLywKLQkJCQlERTVGODU3ODFGQTFBQkYzMDA2REI2M0EgLyogVW5pZmllZFNvdXJj
ZTE2LW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1NzkxRkExQUJGNDAwNkRCNjNBIC8q
IFVuaWZpZWRTb3VyY2UxNy1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCURFNUY4NTdBMUZBMUFC
RjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMTgtbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlE
RTVGODU3QjFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTE5LW1tLm1tIGluIFNvdXJj
ZXMgKi8sCi0JCQkJREU1Rjg1N0MxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UyMC1t
bS5tbSBpbiBTb3VyY2VzICovLAotCQkJCURFNUY4NTdEMUZBMUFCRjQwMDZEQjYzQSAvKiBVbmlm
aWVkU291cmNlMjEtbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVGODU3RTFGQTFBQkY0MDA2
REI2M0EgLyogVW5pZmllZFNvdXJjZTIyLW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1
N0YxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UyMy1tbS5tbSBpbiBTb3VyY2VzICov
LAotCQkJCURFNUY4NTgwMUZBMUFCRjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMjQtbW0ubW0g
aW4gU291cmNlcyAqLywKLQkJCQlERTVGODU4MTFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNv
dXJjZTI1LW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1ODIxRkExQUJGNDAwNkRCNjNB
IC8qIFVuaWZpZWRTb3VyY2UyNi1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCURFNUY4NTgzMUZB
MUFCRjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMjctbW0ubW0gaW4gU291cmNlcyAqLywKLQkJ
CQlERTVGODU4NDFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTI4LW1tLm1tIGluIFNv
dXJjZXMgKi8sCi0JCQkJREU1Rjg1ODUxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2Uy
OS1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCURFNUY4NTg2MUZBMUFCRjQwMDZEQjYzQSAvKiBV
bmlmaWVkU291cmNlMzAtbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVGODU4NzFGQTFBQkY0
MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTMxLW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1
Rjg1ODgxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzMi1tbS5tbSBpbiBTb3VyY2Vz
ICovLAotCQkJCURFNUY4NTg5MUZBMUFCRjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMzMtbW0u
bW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVGODU4QTFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmll
ZFNvdXJjZTM0LW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1OEIxRkExQUJGNDAwNkRC
NjNBIC8qIFVuaWZpZWRTb3VyY2UzNS1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCURFNUY4NThD
MUZBMUFCRjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMzYtbW0ubW0gaW4gU291cmNlcyAqLywK
LQkJCQlERTVGODU4RDFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTM3LW1tLm1tIGlu
IFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1OEUxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3Vy
Y2UzOC1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCURFNUY4NThGMUZBMUFCRjQwMDZEQjYzQSAv
KiBVbmlmaWVkU291cmNlMzktbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVGODU5MDFGQTFB
QkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQwLW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJ
REU1Rjg1OTExRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0MS1tbS5tbSBpbiBTb3Vy
Y2VzICovLAotCQkJCURFNUY4NTkyMUZBMUFCRjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDIt
bW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVGODU5MzFGQTFBQkY0MDA2REI2M0EgLyogVW5p
ZmllZFNvdXJjZTQzLW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1OTQxRkExQUJGNDAw
NkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0NC1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCURFNUY4
NTk1MUZBMUFCRjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDUtbW0ubW0gaW4gU291cmNlcyAq
LywKLQkJCQlERTVGODU5NjFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ2LW1tLm1t
IGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg1OTcxRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRT
b3VyY2U0Ny1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCURFNUY4NTk4MUZBMUFCRjQwMDZEQjYz
QSAvKiBVbmlmaWVkU291cmNlNDgtbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVGODU5OTFG
QTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ5LW1tLm1tIGluIFNvdXJjZXMgKi8sCi0J
CQkJREU1Rjg1OUExRkExQUJGNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1MC1tbS5tbSBpbiBT
b3VyY2VzICovLAotCQkJCURFNUY4NjUwMUZBMkFGMjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNl
NTEtbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVGODY1MTFGQTJBRjI0MDA2REI2M0EgLyog
VW5pZmllZFNvdXJjZTUyLW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg2NTIxRkEyQUYy
NDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1My1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCURF
NUY4NjUzMUZBMkFGMjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTQtbW0ubW0gaW4gU291cmNl
cyAqLywKLQkJCQlERTVGODY1NDFGQTJBRjI0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTU1LW1t
Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg2NTUxRkEyQUYyNDAwNkRCNjNBIC8qIFVuaWZp
ZWRTb3VyY2U1Ni1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCURFNUY4NjU2MUZBMkFGMjQwMDZE
QjYzQSAvKiBVbmlmaWVkU291cmNlNTctbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQlERTVGODY1
NzFGQTJBRjI0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTU4LW1tLm1tIGluIFNvdXJjZXMgKi8s
Ci0JCQkJREU1Rjg2NTgxRkEyQUYyNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1OS1tbS5tbSBp
biBTb3VyY2VzICovLAotCQkJCURFNUY4NjU5MUZBMkFGMjQwMDZEQjYzQSAvKiBVbmlmaWVkU291
cmNlNjAtbW0ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzhFQzgwMjFGOTZBRjgxMDA0RDIyQTgg
LyogVW5pZmllZFNvdXJjZTEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM4RUM4MDUxRjk2QUY4
MTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UyLW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4
RUM4MDQxRjk2QUY4MTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UyLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTUzOEVDODA3MUY5NkFGODEwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMy1tbS5tbSBp
biBTb3VyY2VzICovLAogCQkJCTUzOEVDODA2MUY5NkFGODEwMDREMjJBOCAvKiBVbmlmaWVkU291
cmNlMy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVGODU2QzFGQTFBQkYzMDA2REI2M0EgLyog
VW5pZmllZFNvdXJjZTQtbW0ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzhFQzgwODFGOTZBRjgx
MDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1Rjg1
NkQxRkExQUJGMzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1LW1tLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTM4RUM4MDkxRjk2QUY4MTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U1LmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCURFNUY4NTZFMUZBMUFCRjMwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNl
Ni1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODBBMUY5NkFGODEwMDREMjJBOCAvKiBV
bmlmaWVkU291cmNlNi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVGODU2RjFGQTFBQkYzMDA2
REI2M0EgLyogVW5pZmllZFNvdXJjZTctbW0ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzhFQzgw
QjFGOTZBRjgxMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTcuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJREU1Rjg1NzAxRkExQUJGMzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U4LW1tLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTM4RUM4MEMxRjk2QUY4MTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U4
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCURFNUY4NTcxMUZBMUFCRjMwMDZEQjYzQSAvKiBVbmlm
aWVkU291cmNlOS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDODBEMUY5NkFGODEwMDRE
MjJBOCAvKiBVbmlmaWVkU291cmNlOS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVGODU3MjFG
QTFBQkYzMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTEwLW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTM4RUM4MEUxRjk2QUY4MTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UxMC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlERTVGODU3MzFGQTFBQkYzMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTEx
LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4MEYxRjk2QUY4MTAwNEQyMkE4IC8qIFVu
aWZpZWRTb3VyY2UxMS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVGODU3NDFGQTFBQkYzMDA2
REI2M0EgLyogVW5pZmllZFNvdXJjZTEyLW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4
MTAxRjk2QUY4MTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UxMi5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlERTVGODU3NTFGQTFBQkYzMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTEzLW1tLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4MTExRjk2QUY4MTAwNEQyMkE4IC8qIFVuaWZpZWRTb3Vy
Y2UxMy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVGODU3NjFGQTFBQkYzMDA2REI2M0EgLyog
VW5pZmllZFNvdXJjZTE0LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4MTIxRjk2QUY4
MTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UxNC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVG
ODU3NzFGQTFBQkYzMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTE1LW1tLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTM4RUM4MTMxRjk2QUY4MTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UxNS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlERTVGODU3ODFGQTFBQkYzMDA2REI2M0EgLyogVW5pZmllZFNv
dXJjZTE2LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4MTQxRjk2QUY4MTAwNEQyMkE4
IC8qIFVuaWZpZWRTb3VyY2UxNi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVGODU3OTFGQTFB
QkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTE3LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTM4RUM4MTUxRjk2QUY4MTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UxNy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlERTVGODU3QTFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTE4LW1t
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4MTYxRjk2QUY4MTAwNEQyMkE4IC8qIFVuaWZp
ZWRTb3VyY2UxOC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVGODU3QjFGQTFBQkY0MDA2REI2
M0EgLyogVW5pZmllZFNvdXJjZTE5LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4MTcx
Rjk2QUY4MTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UxOS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlERTVGODU3QzFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTIwLW1tLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTM4RUM4MTgxRjk2QUY4MTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2Uy
MC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVGODU3RDFGQTFBQkY0MDA2REI2M0EgLyogVW5p
ZmllZFNvdXJjZTIxLW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4ODYxRjk5M0Y5QzAw
NEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UyMS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVGODU3
RTFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTIyLW1tLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTM4RUM4ODcxRjk5M0Y5QzAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UyMi5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlERTVGODU3RjFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJj
ZTIzLW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4ODgxRjk5M0Y5QzAwNEQyMkE4IC8q
IFVuaWZpZWRTb3VyY2UyMy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVGODU4MDFGQTFBQkY0
MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTI0LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4
RUM4ODkxRjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UyNC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlERTVGODU4MTFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTI1LW1tLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4OEExRjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRT
b3VyY2UyNS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVGODU4MjFGQTFBQkY0MDA2REI2M0Eg
LyogVW5pZmllZFNvdXJjZTI2LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4OEIxRjk5
M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UyNi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlE
RTVGODU4MzFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTI3LW1tLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTM4RUM4OEMxRjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UyNy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVGODU4NDFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmll
ZFNvdXJjZTI4LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4OEQxRjk5M0Y5RDAwNEQy
MkE4IC8qIFVuaWZpZWRTb3VyY2UyOC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVGODU4NTFG
QTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTI5LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTM4RUM4OEUxRjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UyOS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlERTVGODU4NjFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTMw
LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4OEYxRjk5M0Y5RDAwNEQyMkE4IC8qIFVu
aWZpZWRTb3VyY2UzMC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVGODU4NzFGQTFBQkY0MDA2
REI2M0EgLyogVW5pZmllZFNvdXJjZTMxLW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4
OTAxRjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UzMS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlERTVGODU4ODFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTMyLW1tLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4OTExRjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3Vy
Y2UzMi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVGODU4OTFGQTFBQkY0MDA2REI2M0EgLyog
VW5pZmllZFNvdXJjZTMzLW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4OTIxRjk5M0Y5
RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UzMy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVG
ODU4QTFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTM0LW1tLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTM4RUM4OTMxRjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UzNC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlERTVGODU4QjFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNv
dXJjZTM1LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4OTQxRjk5M0Y5RDAwNEQyMkE4
IC8qIFVuaWZpZWRTb3VyY2UzNS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVGODU4QzFGQTFB
QkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTM2LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTM4RUM4OTUxRjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UzNi5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlERTVGODU4RDFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTM3LW1t
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4OTYxRjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZp
ZWRTb3VyY2UzNy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVGODU4RTFGQTFBQkY0MDA2REI2
M0EgLyogVW5pZmllZFNvdXJjZTM4LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4OTcx
Rjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UzOC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlERTVGODU4RjFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTM5LW1tLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTM4RUM4OTgxRjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2Uz
OS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVGODU5MDFGQTFBQkY0MDA2REI2M0EgLyogVW5p
ZmllZFNvdXJjZTQwLW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4OTkxRjk5M0Y5RDAw
NEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U0MC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVGODU5
MTFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQxLW1tLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTM4RUM4OUExRjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U0MS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlERTVGODU5MjFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJj
ZTQyLW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4OUIxRjk5M0Y5RDAwNEQyMkE4IC8q
IFVuaWZpZWRTb3VyY2U0Mi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVGODU5MzFGQTFBQkY0
MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQzLW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4
RUM4OUMxRjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U0My5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlERTVGODU5NDFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ0LW1tLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4OUQxRjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRT
b3VyY2U0NC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVGODU5NTFGQTFBQkY0MDA2REI2M0Eg
LyogVW5pZmllZFNvdXJjZTQ1LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4OUUxRjk5
M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U0NS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlE
RTVGODU5NjFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ2LW1tLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTM4RUM4OUYxRjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U0Ni5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVGODU5NzFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmll
ZFNvdXJjZTQ3LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4QTAxRjk5M0Y5RDAwNEQy
MkE4IC8qIFVuaWZpZWRTb3VyY2U0Ny5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVGODU5ODFG
QTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ4LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTM4RUM4QTExRjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U0OC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlERTVGODU5OTFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ5
LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4QTIxRjk5M0Y5RDAwNEQyMkE4IC8qIFVu
aWZpZWRTb3VyY2U0OS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVGODU5QTFGQTFBQkY0MDA2
REI2M0EgLyogVW5pZmllZFNvdXJjZTUwLW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4
QTMxRjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U1MC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlERTVGODY1MDFGQTJBRjI0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTUxLW1tLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4QTQxRjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3Vy
Y2U1MS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVGODY1MTFGQTJBRjI0MDA2REI2M0EgLyog
VW5pZmllZFNvdXJjZTUyLW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4QTUxRjk5M0Y5
RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U1Mi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVG
ODY1MjFGQTJBRjI0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTUzLW1tLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTM4RUM4QTYxRjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U1My5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlERTVGODY1MzFGQTJBRjI0MDA2REI2M0EgLyogVW5pZmllZFNv
dXJjZTU0LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4QTcxRjk5M0Y5RDAwNEQyMkE4
IC8qIFVuaWZpZWRTb3VyY2U1NC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVGODY1NDFGQTJB
RjI0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTU1LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTM4RUM4QTgxRjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U1NS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlERTVGODY1NTFGQTJBRjI0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTU2LW1t
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4QTkxRjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZp
ZWRTb3VyY2U1Ni5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVGODY1NjFGQTJBRjI0MDA2REI2
M0EgLyogVW5pZmllZFNvdXJjZTU3LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4QUEx
Rjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U1Ny5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlERTVGODY1NzFGQTJBRjI0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTU4LW1tLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTM4RUM4QUIxRjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U1
OC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVGODY1ODFGQTJBRjI0MDA2REI2M0EgLyogVW5p
ZmllZFNvdXJjZTU5LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4QUMxRjk5M0Y5RDAw
NEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U1OS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVGODY1
OTFGQTJBRjI0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTYwLW1tLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTM4RUM4QUQxRjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U2MC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MzhFQzhBRTFGOTkzRjlEMDA0RDIyQTggLyogVW5pZmllZFNvdXJj
ZTYxLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDOEFGMUY5OTNGOUQwMDREMjJBOCAvKiBV
bmlmaWVkU291cmNlNjIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwCmlu
ZGV4IDRkMzM1MDFjNmRhLi5mMGVjNzY2ZTM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKQEAg
LTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogewot
ICAgIHJldHVybiB7IHJlZ2lzdHJhdGlvbktleS5pc29sYXRlZENvcHkoKSwgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIHNjcmlwdC5pc29sYXRlZENvcHkoKSwgc2NyaXB0VVJMLmlzb2xhdGVkQ29w
eSgpIH07CisgICAgcmV0dXJuIHsgcmVnaXN0cmF0aW9uS2V5Lmlzb2xhdGVkQ29weSgpLCBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLCBzY3JpcHRVUkwuaXNv
bGF0ZWRDb3B5KCksIHdvcmtlclR5cGUgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YS5oCmluZGV4IDA4YzMxYmM5NTQwLi5iN2Q2NmYxZTVhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIgogI2lu
Y2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgIldvcmtlclR5cGUuaCIKIAogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKIApAQCAtMzgsNiArMzksNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRl
eHREYXRhIHsKICAgICBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllcjsKICAgICBTdHJpbmcgc2NyaXB0OwogICAgIFVSTCBzY3JpcHRVUkw7CisgICAgV29ya2Vy
VHlwZSB3b3JrZXJUeXBlOwogICAgIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IGRlY29kZShEZWNvZGVy
Jik7CkBAIC00OCw3ICs1MCw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgewog
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IHJlZ2lzdHJh
dGlvbktleSA8PCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA8PCBzY3JpcHQgPDwgc2NyaXB0VVJM
OworICAgIGVuY29kZXIgPDwgcmVnaXN0cmF0aW9uS2V5IDw8IHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIDw8IHNjcmlwdCA8PCBzY3JpcHRVUkwgPDwgd29ya2VyVHlwZTsKIH0KIAogdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4KQEAgLTY5LDggKzcxLDEyIEBAIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdv
cmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29kZShEZWNvZGVy
CiAgICAgVVJMIHNjcmlwdFVSTDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNjcmlwdFVSTCkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4ge3sgV1RGTW92ZSgq
cmVnaXN0cmF0aW9uS2V5KSwgV1RGTW92ZSgqc2VydmljZVdvcmtlcklkZW50aWZpZXIpLCBXVEZN
b3ZlKHNjcmlwdCksIFdURk1vdmUoc2NyaXB0VVJMKSB9fTsKKyAgICAKKyAgICBXb3JrZXJUeXBl
IHdvcmtlclR5cGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0od29ya2VyVHlwZSkpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAgcmV0dXJuIHt7IFdURk1vdmUo
KnJlZ2lzdHJhdGlvbktleSksIFdURk1vdmUoKnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSwgV1RG
TW92ZShzY3JpcHQpLCBXVEZNb3ZlKHNjcmlwdFVSTCksIHdvcmtlclR5cGUgfX07CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggNGJmMTlkODVi
MjIuLjNhMjBiM2E5ZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMzMsOSArMzMsOCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6U2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBib29sIGlz
T25saW5lLCBTZXJ2aWNlV29ya2VyVGhyZWFkJiB0aHJlYWQsIGJvb2wgc2hvdWxkQnlwYXNzTWFp
bldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3Jp
Z2luLCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblBy
b3h5KiBjb25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlciwgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhLCBj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgU2VydmljZVdvcmtlclRocmVhZCYgdGhyZWFkLCBib29s
IHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgUmVmPFNlY3VyaXR5
T3JpZ2luPiYmIHRvcE9yaWdpbiwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBJREJDbGllbnQ6
OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29j
a2V0UHJvdmlkZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICA6IFdvcmtlckdsb2Jh
bFNjb3BlKHVybCwgaWRlbnRpZmllciwgdXNlckFnZW50LCBpc09ubGluZSwgdGhyZWFkLCBzaG91
bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFdURk1vdmUodG9wT3JpZ2lu
KSwgdGltZU9yaWdpbiwgY29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlciwgc2Vzc2lvbklE
KQotICAgICwgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcihzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllcikKICAgICAsIG1fY29udGV4dERhdGEoY3Jvc3NUaHJlYWRDb3B5KGRhdGEpKQogICAg
ICwgbV9jbGllbnRzKFNlcnZpY2VXb3JrZXJDbGllbnRzOjpjcmVhdGUoKnRoaXMpKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5oCmluZGV4IGVlNDk1ODY5MjQwLi45MDAxNTE3ZGRmNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUuaApAQCAtNTEsOCArNTEsNiBAQCBwdWJsaWM6CiAgICAgU2VydmljZVdvcmtlckNsaWVu
dHMmIGNsaWVudHMoKSB7IHJldHVybiBtX2NsaWVudHMuZ2V0KCk7IH0KICAgICBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uKiByZWdpc3RyYXRpb24oKTsKICAgICAKLSAgICB1aW50NjRfdCBzZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXI7IH0KLQogICAgIHZvaWQgc2tpcFdhaXRpbmcoUmVmPERlZmVycmVkUHJvbWlz
ZT4mJik7CiAKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgp
IGNvbnN0IGZpbmFsOwpAQCAtNjAsOSArNTgsOCBAQCBwdWJsaWM6CiAgICAgU2VydmljZVdvcmtl
clRocmVhZCYgdGhyZWFkKCk7CiAKIHByaXZhdGU6Ci0gICAgU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50LCBib29sIGlzT25saW5lLCBTZXJ2aWNlV29ya2VyVGhyZWFk
JiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZjxT
ZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgSURC
Q2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciosIFBBTDo6U2Vzc2lv
bklEKTsKKyAgICBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgU2VydmljZVdvcmtlckNv
bnRleHREYXRhJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgU2VydmljZVdvcmtlclRocmVhZCYsIGJv
b2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBSZWY8U2VjdXJp
dHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIElEQkNsaWVu
dDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqLCBQQUw6OlNlc3Npb25JRCk7
CiAKLSAgICB1aW50NjRfdCBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyOwogICAgIFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YSBtX2NvbnRleHREYXRhOwogICAgIFJlZjxTZXJ2aWNlV29ya2Vy
Q2xpZW50cz4gbV9jbGllbnRzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyVHlwZXMuaAppbmRleCBhM2M2YzNlNjE3OC4uYzcwYWUwOGFh
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlclR5cGVzLmgKQEAgLTUwLDYgKzUwLDkgQEAgZW51bSBjbGFzcyBTaG91bGROb3RpZnlXaGVu
UmVzb2x2ZWQgeyBObywgWWVzIH07CiBlbnVtIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyVHlwZSB7IH07CiB1c2luZyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
ciA9IE9iamVjdElkZW50aWZpZXI8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXJU
eXBlPjsKIAorZW51bSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyVHlwZSB7
IH07Cit1c2luZyBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyID0gT2JqZWN0
SWRlbnRpZmllcjxTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyVHlwZT47CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggNjMzOGU0ZTc1NWUuLjIzYzZiYjZm
OGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcApAQCAtNzMsOSArNzMsOCBAQCBwcml2
YXRlOgogLy8gRklYTUU6IFVzZSBhIHZhbGlkIGlzT25saW5lIGZsYWcKIC8vIEZJWE1FOiBVc2Ug
dmFsaWQgcnVudGltZSBmbGFncwogCi1TZXJ2aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2Vy
VGhyZWFkKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEmIGRhdGEsIFBBTDo6U2Vzc2lvbklELCBXb3JrZXJMb2FkZXJQcm94
eSYgbG9hZGVyUHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkmIGRlYnVnZ2VyUHJveHkpCitTZXJ2
aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhyZWFkKGNvbnN0IFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSYgZGF0YSwgUEFMOjpTZXNzaW9uSUQsIFdvcmtlckxvYWRlclByb3h5JiBsb2Fk
ZXJQcm94eSwgV29ya2VyRGVidWdnZXJQcm94eSYgZGVidWdnZXJQcm94eSkKICAgICA6IFdvcmtl
clRocmVhZChkYXRhLnNjcmlwdFVSTCwgInNlcnZpY2V3b3JrZXI6IiArIEluc3BlY3Rvcjo6SWRl
bnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCksIEFTQ0lJTGl0ZXJhbCgiV29ya2Vy
VXNlckFnZW50IiksIC8qIGlzT25saW5lICovIGZhbHNlLCBkYXRhLnNjcmlwdCwgbG9hZGVyUHJv
eHksIGRlYnVnZ2VyUHJveHksIER1bW15U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzaGFyZWQo
KSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIENvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVycyB7IH0sIGZhbHNlLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGRhdGEuc2Ny
aXB0VVJMKS5nZXQoKSwgTW9ub3RvbmljVGltZTo6bm93KCksIG51bGxwdHIsIG51bGxwdHIsIEpT
Qzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVkKCksIFNlc3Npb25JRDo6ZGVmYXVsdFNl
c3Npb25JRCgpKQotICAgICwgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcihzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllcikKICAgICAsIG1fZGF0YShkYXRhLmlzb2xhdGVkQ29weSgpKQogICAg
ICwgbV93b3JrZXJPYmplY3RQcm94eShEdW1teVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2hh
cmVkKCkpCiB7CkBAIC04Niw3ICs4NSw3IEBAIFNlcnZpY2VXb3JrZXJUaHJlYWQ6On5TZXJ2aWNl
V29ya2VyVGhyZWFkKCkgPSBkZWZhdWx0OwogCiBSZWY8V29ya2VyR2xvYmFsU2NvcGU+IFNlcnZp
Y2VXb3JrZXJUaHJlYWQ6OmNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBib29sIGlz
T25saW5lLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBib29s
IHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgUmVmPFNlY3VyaXR5
T3JpZ2luPiYmIHRvcE9yaWdpbiwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgcmV0dXJuIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6
Y3JlYXRlKG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIG1fZGF0YSwgdXJsLCBpZGVudGlm
aWVyLCB1c2VyQWdlbnQsIGlzT25saW5lLCAqdGhpcywgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29u
dGVudFNlY3VyaXR5UG9saWN5LCBXVEZNb3ZlKHRvcE9yaWdpbiksIHRpbWVPcmlnaW4sIGlkYkNv
bm5lY3Rpb25Qcm94eSgpLCBzb2NrZXRQcm92aWRlcigpLCBzZXNzaW9uSUQpOworICAgIHJldHVy
biBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZShtX2RhdGEsIHVybCwgaWRlbnRpZmll
ciwgdXNlckFnZW50LCBpc09ubGluZSwgKnRoaXMsIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRl
bnRTZWN1cml0eVBvbGljeSwgV1RGTW92ZSh0b3BPcmlnaW4pLCB0aW1lT3JpZ2luLCBpZGJDb25u
ZWN0aW9uUHJveHkoKSwgc29ja2V0UHJvdmlkZXIoKSwgc2Vzc2lvbklEKTsKIH0KIAogdm9pZCBT
ZXJ2aWNlV29ya2VyVGhyZWFkOjpydW5FdmVudExvb3AoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5o
CmluZGV4IDczZGVjZDUwMzkwLi44NGE4ZTNiNDc2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQu
aApAQCAtNjAsNyArNjAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KCk7
CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudCgpOwogCi0gICAgdWludDY0X3Qgc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyOyB9CiAgICAgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBjb250ZXh0RGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCiAgICAgU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5zZXJ2aWNlV29ya2VySWRlbnRp
ZmllcjsgfQpAQCAtNzAsMTIgKzY5LDExIEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHJ1bkV2ZW50
TG9vcCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFdFQkNPUkVfRVhQT1JUIFNlcnZpY2VX
b3JrZXJUaHJlYWQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSYsIFBBTDo6U2Vzc2lvbklELCBXb3JrZXJMb2FkZXJQcm94
eSYsIFdvcmtlckRlYnVnZ2VyUHJveHkmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTZXJ2aWNlV29y
a2VyVGhyZWFkKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYsIFBBTDo6U2Vzc2lvbklE
LCBXb3JrZXJMb2FkZXJQcm94eSYsIFdvcmtlckRlYnVnZ2VyUHJveHkmKTsKIAogICAgIHZvaWQg
dXBkYXRlRXh0ZW5kZWRFdmVudHNTZXQoRXh0ZW5kYWJsZUV2ZW50KiBuZXdFdmVudCA9IG51bGxw
dHIpOwogICAgIGJvb2wgaGFzUGVuZGluZ0V2ZW50cygpIGNvbnN0IHsgcmV0dXJuICFtX2V4dGVu
ZGVkRXZlbnRzLmlzRW1wdHkoKTsgfQogCi0gICAgdWludDY0X3QgbV9zZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllcjsKICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgbV9kYXRhOwogICAgIFdv
cmtlck9iamVjdFByb3h5JiBtX3dvcmtlck9iamVjdFByb3h5OwogICAgIFZlY3RvcjxSZWY8RXh0
ZW5kYWJsZUV2ZW50Pj4gbV9leHRlbmRlZEV2ZW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkuY3BwCmluZGV4IDgyMWRjZWE0NTdiLi4wZjU3YjA5ZmIzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCkBAIC0zNiwxMSArMzYsNiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlZjxTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk+IFNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eTo6Y3JlYXRlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRp
b24sIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEmIGRhdGEsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ2FjaGVTdG9y
YWdlUHJvdmlkZXImIGNhY2hlU3RvcmFnZVByb3ZpZGVyKQotewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSB7IFdURk1vdmUocGFnZUNvbmZpZ3VyYXRp
b24pLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZGF0YSwgc2Vzc2lvbklELCBjYWNoZVN0
b3JhZ2VQcm92aWRlciB9KTsKLX0KLQogc3RhdGljIGlubGluZSBVbmlxdWVSZWY8UGFnZT4gY3Jl
YXRlUGFnZUZvclNlcnZpY2VXb3JrZXIoUGFnZUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9u
LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBhdXRvIHBhZ2UgPSBtYWtlVW5pcXVlUmVmPFBhZ2U+
KFdURk1vdmUoY29uZmlndXJhdGlvbikpOwpAQCAtNTIsMTAgKzQ3LDEwIEBAIHN0YXRpYyBpbmxp
bmUgVW5pcXVlUmVmPFBhZ2U+IGNyZWF0ZVBhZ2VGb3JTZXJ2aWNlV29ya2VyKFBhZ2VDb25maWd1
cmF0aW9uJiYgY29uCiAgICAgcmV0dXJuIHBhZ2U7CiB9CiAKLVNlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5KFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNv
bmZpZ3VyYXRpb24sIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Q2FjaGVTdG9yYWdlUHJvdmlkZXImIGNhY2hlU3RvcmFnZVByb3ZpZGVyKQorU2VydmljZVdvcmtl
clRocmVhZFByb3h5OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoUGFnZUNvbmZpZ3VyYXRpb24m
JiBwYWdlQ29uZmlndXJhdGlvbiwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRh
LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENhY2hlU3RvcmFnZVByb3ZpZGVyJiBjYWNoZVN0
b3JhZ2VQcm92aWRlcikKICAgICA6IG1fcGFnZShjcmVhdGVQYWdlRm9yU2VydmljZVdvcmtlcihX
VEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSwgZGF0YS5zY3JpcHRVUkwpKQogICAgICwgbV9kb2N1
bWVudCgqbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQotICAgICwgbV9zZXJ2aWNlV29y
a2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmNyZWF0ZShzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciwgZGF0YSwgc2Vzc2lvbklELCAqdGhpcywgKnRoaXMpKQorICAgICwgbV9zZXJ2aWNl
V29ya2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmNyZWF0ZShkYXRhLCBzZXNzaW9uSUQs
ICp0aGlzLCAqdGhpcykpCiAgICAgLCBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyKGNhY2hlU3RvcmFn
ZVByb3ZpZGVyKQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogICAgICwgbV9pbnNwZWN0
b3JQcm94eSgqdGhpcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKaW5kZXggYjk5
ODg1NmU3MTQuLjEyNzJiMjQzNTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHku
aApAQCAtNDcsMTQgKzQ3LDE3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CiAK
IGNsYXNzIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk+LCBwdWJsaWMgV29ya2VyTG9hZGVy
UHJveHksIHB1YmxpYyBXb3JrZXJEZWJ1Z2dlclByb3h5IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eT4gY3JlYXRlKFBhZ2VD
b25maWd1cmF0aW9uJiYsIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25z
dCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBQQUw6OlNlc3Npb25JRCwgQ2FjaGVTdG9yYWdl
UHJvdmlkZXImKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmPFNl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eT4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlclRocmVhZFByb3h5KHN0ZDo6
Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgIH0KIAogICAgIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJUaHJlYWQt
PmlkZW50aWZpZXIoKTsgfQogICAgIFNlcnZpY2VXb3JrZXJUaHJlYWQmIHRocmVhZCgpIHsgcmV0
dXJuIG1fc2VydmljZVdvcmtlclRocmVhZC5nZXQoKTsgfQogICAgIFNlcnZpY2VXb3JrZXJJbnNw
ZWN0b3JQcm94eSYgaW5zcGVjdG9yUHJveHkoKSB7IHJldHVybiBtX2luc3BlY3RvclByb3h5OyB9
CiAKIHByaXZhdGU6Ci0gICAgU2VydmljZVdvcmtlclRocmVhZFByb3h5KFBhZ2VDb25maWd1cmF0
aW9uJiYsIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEmLCBQQUw6OlNlc3Npb25JRCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXIm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoUGFnZUNvbmZp
Z3VyYXRpb24mJiwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiwgUEFMOjpTZXNzaW9u
SUQsIENhY2hlU3RvcmFnZVByb3ZpZGVyJik7CiAKICAgICAvLyBXb3JrZXJMb2FkZXJQcm94eQog
ICAgIGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrJiYsIGNvbnN0IFN0cmluZyYgbW9kZSkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IGI5
MGI4YjYxMzk4Li5kNmQxMzQyM2JhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTM0LDE5ICszNCwyMCBAQAogI2luY2x1
ZGUgIlNXT3JpZ2luU3RvcmUuaCIKICNpbmNsdWRlICJTV1NlcnZlckpvYlF1ZXVlLmgiCiAjaW5j
bHVkZSAiU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCIKKyNpbmNsdWRlICJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJTV1NlcnZlcldvcmtlci5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgiCiAj
aW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoUmVzdWx0LmgiCiAjaW5jbHVkZSAiU2VydmljZVdv
cmtlckpvYkRhdGEuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMg
U2VydmljZVdvcmtlcklkZW50aWZpZXIgZ2VuZXJhdGVTZXJ2aWNlV29ya2VySWRlbnRpZmllcigp
CiB7Ci0gICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZpZXIgPSAwOwotICAgIHJldHVybiBtYWtl
T2JqZWN0SWRlbnRpZmllcjxTZXJ2aWNlV29ya2VySWRlbnRpZmllclR5cGU+KCsraWRlbnRpZmll
cik7CisgICAgcmV0dXJuIGdlbmVyYXRlT2JqZWN0SWRlbnRpZmllcjxTZXJ2aWNlV29ya2VySWRl
bnRpZmllclR5cGU+KCk7CiB9CiAKIFNXU2VydmVyOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uKFNX
U2VydmVyJiBzZXJ2ZXIsIHVpbnQ2NF90IGlkZW50aWZpZXIpCkBAIC02MSw2ICs2MiwxMiBAQCBT
V1NlcnZlcjo6Q29ubmVjdGlvbjo6fkNvbm5lY3Rpb24oKQogICAgIG1fc2VydmVyLnVucmVnaXN0
ZXJDb25uZWN0aW9uKCp0aGlzKTsKIH0KIAorSGFzaFNldDxTV1NlcnZlcio+JiBTV1NlcnZlcjo6
YWxsU2VydmVycygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U1dTZXJ2
ZXIqPj4gc2VydmVyczsKKyAgICByZXR1cm4gc2VydmVyczsKK30KKwogU1dTZXJ2ZXI6On5TV1Nl
cnZlcigpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9jb25uZWN0aW9ucy5pc0VtcHR5KCkpOwpA
QCAtNzUsNiArODIsOCBAQCBTV1NlcnZlcjo6flNXU2VydmVyKCkKICAgICAvLyBCdXQgb25jZSBp
dCBkb2VzIHN0YXJ0IGhhcHBlbmluZywgdGhpcyBBU1NFUlQgd2lsbCBjYXRjaCB1cyBkb2luZyBp
dCB3cm9uZy4KICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fdGFza1RocmVhZExvY2spOwogICAg
IEFTU0VSVCghbV90YXNrVGhyZWFkKTsKKyAgICAKKyAgICBhbGxTZXJ2ZXJzKCkucmVtb3ZlKHRo
aXMpOwogfQogCiBTV1NlcnZlclJlZ2lzdHJhdGlvbiogU1dTZXJ2ZXI6OmdldFJlZ2lzdHJhdGlv
bihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpCkBA
IC0xMjgsMjEgKzEzNyw2IEBAIHZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OmZpbmlzaEZldGNo
aW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckZldGNoCiAgICAgbV9zZXJ2ZXIu
c2NyaXB0RmV0Y2hGaW5pc2hlZCgqdGhpcywgcmVzdWx0KTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6
Q29ubmVjdGlvbjo6ZGlkRmluaXNoSW5zdGFsbChjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5JiBrZXksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCi17Ci0gICAgbV9zZXJ2ZXIuZGlkRmluaXNoSW5zdGFs
bCgqdGhpcywga2V5LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgd2FzU3VjY2Vzc2Z1bCk7Ci19
Ci0KLXZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OmRpZEZpbmlzaEFjdGl2YXRpb24oY29uc3Qg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYga2V5LCBTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKLXsKLSAgICBtX3NlcnZlci5kaWRGaW5pc2hBY3Rp
dmF0aW9uKCp0aGlzLCBrZXksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLX0KLQotdm9pZCBT
V1NlcnZlcjo6Q29ubmVjdGlvbjo6c2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHMoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgaGFzUGVu
ZGluZ0V2ZW50cykKLXsKLSAgICBtX3NlcnZlci5zZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2
ZW50cygqdGhpcywgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGhhc1BlbmRpbmdFdmVudHMpOwot
fQotCiB2b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJv
bWlzZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXkpCiB7CiAgICAgbV9z
ZXJ2ZXIuZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoKnRoaXMsIGtleSk7CkBAIC0xNTgs
MTkgKzE1MiwxMCBAQCB2b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpyZW1vdmVTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoY29uc3QgU2VydmljZQogICAgIG1fc2VydmVyLnJlbW92
ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oKnRoaXMsIGtleSwgaWRlbnRpZmllcik7
CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0
YXJ0KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwg
U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQotewotICAgIG1fc2VydmVyLnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KCp0aGlzLCByZWdp
c3RyYXRpb25LZXksIGlkZW50aWZpZXIsIG1lc3NhZ2UpOwotfQotCi12b2lkIFNXU2VydmVyOjpD
b25uZWN0aW9uOjpzY3JpcHRDb250ZXh0U3RhcnRlZChjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIpCi17Ci0gICAgbV9zZXJ2ZXIuc2NyaXB0Q29udGV4dFN0YXJ0ZWQoKnRoaXMsIHJlZ2lz
dHJhdGlvbktleSwgaWRlbnRpZmllcik7Ci19Ci0KIFNXU2VydmVyOjpTV1NlcnZlcihVbmlxdWVS
ZWY8U1dPcmlnaW5TdG9yZT4mJiBvcmlnaW5TdG9yZSkKICAgICA6IG1fb3JpZ2luU3RvcmUoV1RG
TW92ZShvcmlnaW5TdG9yZSkpCiB7CisgICAgYWxsU2VydmVycygpLmFkZCh0aGlzKTsKICAgICBt
X3Rhc2tUaHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZShBU0NJSUxpdGVyYWwoIlNlcnZpY2VXb3JrZXIg
VGFzayBUaHJlYWQiKSwgW3RoaXNdIHsKICAgICAgICAgdGFza1RocmVhZEVudHJ5UG9pbnQoKTsK
ICAgICB9KTsKQEAgLTI0NSw1MiArMjMwLDM2IEBAIHZvaWQgU1dTZXJ2ZXI6OnNjcmlwdEZldGNo
RmluaXNoZWQoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlckZlCiAg
ICAgam9iUXVldWUtPnNjcmlwdEZldGNoRmluaXNoZWQoY29ubmVjdGlvbiwgcmVzdWx0KTsKIH0K
IAotdm9pZCBTV1NlcnZlcjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoQ29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0
aW9uS2V5LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCit2b2lkIFNXU2VydmVyOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChTV1Nl
cnZlcldvcmtlciYgd29ya2VyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgQVNTRVJU
KG1fY29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKLSAgICAK
LSAgICBpZiAoYXV0byogam9iUXVldWUgPSBtX2pvYlF1ZXVlcy5nZXQocmVnaXN0cmF0aW9uS2V5
KSkKLSAgICAgICAgam9iUXVldWUtPnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbm5lY3Rp
b24sIGlkZW50aWZpZXIsIG1lc3NhZ2UpOworICAgIGlmIChhdXRvKiBqb2JRdWV1ZSA9IG1fam9i
UXVldWVzLmdldCh3b3JrZXIucmVnaXN0cmF0aW9uS2V5KCkpKQorICAgICAgICBqb2JRdWV1ZS0+
c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQod29ya2VyLmlkZW50aWZpZXIoKSwgbWVzc2FnZSk7
CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OnNjcmlwdENvbnRleHRTdGFydGVkKENvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlv
bktleSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgU1dTZXJ2ZXI6
OnNjcmlwdENvbnRleHRTdGFydGVkKFNXU2VydmVyV29ya2VyJiB3b3JrZXIpCiB7Ci0gICAgQVNT
RVJUKG1fY29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKLQot
ICAgIGlmIChhdXRvKiBqb2JRdWV1ZSA9IG1fam9iUXVldWVzLmdldChyZWdpc3RyYXRpb25LZXkp
KQotICAgICAgICBqb2JRdWV1ZS0+c2NyaXB0Q29udGV4dFN0YXJ0ZWQoY29ubmVjdGlvbiwgaWRl
bnRpZmllcik7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXI6OmRpZEZpbmlzaEluc3RhbGwoQ29ubmVjdGlv
biYgY29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0
cmF0aW9uS2V5LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgYm9vbCB3YXNTdWNjZXNzZnVsKQotewotICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25zLmNvbnRh
aW5zKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKSk7Ci0KLSAgICBpZiAoYXV0byogam9iUXVldWUg
PSBtX2pvYlF1ZXVlcy5nZXQocmVnaXN0cmF0aW9uS2V5KSkKLSAgICAgICAgam9iUXVldWUtPmRp
ZEZpbmlzaEluc3RhbGwoY29ubmVjdGlvbiwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHdhc1N1
Y2Nlc3NmdWwpOworICAgIGlmIChhdXRvKiBqb2JRdWV1ZSA9IG1fam9iUXVldWVzLmdldCh3b3Jr
ZXIucmVnaXN0cmF0aW9uS2V5KCkpKQorICAgICAgICBqb2JRdWV1ZS0+c2NyaXB0Q29udGV4dFN0
YXJ0ZWQod29ya2VyLmlkZW50aWZpZXIoKSk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OmRpZEZpbmlz
aEFjdGl2YXRpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllcikKK3ZvaWQgU1dTZXJ2ZXI6OmRpZEZpbmlzaEluc3RhbGwo
U1dTZXJ2ZXJXb3JrZXImIHdvcmtlciwgYm9vbCB3YXNTdWNjZXNzZnVsKQogewotICAgIEFTU0VS
VF9VTlVTRUQoY29ubmVjdGlvbiwgbV9jb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLmlk
ZW50aWZpZXIoKSkpOwotCi0gICAgaWYgKGF1dG8qIHJlZ2lzdHJhdGlvbiA9IGdldFJlZ2lzdHJh
dGlvbihyZWdpc3RyYXRpb25LZXkpKQotICAgICAgICBTV1NlcnZlckpvYlF1ZXVlOjpkaWRGaW5p
c2hBY3RpdmF0aW9uKCpyZWdpc3RyYXRpb24sIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAg
ICBpZiAoYXV0byogam9iUXVldWUgPSBtX2pvYlF1ZXVlcy5nZXQod29ya2VyLnJlZ2lzdHJhdGlv
bktleSgpKSkKKyAgICAgICAgam9iUXVldWUtPmRpZEZpbmlzaEluc3RhbGwod29ya2VyLmlkZW50
aWZpZXIoKSwgd2FzU3VjY2Vzc2Z1bCk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OnNldFNlcnZpY2VX
b3JrZXJIYXNQZW5kaW5nRXZlbnRzKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIGhhc1BlbmRpbmdFdmVu
dHMpCit2b2lkIFNXU2VydmVyOjpkaWRGaW5pc2hBY3RpdmF0aW9uKFNXU2VydmVyV29ya2VyJiB3
b3JrZXIpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChjb25uZWN0aW9uLCBtX2Nvbm5lY3Rpb25zLmNv
bnRhaW5zKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKSk7Ci0KLSAgICBpZiAoYXV0byogc2Vydmlj
ZVdvcmtlciA9IG1fd29ya2Vyc0J5SUQuZ2V0KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkKLSAg
ICAgICAgc2VydmljZVdvcmtlci0+c2V0SGFzUGVuZGluZ0V2ZW50cyhoYXNQZW5kaW5nRXZlbnRz
KTsKKyAgICBpZiAoYXV0byogcmVnaXN0cmF0aW9uID0gZ2V0UmVnaXN0cmF0aW9uKHdvcmtlci5y
ZWdpc3RyYXRpb25LZXkoKSkpCisgICAgICAgIFNXU2VydmVySm9iUXVldWU6OmRpZEZpbmlzaEFj
dGl2YXRpb24oKnJlZ2lzdHJhdGlvbiwgd29ya2VyLmlkZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQg
U1dTZXJ2ZXI6OmRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKENvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktl
eSkKIHsKLSAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLmlkZW50
aWZpZXIoKSkpOworICAgIEFTU0VSVF9VTlVTRUQoY29ubmVjdGlvbiwgbV9jb25uZWN0aW9ucy5j
b250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOwogCiAgICAgaWYgKGF1dG8qIGpvYlF1
ZXVlID0gbV9qb2JRdWV1ZXMuZ2V0KHJlZ2lzdHJhdGlvbktleSkpCi0gICAgICAgIGpvYlF1ZXVl
LT5kaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShjb25uZWN0aW9uKTsKKyAgICAgICAgam9i
UXVldWUtPmRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKCk7CiB9CiAKIHZvaWQgU1dTZXJ2
ZXI6OmFkZENsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oQ29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYga2V5LCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQpAQCAtMzIxLDI2ICsyOTAsNzUg
QEAgdm9pZCBTV1NlcnZlcjo6cmVtb3ZlQ2xpZW50U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb24KICAgICByZWdpc3RyYXRpb24tPnJlbW92ZUNsaWVu
dFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpOwogfQog
Ci1SZWY8U1dTZXJ2ZXJXb3JrZXI+IFNXU2VydmVyOjp1cGRhdGVXb3JrZXIoQ29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0
aW9uS2V5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIFdvcmtlclR5cGUg
dHlwZSkKK3ZvaWQgU1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcihDb25uZWN0aW9uJiwgY29uc3QgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIFdvcmtlclR5cGUgdHlwZSkKIHsKICAgICBhdXRvIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyID0gZ2VuZXJhdGVTZXJ2aWNlV29ya2VySWRlbnRpZmllcigp
OwogCi0gICAgYXV0byByZXN1bHQgPSBtX3dvcmtlcnNCeUlELmFkZChzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgU1dTZXJ2ZXJXb3JrZXI6OmNyZWF0ZShyZWdpc3RyYXRpb25LZXksIHVybCwgc2Ny
aXB0LCB0eXBlLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpOwotICAgIEFTU0VSVChyZXN1bHQu
aXNOZXdFbnRyeSk7CisgICAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIGRhdGEgPSB7IHJlZ2lz
dHJhdGlvbktleSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHNjcmlwdCwgdXJsLCB0eXBlIH07
CiAKLSAgICBjb25uZWN0aW9uLmluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dCh7IHJlZ2lzdHJh
dGlvbktleSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHNjcmlwdCwgdXJsIH0pOworICAgIC8v
IFJpZ2h0IG5vdyB3ZSBvbmx5IGV2ZXIga2VlcCB1cCB0byBvbmUgY29ubmVjdGlvbiB0byBvbmUg
U1cgY29udGV4dCBwcm9jZXNzLgorICAgIC8vIEFuZCBpdCBzaG91bGQgYWx3YXlzIGV4aXN0IGlm
IHdlJ3JlIGNhbGxpbmcgdXBkYXRlV29ya2VyCisgICAgYXV0byogY29ubmVjdGlvbiA9IFNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Z2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigp
OworICAgIGlmICghY29ubmVjdGlvbikgeworICAgICAgICBtX3BlbmRpbmdDb250ZXh0RGF0YXMu
YXBwZW5kKFdURk1vdmUoZGF0YSkpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIAotICAg
IHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOworICAgIGluc3RhbGxDb250ZXh0
RGF0YShkYXRhKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6ZmlyZUluc3RhbGxFdmVudChDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRl
bnRpZmllcikKK3ZvaWQgU1dTZXJ2ZXI6OnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVk
KCkKIHsKLSAgICBjb25uZWN0aW9uLmZpcmVJbnN0YWxsRXZlbnQoc2VydmljZVdvcmtlcklkZW50
aWZpZXIpOworICAgIEFTU0VSVChTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omdsb2JhbFNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24oKSk7CisgICAgZm9yIChhdXRvJiBkYXRhIDogbV9wZW5k
aW5nQ29udGV4dERhdGFzKQorICAgICAgICBpbnN0YWxsQ29udGV4dERhdGEoZGF0YSk7CisgICAg
CisgICAgbV9wZW5kaW5nQ29udGV4dERhdGFzLmNsZWFyKCk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6
OmZpcmVBY3RpdmF0ZUV2ZW50KENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQordm9pZCBTV1NlcnZlcjo6aW5zdGFs
bENvbnRleHREYXRhKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKIHsKLSAg
ICBjb25uZWN0aW9uLmZpcmVBY3RpdmF0ZUV2ZW50KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsK
KyAgICBhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpnbG9i
YWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7CisgICAgQVNTRVJUKGNvbm5lY3Rpb24pOwor
CisgICAgYXV0byByZXN1bHQgPSBtX3dvcmtlcnNCeUlELmFkZChkYXRhLnNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBTV1NlcnZlcldvcmtlcjo6Y3JlYXRlKCp0aGlzLCBkYXRhLnJlZ2lzdHJhdGlv
bktleSwgY29ubmVjdGlvbi0+aWRlbnRpZmllcigpLCBkYXRhLnNjcmlwdFVSTCwgZGF0YS5zY3Jp
cHQsIGRhdGEud29ya2VyVHlwZSwgZGF0YS5zZXJ2aWNlV29ya2VySWRlbnRpZmllcikpOworICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICBjb25uZWN0
aW9uLT5pbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoZGF0YSk7Cit9CisKK3ZvaWQgU1dTZXJ2
ZXI6OmZpcmVJbnN0YWxsRXZlbnQoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikKK3sKKy8vICAgIGF1
dG8qIHdvcmtlciA9IG1fd29ya2Vyc0J5SUQuZ2V0KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsK
Ky8vICAgIGlmICghd29ya2VyKSB7CisvLyAgICAgICAgTE9HX0VSUk9SKCJSZXF1ZXN0IHRvIGZp
cmUgaW5zdGFsbCBldmVudCBvbiBhIHdvcmtlciB0aGF0IGNhbm5vdCBiZSBmb3VuZCBpbiB0aGUg
c2VydmVyIik7CisvLyAgICAgICAgcmV0dXJuOworLy8gICAgfQorCisgICAgYXV0byogY29ubmVj
dGlvbiA9IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvcklkZW50aWZp
ZXIod29ya2VyLmNvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcigpKTsKKyAgICBpZiAoIWNvbm5l
Y3Rpb24pIHsKKyAgICAgICAgTE9HX0VSUk9SKCJSZXF1ZXN0IHRvIGZpcmUgaW5zdGFsbCBldmVu
dCBvbiBhIHdvcmtlciB3aG9zZSBjb250ZXh0IGNvbm5lY3Rpb24gZG9lcyBub3QgZXhpc3QiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbm5lY3Rpb24tPmZpcmVJbnN0YWxsRXZl
bnQod29ya2VyLmlkZW50aWZpZXIoKSk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXI6OmZpcmVBY3RpdmF0
ZUV2ZW50KFNXU2VydmVyV29ya2VyJiB3b3JrZXIpCit7CisvLyAgICBhdXRvKiB3b3JrZXIgPSBt
X3dvcmtlcnNCeUlELmdldChzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisvLyAgICBpZiAoIXdv
cmtlcikgeworLy8gICAgICAgIExPR19FUlJPUigiUmVxdWVzdCB0byBmaXJlIGluc3RhbGwgZXZl
bnQgb24gYSB3b3JrZXIgdGhhdCBjYW5ub3QgYmUgZm91bmQgaW4gdGhlIHNlcnZlciIpOworLy8g
ICAgICAgIHJldHVybjsKKy8vICAgIH0KKworICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Gb3JJZGVudGlmaWVyKHdvcmtlci5jb250
ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIoKSk7CisgICAgaWYgKCFjb25uZWN0aW9uKSB7CisgICAg
ICAgIExPR19FUlJPUigiUmVxdWVzdCB0byBmaXJlIGluc3RhbGwgZXZlbnQgb24gYSB3b3JrZXIg
d2hvc2UgY29udGV4dCBjb25uZWN0aW9uIGRvZXMgbm90IGV4aXN0Iik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBjb25uZWN0aW9uLT5maXJlQWN0aXZhdGVFdmVudCh3b3JrZXIuaWRl
bnRpZmllcigpKTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6dGFza1RocmVhZEVudHJ5UG9pbnQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmlu
ZGV4IGJjYTM4NjVmOTZlLi44MzhjN2U1YzQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1
ZGUgIlNlcnZpY2VXb3JrZXJKb2IuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaCIKKyNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRR
dWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFRhc2suaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgpAQCAtNDcsNiArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBT
V09yaWdpblN0b3JlOwogY2xhc3MgU1dTZXJ2ZXJKb2JRdWV1ZTsKIGNsYXNzIFNXU2VydmVyUmVn
aXN0cmF0aW9uOworY2xhc3MgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOwogZW51bSBjbGFz
cyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGU7CiBlbnVtIGNsYXNzIFNlcnZpY2VXb3Jr
ZXJTdGF0ZTsKIHN0cnVjdCBFeGNlcHRpb25EYXRhOwpAQCAtNjEsMTEgKzYzLDYgQEAgcHVibGlj
OgogICAgIHB1YmxpYzoKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+Q29ubmVjdGlv
bigpOwogCi0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NyaXB0Q29udGV4dEZhaWxlZFRv
U3RhcnQoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNjcmlwdENvbnRleHRTdGFydGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGlkRmluaXNoSW5zdGFsbChjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCk7Ci0gICAgICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbihjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAgICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBib29sIGhhc1BlbmRpbmdFdmVudHMpOwogICAgICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKGNvbnN0IFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKTsKICAgICAgICAgY29uc3QgU1dTZXJ2ZXJSZWdpc3Ry
YXRpb24qIGRvUmVnaXN0cmF0aW9uTWF0Y2hpbmcoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0
b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMKSBjb25zdCB7IHJldHVybiBtX3NlcnZlci5k
b1JlZ2lzdHJhdGlvbk1hdGNoaW5nKHRvcE9yaWdpbiwgY2xpZW50VVJMKTsgfQogCkBAIC05MCwx
MSArODcsNiBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlVW5yZWdpc3Ry
YXRpb25Kb2JJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiwgYm9vbCByZWdpc3RyYXRpb25SZXN1bHQpID0gMDsKICAgICAg
ICAgdmlydHVhbCB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVu
dGlmaWVyKSA9IDA7CiAKLSAgICAgICAgLy8gTWVzc2FnZXMgdG8gdGhlIFNXIGhvc3QgV2ViUHJv
Y2VzcwotICAgICAgICB2aXJ0dWFsIHZvaWQgaW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KGNv
bnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lk
IGZpcmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKLSAgICAgICAg
dmlydHVhbCB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9
IDA7Ci0KICAgICAgICAgU1dTZXJ2ZXImIG1fc2VydmVyOwogICAgIH07CiAKQEAgLTExOCwxNCAr
MTEwLDIzIEBAIHB1YmxpYzoKICAgICB2b2lkIHBvc3RUYXNrKENyb3NzVGhyZWFkVGFzayYmKTsK
ICAgICB2b2lkIHBvc3RUYXNrUmVwbHkoQ3Jvc3NUaHJlYWRUYXNrJiYpOwogCi0gICAgUmVmPFNX
U2VydmVyV29ya2VyPiB1cGRhdGVXb3JrZXIoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgV29y
a2VyVHlwZSk7Ci0gICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KENvbm5lY3Rpb24mLCBTZXJ2aWNl
V29ya2VySWRlbnRpZmllcik7Ci0gICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChDb25uZWN0aW9u
JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIHZvaWQgdXBkYXRlV29ya2VyKENvbm5l
Y3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiBzY3JpcHQsIFdvcmtlclR5cGUpOworICAgIHZvaWQgZmlyZUluc3RhbGxF
dmVudChTV1NlcnZlcldvcmtlciYpOworICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoU1dTZXJ2
ZXJXb3JrZXImKTsKICAgICBTV1NlcnZlcldvcmtlciogd29ya2VyQnlJRChTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBpZGVudGlmaWVyKSBjb25zdCB7IHJldHVybiBtX3dvcmtlcnNCeUlELmdldChp
ZGVudGlmaWVyKTsgfQogICAgIAogICAgIENvbm5lY3Rpb24qIGdldENvbm5lY3Rpb24odWludDY0
X3QgaWRlbnRpZmllcikgeyByZXR1cm4gbV9jb25uZWN0aW9ucy5nZXQoaWRlbnRpZmllcik7IH0K
ICAgICBTV09yaWdpblN0b3JlJiBvcmlnaW5TdG9yZSgpIHsgcmV0dXJuIG1fb3JpZ2luU3RvcmU7
IH0KIAorICAgIHZvaWQgc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoU1dTZXJ2ZXJXb3JrZXIm
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgc2NyaXB0Q29udGV4dFN0YXJ0ZWQo
U1dTZXJ2ZXJXb3JrZXImKTsKKyAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoU1dTZXJ2ZXJXb3Jr
ZXImLCBib29sIHdhc1N1Y2Nlc3NmdWwpOworICAgIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbihT
V1NlcnZlcldvcmtlciYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uQ3JlYXRlZCgpOworICAgIAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBI
YXNoU2V0PFNXU2VydmVyKj4mIGFsbFNlcnZlcnMoKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHJl
Z2lzdGVyQ29ubmVjdGlvbihDb25uZWN0aW9uJik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyQ29ubmVj
dGlvbihDb25uZWN0aW9uJik7CkBAIC0xMzQsMTEgKzEzNSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBoYW5kbGVUYXNrUmVwbGllc09uTWFpblRocmVhZCgpOwogCiAgICAgdm9pZCBzY3JpcHRGZXRj
aEZpbmlzaGVkKENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKTsK
LSAgICB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KENvbm5lY3Rpb24mLCBjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgdm9pZCBzY3JpcHRDb250ZXh0U3RhcnRlZChDb25u
ZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoQ29ubmVjdGlvbiYsIGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgYm9vbCB3YXNTdWNjZXNzZnVsKTsKLSAgICB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oQ29u
bmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29y
a2VySWRlbnRpZmllcik7Ci0gICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50
cyhDb25uZWN0aW9uJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgaGFzUGVuZGluZ0V2
ZW50cyk7CisKICAgICB2b2lkIGRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKENvbm5lY3Rp
b24mLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7CiAKICAgICB2b2lkIGFk
ZENsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
Zmllcik7CkBAIC0xNDYsNiArMTQzLDggQEAgcHJpdmF0ZToKIAogICAgIFdFQkNPUkVfRVhQT1JU
IGNvbnN0IFNXU2VydmVyUmVnaXN0cmF0aW9uKiBkb1JlZ2lzdHJhdGlvbk1hdGNoaW5nKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCkgY29u
c3Q7CiAKKyAgICB2b2lkIGluc3RhbGxDb250ZXh0RGF0YShjb25zdCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEmKTsKKwogICAgIEhhc2hNYXA8dWludDY0X3QsIENvbm5lY3Rpb24qPiBtX2Nvbm5l
Y3Rpb25zOwogICAgIEhhc2hNYXA8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSwgc3RkOjp1
bmlxdWVfcHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPj4gbV9yZWdpc3RyYXRpb25zOwogICAgIEhh
c2hNYXA8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSwgc3RkOjp1bmlxdWVfcHRyPFNXU2Vy
dmVySm9iUXVldWU+PiBtX2pvYlF1ZXVlczsKQEAgLTE2MSw2ICsxNjAsNyBAQCBwcml2YXRlOgog
ICAgIExvY2sgbV9tYWluVGhyZWFkUmVwbHlMb2NrOwogICAgIGJvb2wgbV9tYWluVGhyZWFkUmVw
bHlTY2hlZHVsZWQgeyBmYWxzZSB9OwogICAgIFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiBtX29y
aWdpblN0b3JlOworICAgIERlcXVlPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gbV9wZW5kaW5n
Q29udGV4dERhdGFzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1
ZS5jcHAKaW5kZXggZjg0OWFiODgyMzUuLjlmZWZhMTI3YzgxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5j
cHAKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZp
bmlzaGVkKFNXU2VydmVyOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb24KIH0KIAogLy8gaHR0
cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI3VwZGF0ZS1hbGdvcml0aG0KLXZvaWQg
U1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoU1dTZXJ2ZXI6OkNv
bm5lY3Rpb24mLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIC8vIElm
IGFuIHVuY2F1Z2h0IHJ1bnRpbWUgc2NyaXB0IGVycm9yIG9jY3VycyBkdXJpbmcgdGhlIGFib3Zl
IHN0ZXAsIHRoZW46CiAgICAgYXV0byogcmVnaXN0cmF0aW9uID0gbV9zZXJ2ZXIuZ2V0UmVnaXN0
cmF0aW9uKG1fcmVnaXN0cmF0aW9uS2V5KTsKQEAgLTEwMSwxNiArMTAxLDE2IEBAIHZvaWQgU1dT
ZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoU1dTZXJ2ZXI6OkNvbm5l
Y3Rpb24mLCBTZXJ2aWNlCiAgICAgZmluaXNoQ3VycmVudEpvYigpOwogfQogCi12b2lkIFNXU2Vy
dmVySm9iUXVldWU6OnNjcmlwdENvbnRleHRTdGFydGVkKFNXU2VydmVyOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBTV1Nl
cnZlckpvYlF1ZXVlOjpzY3JpcHRDb250ZXh0U3RhcnRlZChTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBpZGVudGlmaWVyKQogewogICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fc2VydmVyLmdldFJl
Z2lzdHJhdGlvbihtX3JlZ2lzdHJhdGlvbktleSk7CiAgICAgQVNTRVJUKHJlZ2lzdHJhdGlvbik7
CiAKLSAgICBpbnN0YWxsKCpyZWdpc3RyYXRpb24sIGNvbm5lY3Rpb24sIGlkZW50aWZpZXIpOwor
ICAgIGluc3RhbGwoKnJlZ2lzdHJhdGlvbiwgaWRlbnRpZmllcik7CiB9CiAKIC8vIGh0dHBzOi8v
dzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNpbnN0YWxsCi12b2lkIFNXU2VydmVySm9iUXVl
dWU6Omluc3RhbGwoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgU1dTZXJ2ZXI6
OkNvbm5lY3Rpb24mLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpbnN0YWxsaW5nV29ya2VyKQor
dm9pZCBTV1NlcnZlckpvYlF1ZXVlOjppbnN0YWxsKFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdp
c3RyYXRpb24sIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGluc3RhbGxpbmdXb3JrZXIpCiB7CiAg
ICAgLy8gVGhlIEluc3RhbGwgYWxnb3JpdGhtIHNob3VsZCBuZXZlciBiZSBpbnZva2VkIHdpdGgg
YSBudWxsIHdvcmtlci4KICAgICBhdXRvKiB3b3JrZXIgPSBtX3NlcnZlci53b3JrZXJCeUlEKGlu
c3RhbGxpbmdXb3JrZXIpOwpAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1
ZTo6aW5zdGFsbChTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBTV1NlcnZlcjo6
Q29uCiB9CiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNpbnN0YWxs
IChhZnRlciByZXNvbHZpbmcgcHJvbWlzZSkuCi12b2lkIFNXU2VydmVySm9iUXVldWU6OmRpZFJl
c29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKFNXU2VydmVyOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
KQordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZSgp
CiB7CiAgICAgYXV0byogcmVnaXN0cmF0aW9uID0gbV9zZXJ2ZXIuZ2V0UmVnaXN0cmF0aW9uKG1f
cmVnaXN0cmF0aW9uS2V5KTsKICAgICBBU1NFUlQocmVnaXN0cmF0aW9uKTsKQEAgLTEzNiwxMSAr
MTM2LDEyIEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblBy
b21pc2UoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mIGNvbm5lCiAgICAgcmVnaXN0cmF0aW9uLT5maXJl
VXBkYXRlRm91bmRFdmVudCgpOwogCiAgICAgLy8gUXVldWUgYSB0YXNrIHRvIGZpcmUgdGhlIElu
c3RhbGxFdmVudC4KLSAgICBtX3NlcnZlci5maXJlSW5zdGFsbEV2ZW50KGNvbm5lY3Rpb24sIHJl
Z2lzdHJhdGlvbi0+aW5zdGFsbGluZ1dvcmtlcigpLT5pZGVudGlmaWVyKCkpOworICAgIEFTU0VS
VChyZWdpc3RyYXRpb24tPmluc3RhbGxpbmdXb3JrZXIoKSk7CisgICAgbV9zZXJ2ZXIuZmlyZUlu
c3RhbGxFdmVudCgqcmVnaXN0cmF0aW9uLT5pbnN0YWxsaW5nV29ya2VyKCkpOwogfQogCiAvLyBo
dHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jaW5zdGFsbAotdm9pZCBTV1NlcnZl
ckpvYlF1ZXVlOjpkaWRGaW5pc2hJbnN0YWxsKFNXU2VydmVyOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3Nm
dWwpCit2b2lkIFNXU2VydmVySm9iUXVldWU6OmRpZEZpbmlzaEluc3RhbGwoU2VydmljZVdvcmtl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKQogewogICAgIGF1dG8q
IHJlZ2lzdHJhdGlvbiA9IG1fc2VydmVyLmdldFJlZ2lzdHJhdGlvbihtX3JlZ2lzdHJhdGlvbktl
eSk7CiAgICAgQVNTRVJUKHJlZ2lzdHJhdGlvbik7CkBAIC0xNzksMTEgKzE4MCwxMSBAQCB2b2lk
IFNXU2VydmVySm9iUXVldWU6OmRpZEZpbmlzaEluc3RhbGwoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIFNlcnZpYwogICAgIGZpbmlzaEN1cnJlbnRKb2IoKTsKIAogICAgIC8vIEZJ
WE1FOiBXYWl0IGZvciBhbGwgdGhlIHRhc2tzIHF1ZXVlZCBieSBVcGRhdGUgV29ya2VyIFN0YXRl
IGludm9rZWQgaW4gdGhpcyBhbGdvcml0aG0gaGF2ZSBleGVjdXRlZC4KLSAgICB0cnlBY3RpdmF0
ZShtX3NlcnZlciwgY29ubmVjdGlvbiwgKnJlZ2lzdHJhdGlvbik7CisgICAgdHJ5QWN0aXZhdGUo
bV9zZXJ2ZXIsICpyZWdpc3RyYXRpb24pOwogfQogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8v
U2VydmljZVdvcmtlci8jdHJ5LWFjdGl2YXRlLWFsZ29yaXRobQotdm9pZCBTV1NlcnZlckpvYlF1
ZXVlOjp0cnlBY3RpdmF0ZShTV1NlcnZlciYgc2VydmVyLCBTV1NlcnZlcjo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbikKK3ZvaWQgU1dT
ZXJ2ZXJKb2JRdWV1ZTo6dHJ5QWN0aXZhdGUoU1dTZXJ2ZXImIHNlcnZlciwgU1dTZXJ2ZXJSZWdp
c3RyYXRpb24mIHJlZ2lzdHJhdGlvbikKIHsKICAgICAvLyBJZiByZWdpc3RyYXRpb24ncyB3YWl0
aW5nIHdvcmtlciBpcyBudWxsLCByZXR1cm4uCiAgICAgaWYgKCFyZWdpc3RyYXRpb24ud2FpdGlu
Z1dvcmtlcigpKQpAQCAtMTk4LDExICsxOTksMTEgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjp0
cnlBY3RpdmF0ZShTV1NlcnZlciYgc2VydmVyLCBTV1NlcnZlcjo6Q29ubmVjdGlvbiYgY29ubmUK
ICAgICAvLyAgIGFuZCBubyBzZXJ2aWNlIHdvcmtlciBjbGllbnQgaXMgdXNpbmcgcmVnaXN0cmF0
aW9uCiAgICAgLy8gRklYTUU6IENoZWNrIGZvciB0aGUgc2tpcCB3YWl0aW5nIGZsYWcuCiAgICAg
aWYgKCFyZWdpc3RyYXRpb24uYWN0aXZlV29ya2VyKCkgfHwgIXJlZ2lzdHJhdGlvbi5hY3RpdmVX
b3JrZXIoKS0+aGFzUGVuZGluZ0V2ZW50cygpKQotICAgICAgICBhY3RpdmF0ZShzZXJ2ZXIsIGNv
bm5lY3Rpb24sIHJlZ2lzdHJhdGlvbik7CisgICAgICAgIGFjdGl2YXRlKHNlcnZlciwgcmVnaXN0
cmF0aW9uKTsKIH0KIAogLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI2Fj
dGl2YXRlCi12b2lkIFNXU2VydmVySm9iUXVldWU6OmFjdGl2YXRlKFNXU2VydmVyJiBzZXJ2ZXIs
IFNXU2VydmVyOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYg
cmVnaXN0cmF0aW9uKQordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjphY3RpdmF0ZShTV1NlcnZlciYg
c2VydmVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uKQogewogICAgIC8vIElm
IHJlZ2lzdHJhdGlvbidzIHdhaXRpbmcgd29ya2VyIGlzIG51bGwsIGFib3J0IHRoZXNlIHN0ZXBz
LgogICAgIGlmICghcmVnaXN0cmF0aW9uLndhaXRpbmdXb3JrZXIoKSkKQEAgLTIyNiw3ICsyMjcs
OCBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OmFjdGl2YXRlKFNXU2VydmVyJiBzZXJ2ZXIsIFNX
U2VydmVyOjpDb25uZWN0aW9uJiBjb25uZWN0aQogICAgIC8vIEZJWE1FOiBJbnZva2UgUnVuIFNl
cnZpY2UgV29ya2VyIGFsZ29yaXRobSB3aXRoIGFjdGl2ZVdvcmtlciBhcyB0aGUgYXJndW1lbnQu
CiAKICAgICAvLyBRdWV1ZSBhIHRhc2sgdG8gZmlyZSB0aGUgYWN0aXZhdGUgZXZlbnQuCi0gICAg
c2VydmVyLmZpcmVBY3RpdmF0ZUV2ZW50KGNvbm5lY3Rpb24sIHJlZ2lzdHJhdGlvbi5hY3RpdmVX
b3JrZXIoKS0+aWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlQocmVnaXN0cmF0aW9uLmFjdGl2ZVdv
cmtlcigpKTsKKyAgICBzZXJ2ZXIuZmlyZUFjdGl2YXRlRXZlbnQoKnJlZ2lzdHJhdGlvbi5hY3Rp
dmVXb3JrZXIoKSk7CiB9CiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2Vy
LyNhY3RpdmF0ZSAocG9zdCBhY3RpdmF0ZSBldmVudCBzdGVwcykuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5oCmlu
ZGV4IDJmNzdiMDk3ZjIxLi4zMTBkMThiM2IwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmgKQEAgLTQ4LDEx
ICs0OCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBydW5OZXh0Sm9iKCk7CiAKICAgICB2b2lkIHNj
cmlwdEZldGNoRmluaXNoZWQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29y
a2VyRmV0Y2hSZXN1bHQmKTsKLSAgICB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KFNX
U2VydmVyOjpDb25uZWN0aW9uJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSk7Ci0gICAgdm9pZCBzY3JpcHRDb250ZXh0U3RhcnRlZChTV1NlcnZlcjo6Q29u
bmVjdGlvbiYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZEZpbmlzaElu
c3RhbGwoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9v
bCB3YXNTdWNjZXNzZnVsKTsKKyAgICB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQg
c2NyaXB0Q29udGV4dFN0YXJ0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIHZvaWQg
ZGlkRmluaXNoSW5zdGFsbChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNz
ZnVsKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hBY3RpdmF0aW9uKFNXU2VydmVyUmVnaXN0
cmF0aW9uJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAgIHZvaWQgZGlkUmVzb2x2ZVJl
Z2lzdHJhdGlvblByb21pc2UoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mKTsKKyAgICB2b2lkIGRpZFJl
c29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKCk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBqb2JUaW1l
ckZpcmVkKCk7CkBAIC02Niw5ICs2Niw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHRyeUNsZWFy
UmVnaXN0cmF0aW9uKFNXU2VydmVyUmVnaXN0cmF0aW9uJik7CiAgICAgdm9pZCBjbGVhclJlZ2lz
dHJhdGlvbihTV1NlcnZlclJlZ2lzdHJhdGlvbiYpOwotICAgIHZvaWQgaW5zdGFsbChTV1NlcnZl
clJlZ2lzdHJhdGlvbiYsIFNXU2VydmVyOjpDb25uZWN0aW9uJiwgU2VydmljZVdvcmtlcklkZW50
aWZpZXIpOwotICAgIHN0YXRpYyB2b2lkIHRyeUFjdGl2YXRlKFNXU2VydmVyJiwgU1dTZXJ2ZXI6
OkNvbm5lY3Rpb24mLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYpOwotICAgIHN0YXRpYyB2b2lkIGFj
dGl2YXRlKFNXU2VydmVyJiwgU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBTV1NlcnZlclJlZ2lzdHJh
dGlvbiYpOworICAgIHZvaWQgaW5zdGFsbChTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgdm9pZCB0cnlBY3RpdmF0ZShTV1NlcnZlciYs
IFNXU2VydmVyUmVnaXN0cmF0aW9uJik7CisgICAgc3RhdGljIHZvaWQgYWN0aXZhdGUoU1dTZXJ2
ZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYpOwogCiAgICAgRGVxdWU8U2VydmljZVdvcmtlckpv
YkRhdGE+IG1fam9iUXVldWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggZjcz
YmVmZWNiNDMuLjczMjc3OTdiODA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcApAQCAt
MzcsOCArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciBnZW5lcmF0ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyKCkKIHsKLSAgICBzdGF0aWMgdWludDY0X3QgaWRlbnRpZmllciA9IDA7Ci0gICAg
cmV0dXJuIG1ha2VPYmplY3RJZGVudGlmaWVyPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyVHlwZT4oKytpZGVudGlmaWVyKTsKKyAgICByZXR1cm4gZ2VuZXJhdGVPYmplY3RJZGVu
dGlmaWVyPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyVHlwZT4oKTsKIH0KIAog
U1dTZXJ2ZXJSZWdpc3RyYXRpb246OlNXU2VydmVyUmVnaXN0cmF0aW9uKFNXU2VydmVyJiBzZXJ2
ZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIGtleSwgU2VydmljZVdvcmtl
clVwZGF0ZVZpYUNhY2hlIHVwZGF0ZVZpYUNhY2hlLCBjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25z
dCBVUkwmIHNjcmlwdFVSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uM2ZlMDEwZjcxZmIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmgiCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJTV1Nl
cnZlci5oIgorI2luY2x1ZGUgIlNXU2VydmVyV29ya2VyLmgiCisjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIFNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgZ2VuZXJhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uSWRlbnRpZmllcigpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlT2JqZWN0SWRlbnRpZmllcjxT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyVHlwZT4oKTsKK30KKworc3RhdGlj
IEhhc2hNYXA8U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciwgU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKj4mIGFsbENvbm5lY3Rpb25zKCkKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVy
LCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qPj4gY29ubmVjdGlvbnM7CisgICAgcmV0dXJu
IGNvbm5lY3Rpb25zOworfQorCitTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbigpCisgICAgOiBtX2lkZW50aWZpZXIoZ2VuZXJhdGVTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcigpKQoreworICAgIGF1dG8gcmVzdWx0ID0gYWxs
Q29ubmVjdGlvbnMoKS5hZGQobV9pZGVudGlmaWVyLCB0aGlzKTsKKyAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworfQorCitTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246On5TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQoreworICAgIGF1dG8gcmVzdWx0
ID0gYWxsQ29ubmVjdGlvbnMoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKKyAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKworU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Gb3JJZGVudGlmaWVyKFNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICByZXR1
cm4gYWxsQ29ubmVjdGlvbnMoKS5nZXQoaWRlbnRpZmllcik7Cit9CisKK1NXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbiogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpnbG9iYWxTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKCkKK3sKKyAgICBpZiAoYWxsQ29ubmVjdGlvbnMoKS5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIEFTU0VSVChhbGxDb25uZWN0
aW9ucygpLnNpemUoKSA9PSAxKTsKKyAgICByZXR1cm4gYWxsQ29ubmVjdGlvbnMoKS5iZWdpbigp
LT52YWx1ZTsKK30KKwordm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNjcmlwdENv
bnRleHRGYWlsZWRUb1N0YXJ0KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgaWYgKGF1dG8qIHdvcmtl
ciA9IFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoc2VydmljZVdv
cmtlcklkZW50aWZpZXIpKQorICAgICAgICB3b3JrZXItPnNjcmlwdENvbnRleHRGYWlsZWRUb1N0
YXJ0KG1lc3NhZ2UpOworfQorCit2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2Ny
aXB0Q29udGV4dFN0YXJ0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8qIHdvcmtlciA9IFNXU2VydmVyV29ya2VyOjpleGlz
dGluZ1dvcmtlckZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKQorICAgICAg
ICB3b3JrZXItPnNjcmlwdENvbnRleHRTdGFydGVkKCk7Cit9CisgICAgCit2b2lkIFNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6ZGlkRmluaXNoSW5zdGFsbChTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKQoreworICAg
IGlmIChhdXRvKiB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVu
dGlmaWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkKKyAgICAgICAgd29ya2VyLT5kaWRGaW5p
c2hJbnN0YWxsKHdhc1N1Y2Nlc3NmdWwpOworfQorCit2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6ZGlkRmluaXNoQWN0aXZhdGlvbihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2
aWNlV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byogd29ya2VyID0gU1dTZXJ2ZXJX
b3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmll
cikpCisgICAgICAgIHdvcmtlci0+ZGlkRmluaXNoQWN0aXZhdGlvbigpOworfQorCit2b2lkIFNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVu
dHMoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wg
aGFzUGVuZGluZ0V2ZW50cykKK3sKKyAgICBpZiAoYXV0byogd29ya2VyID0gU1dTZXJ2ZXJXb3Jr
ZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikp
CisgICAgICAgIHdvcmtlci0+c2V0SGFzUGVuZGluZ0V2ZW50cyhoYXNQZW5kaW5nRXZlbnRzKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjI0YTU0NmNkYWRiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBlcy5oIgorI2luY2x1ZGUg
PHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFNXU2VydmVyOworc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKKworY2xhc3Mg
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4geworcHVibGljOgorICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgflNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOworCisgICAgU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9pZGVudGlmaWVyOyB9CisKKyAgICAvLyBNZXNzYWdlcyB0byB0aGUgU1cgaG9zdCBwcm9j
ZXNzCisgICAgdmlydHVhbCB2b2lkIGluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZpcmVJbnN0
YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKKworICAgIC8v
IE1lc3NhZ2VzIGJhY2sgZnJvbSB0aGUgU1cgaG9zdCBwcm9jZXNzCisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcmlw
dENvbnRleHRTdGFydGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRpZEZpbmlzaEluc3RhbGwoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wg
d2FzU3VjY2Vzc2Z1bCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRGaW5pc2hBY3RpdmF0
aW9uKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBi
b29sIGhhc1BlbmRpbmdFdmVudHMpOworCisgICAgc3RhdGljIFNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbiogY29ubmVjdGlvbkZvcklkZW50aWZpZXIoU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uSWRlbnRpZmllcik7CisKKyAgICAvLyBGSVhNRTogV2hpbGUgd2Ugb25seSBldmVyIGhhdmUg
b25lIFNXIGNvbnRleHQgcHJvY2VzcyB0aGlzIG1ldGhvZCBtYWtlcyBzZW5zZS4KKyAgICAvLyBP
bmNlIHdlIGhhdmUgbXVsdGlwbGUgb25lcyB0aGlzIG1ldGhvZCBzaG91bGQgZ28gYXdheSBmb3Jj
aW5nIHVzZSBvZiBjb25uZWN0aW9uRm9ySWRlbnRpZmllcigpCisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogZ2xvYmFsU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbigpOworCitwcm90ZWN0ZWQ6CisgICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKCk7CisKK3ByaXZhdGU6CisgICAgU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uSWRlbnRpZmllciBtX2lkZW50aWZpZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3Bw
CmluZGV4IDEyNWEyNjRmNTdjLi41YmIyMzBjZmYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKQEAgLTI4
LDI0ICsyOCw2NSBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1dTZXJ2ZXJX
b3JrZXI6OlNXU2VydmVyV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkm
IHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBX
b3JrZXJUeXBlIHR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCi0gICAg
OiBtX3JlZ2lzdHJhdGlvbktleShyZWdpc3RyYXRpb25LZXkpCitzdGF0aWMgSGFzaE1hcDxTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgU1dTZXJ2ZXJXb3JrZXIqPiYgYWxsV29ya2VycygpCit7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8U2VydmljZVdvcmtlcklkZW50aWZpZXIs
IFNXU2VydmVyV29ya2VyKj4+IHdvcmtlcnM7CisgICAgcmV0dXJuIHdvcmtlcnM7Cit9CisKK1NX
U2VydmVyV29ya2VyKiBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVy
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIGFsbFdv
cmtlcnMoKS5nZXQoaWRlbnRpZmllcik7Cit9CisKK1NXU2VydmVyV29ya2VyOjpTV1NlcnZlcldv
cmtlcihTV1NlcnZlciYgc2VydmVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
JiByZWdpc3RyYXRpb25LZXksIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIg
Y29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBzY3JpcHQsIFdvcmtlclR5cGUgdHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllcikKKyAgICA6IG1fc2VydmVyKHNlcnZlcikKKyAgICAsIG1fcmVnaXN0cmF0aW9uS2V5KHJl
Z2lzdHJhdGlvbktleSkKKyAgICAsIG1fY29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKGNvbnRl
eHRDb25uZWN0aW9uSWRlbnRpZmllcikKICAgICAsIG1fc2NyaXB0VVJMKHVybCkKICAgICAsIG1f
c2NyaXB0KHNjcmlwdCkKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV90
eXBlKHR5cGUpCiB7CisgICAgYXV0byByZXN1bHQgPSBhbGxXb3JrZXJzKCkuYWRkKGlkZW50aWZp
ZXIsIHRoaXMpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7
CiB9CiAKLVNXU2VydmVyV29ya2VyOjp+U1dTZXJ2ZXJXb3JrZXIoKSA9IGRlZmF1bHQ7CitTV1Nl
cnZlcldvcmtlcjo6flNXU2VydmVyV29ya2VyKCkKK3sKKyAgICBhdXRvIHRha2VuID0gYWxsV29y
a2VycygpLnRha2UobV9pZGVudGlmaWVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHRha2VuLCB0YWtl
biA9PSB0aGlzKTsKK30KIAogdm9pZCBTV1NlcnZlcldvcmtlcjo6dGVybWluYXRlKCkKIHsKICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50CiB9CiAKK3ZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnNjcmlwdENv
bnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBtX3NlcnZl
ci5zY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydCgqdGhpcywgbWVzc2FnZSk7Cit9CisKK3ZvaWQg
U1dTZXJ2ZXJXb3JrZXI6OnNjcmlwdENvbnRleHRTdGFydGVkKCkKK3sKKyAgICBtX3NlcnZlci5z
Y3JpcHRDb250ZXh0U3RhcnRlZCgqdGhpcyk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXJXb3JrZXI6OmRp
ZEZpbmlzaEluc3RhbGwoYm9vbCB3YXNTdWNjZXNzZnVsKQoreworICAgIG1fc2VydmVyLmRpZEZp
bmlzaEluc3RhbGwoKnRoaXMsIHdhc1N1Y2Nlc3NmdWwpOworfQorCit2b2lkIFNXU2VydmVyV29y
a2VyOjpkaWRGaW5pc2hBY3RpdmF0aW9uKCkKK3sKKyAgICBtX3NlcnZlci5kaWRGaW5pc2hBY3Rp
dmF0aW9uKCp0aGlzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCmluZGV4IDFhNjgxZWIyOWNlLi4zOGIw
YjQ3YWNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlcldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaApAQCAtMzUsMTMgKzM1LDE0IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgU1dTZXJ2ZXI7CiBlbnVtIGNsYXNzIFdvcmtlclR5cGU7CiAKIGNs
YXNzIFNXU2VydmVyV29ya2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNXU2VydmVy
V29ya2VyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTV1NlcnZlcldvcmtlcj4gY3JlYXRl
KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXb3JrZXJUeXBlIHR5cGUsIFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4u
IEFyZ3M+IHN0YXRpYyBSZWY8U1dTZXJ2ZXJXb3JrZXI+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNXU2VydmVyV29ya2VyKHJlZ2lz
dHJhdGlvbktleSwgdXJsLCBzY3JpcHQsIHR5cGUsIGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU1dTZXJ2ZXJXb3JrZXIoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3Mp
Li4uKSk7CiAgICAgfQogICAgIAogICAgIFNXU2VydmVyV29ya2VyKGNvbnN0IFNXU2VydmVyV29y
a2VyJikgPSBkZWxldGU7CkBAIC00OSwxMSArNTAsMTQgQEAgcHVibGljOgogCiAgICAgdm9pZCB0
ZXJtaW5hdGUoKTsKIAorICAgIFNXU2VydmVyJiBzZXJ2ZXIoKTsKKyAgICBjb25zdCBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkoKSBjb25zdCB7IHJldHVybiBt
X3JlZ2lzdHJhdGlvbktleTsgfQogICAgIGNvbnN0IFVSTCYgc2NyaXB0VVJMKCkgY29uc3QgeyBy
ZXR1cm4gbV9zY3JpcHRVUkw7IH0KICAgICBjb25zdCBTdHJpbmcmIHNjcmlwdCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2NyaXB0OyB9CiAgICAgV29ya2VyVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlOyB9CiAKICAgICBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uSWRlbnRpZmllciBjb250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcjsgfQogCiAgICAgU2VydmljZVdvcmtlclN0
YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQogICAgIHZvaWQgc2V0U3RhdGUo
U2VydmljZVdvcmtlclN0YXRlIHN0YXRlKSB7IG1fc3RhdGUgPSBzdGF0ZTsgfQpAQCAtNjEsMTAg
KzY1LDE5IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1BlbmRpbmdFdmVudHMoKSBjb25zdCB7IHJl
dHVybiBtX2hhc1BlbmRpbmdFdmVudHM7IH0KICAgICB2b2lkIHNldEhhc1BlbmRpbmdFdmVudHMo
Ym9vbCB2YWx1ZSkgeyBtX2hhc1BlbmRpbmdFdmVudHMgPSB2YWx1ZTsgfQogCisgICAgdm9pZCBz
Y3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZv
aWQgc2NyaXB0Q29udGV4dFN0YXJ0ZWQoKTsKKyAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoYm9v
bCB3YXNTdWNjZXNzZnVsKTsKKyAgICB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oKTsKKworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTV1NlcnZlcldvcmtlciogZXhpc3RpbmdXb3JrZXJGb3JJ
ZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKwogcHJpdmF0ZToKLSAgICBTV1Nl
cnZlcldvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIFdvcmtlclR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKTsKKyAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIGNvbnN0IFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkmLCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyLCBj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgV29ya2VyVHlwZSwgU2VydmljZVdvcmtl
cklkZW50aWZpZXIpOwogCisgICAgU1dTZXJ2ZXImIG1fc2VydmVyOwogICAgIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkgbV9yZWdpc3RyYXRpb25LZXk7CisgICAgU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uSWRlbnRpZmllciBtX2NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcjsKICAg
ICBVUkwgbV9zY3JpcHRVUkw7CiAgICAgU3RyaW5nIG1fc2NyaXB0OwogICAgIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNWYyOGE4MTYwZjYuLjQyMTA1
ZmE4MDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDE3LTExLTEzICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNYXNzaXZlICJTZXJ2ZXItcHJvY2Vz
cy10by1jb250ZXh0LXByb2Nlc3MiIGNvbm5lY3Rpb24gb3ZlcmhhdWwuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk1NTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6Cisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBT
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2VuZFRvQ29udGV4dFByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29ya2VyQ29u
dGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6
ZmlyZUluc3RhbGxFdmVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVy
Q29ubmVjdGlvbjo6ZmlyZUFjdGl2YXRlRXZlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OnNldENvbnRleHRDb25uZWN0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5oOgorCisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcC4KKyAgICAgICAgKFdlYktp
dDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkNs
b3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaXJlSW5zdGFsbEV2ZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaXJlQWN0aXZhdGVFdmVudCk6Cisg
ICAgICAgICogU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJUeXBlcy5oLgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6aXBjQ29ubmVjdGlvbiBjb25zdCk6CisgICAgICAgICogU3RvcmFn
ZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVz
c2FnZXMuaW46IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluLgorCisgICAgICAgICogU3Rv
cmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
UHJvY2Vzczo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6ZGlk
UmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6Z2xvYmFs
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9j
ZXNzOjpjcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZVByb2Nlc3M6OmRpZEdldFdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjp3b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5l
Y3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6Y3JlYXRl
V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZVByb2Nlc3M6OnNlcnZpY2VXb3JrZXJDb250ZXh0RmFpbGVkVG9TdGFydCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpzZXJ2aWNlV29ya2VyQ29u
dGV4dFN0YXJ0ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6
ZGlkRmluaXNoU2VydmljZVdvcmtlckluc3RhbGwpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlUHJvY2Vzczo6ZGlkRmluaXNoU2VydmljZVdvcmtlckFjdGl2YXRpb24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6c2V0U2VydmljZVdvcmtlckhh
c1BlbmRpbmdFdmVudHMpOiBEZWxldGVkLgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1N0b3Jh
Z2VQcm9jZXNzLmg6CisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVz
c2FnZXMuaW46CisKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TdG9yYWdlVG9XZWJQcm9jZXNz
Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUb1dlYlByb2Nlc3NDb25u
ZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUb1dl
YlByb2Nlc3NDb25uZWN0aW9uOjplc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6d29ya2VyQ29udGV4dFBy
b2Nlc3NDb25uZWN0aW9uQ3JlYXRlZCk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c2VydmljZVdvcmtlclN0
YXJ0ZWRXaXRoTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpmaXJlSW5zdGFsbEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpcmVBY3RpdmF0ZUV2ZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmRpZEZpbmlzaEluc3RhbGwpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlkRmluaXNoQWN0
aXZhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
OgorCiAyMDE3LTExLTEzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBtYXRjaFJlZ2lzdHJhdGlvbiBkb2VzIG5vdCBuZWVkIHRvIGdvIHRvIFN0b3JhZ2VQcm9j
ZXNzIGlmIG5vIHNlcnZpY2Ugd29ya2VyIGlzIHJlZ2lzdGVyZWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMubWFrZQppbmRleCA0MzliMWVlOGY4OS4uZDcyMWMwYjE4Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLm1ha2UKQEAgLTE2NCw2ICsxNjQsNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAg
ICBXZWJTV0NsaWVudENvbm5lY3Rpb24gXAogICAgIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uIFwKICAgICBXZWJTV1NlcnZlckNvbm5lY3Rpb24gXAorICAgIFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbiBcCiAgICAgUGxheWJhY2tTZXNzaW9uTWFuYWdlciBcCiAgICAgUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5IFwKICAgICBXZWJQcm9jZXNzIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggOThkOTdhZGZjODQuLmU5OWNi
NmRkODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1N0b3JlZENyZWRlbnRpYWxzUG9saWN5Lmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9Xb3JrZXJUeXBlLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTW9ub3RvbmljVGlt
ZTsKQEAgLTc5Nyw2ICs3OTgsMTQgQEAgdGVtcGxhdGUgPD4gc3RydWN0IEVudW1UcmFpdHM8V2Vi
Q29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k+IHsKICAgICA+OwogfTsKIAordGVtcGxhdGUg
PD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6V29ya2VyVHlwZT4geworICAgIHVzaW5nIHZh
bHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OldvcmtlclR5cGUsCisgICAgICAg
IFdlYkNvcmU6OldvcmtlclR5cGU6OkNsYXNzaWMsCisgICAgICAgIFdlYkNvcmU6OldvcmtlclR5
cGU6Ok1vZHVsZQorICAgID47Cit9OworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogdGVt
cGxhdGUgPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6U2VydmljZVdvcmtlclVwZGF0ZVZp
YUNhY2hlPiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNmE4YjMzMDA3MjQuLjI4Y2RiYjdlYTkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTdG9y
YWdlUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzLmgiCkBAIC0zOCw2ICszOSw3IEBACiAjaW5jbHVkZSAiV2ViU1dDbGllbnRDb25u
ZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJX
ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0
aW9uRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KQEAgLTEwNCwy
NCArMTA2LDYgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnVwZGF0ZVdvcmtlclN0YXRl
SW5DbGllbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgd28KICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJTV0NsaWVudENvbm5lY3Rpb246OlVwZGF0ZVdvcmtlclN0YXRlKHdvcmtlciwgc3RhdGUpKTsK
IH0KIAotdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29ya2VyQ29u
dGV4dChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEpCi17Ci0gICAgaWYgKHNl
bmRUb0NvbnRleHRQcm9jZXNzKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6SW5zdGFsbFNlcnZpY2VXb3JrZXIoaWRlbnRpZmllcigpLCBkYXRhKSkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIG1fcGVuZGluZ0NvbnRleHREYXRhcy5hcHBlbmQoZGF0YSk7Ci19Ci0KLXZv
aWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpmaXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQotewotICAgIHNlbmRUb0NvbnRleHRQ
cm9jZXNzKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6RmlyZUluc3Rh
bGxFdmVudChpZGVudGlmaWVyKCksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSk7Ci19Ci0KLXZv
aWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKLXsKLSAgICBzZW5kVG9Db250ZXh0
UHJvY2VzcyhNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkZpcmVBY3Rp
dmF0ZUV2ZW50KGlkZW50aWZpZXIoKSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIpKTsKLX0KLQog
dm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2godWludDY0X3QgZmV0Y2hJZGVu
dGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyPiBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBGZXRj
aE9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgc2VuZFRvQ29udGV4dFByb2Nlc3MoTWVzc2FnZXM6
OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTdGFydEZldGNoKGlkZW50aWZpZXIoKSwg
ZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9u
cykpOwpAQCAtMTcyLDI1ICsxNTYsMTIgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246Om1h
dGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdEkKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJTV0NsaWVudENvbm5lY3Rpb246OkRpZE1hdGNoUmVnaXN0cmF0aW9u
IHsgcmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpudWxsb3B0IH0pOwog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2Vu
ZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1lc3NhZ2UpCit0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lk
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2VuZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1lc3NhZ2Up
CiB7Ci0gICAgaWYgKCFtX2NvbnRleHRDb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICByZXR1cm4gbV9jb250ZXh0Q29ubmVjdGlvbi0+c2VuZDxVPihXVEZNb3ZlKG1lc3Nh
Z2UpLCAwKTsKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IFN0b3JhZ2VQcm9jZXNzOjpzaW5n
bGV0b24oKS5nbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkpCisgICAgICAgIGNvbm5l
Y3Rpb24tPnNlbmQoV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjpzZXRDb250ZXh0Q29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24p
Ci17Ci0gICAgbV9jb250ZXh0Q29ubmVjdGlvbiA9IGNvbm5lY3Rpb247Ci0KLSAgICAvLyBXZSBj
YW4gbm93IHN0YXJ0IGFueSBwZW5kaW5nIHNlcnZpY2Ugd29ya2VyIHVwZGF0ZXMuCi0gICAgZm9y
IChhdXRvJiBwZW5kaW5nQ29udGV4dERhdGEgOiBtX3BlbmRpbmdDb250ZXh0RGF0YXMpCi0gICAg
ICAgIGluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChwZW5kaW5nQ29udGV4dERhdGEpOwotICAg
IAotICAgIG1fcGVuZGluZ0NvbnRleHREYXRhcy5jbGVhcigpOwotfQotICAgIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggN2YxY2Q1MWVjZjEuLmI4MGIzYmZkNDdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCkBAIC00Niw3ICs0Niw2IEBA
IHB1YmxpYzoKICAgICB+V2ViU1dTZXJ2ZXJDb25uZWN0aW9uKCkgZmluYWw7CiAKICAgICB2b2lk
IGRpc2Nvbm5lY3RlZEZyb21XZWJQcm9jZXNzKCk7Ci0gICAgdm9pZCBzZXRDb250ZXh0Q29ubmVj
dGlvbihJUEM6OkNvbm5lY3Rpb24qKTsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCiAgICAgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KQEAgLTc1LDIyICs3NCwx
NSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBtYXRjaFJlZ2lzdHJhdGlvbih1aW50NjRfdCByZWdp
c3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpVUkwmIGNsaWVudFVSTCk7CiAKLSAgICAvLyBNZXNz
YWdlcyB0byB0aGUgU1cgY29udGV4dCBXZWJQcm9jZXNzCi0gICAgdm9pZCBpbnN0YWxsU2Vydmlj
ZVdvcmtlckNvbnRleHQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJikg
ZmluYWw7Ci0gICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKLQogICAgIElQQzo6Q29ubmVjdGlvbiogbWVz
c2FnZVNlbmRlckNvbm5lY3Rpb24oKSBmaW5hbCB7IHJldHVybiBtX2NvbnRlbnRDb25uZWN0aW9u
LnB0cigpOyB9CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBmaW5h
bCB7IHJldHVybiBpZGVudGlmaWVyKCk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJv
b2wgc2VuZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1lc3NhZ2UpOwogICAgIAorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFU+IHZvaWQgc2VuZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1lc3NhZ2UpOworCiAg
ICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9u
PiBtX2NvbnRlbnRDb25uZWN0aW9uOwogICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29u
dGV4dENvbm5lY3Rpb247Ci0gICAgCi0gICAgRGVxdWU8V2ViQ29yZTo6U2VydmljZVdvcmtlckNv
bnRleHREYXRhPiBtX3BlbmRpbmdDb250ZXh0RGF0YXM7CiB9OyAvLyBjbGFzcyBXZWJTV1NlcnZl
ckNvbm5lY3Rpb24KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi5iODJlZjM1M2E2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCisK
KyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCIKKyNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaD4KKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihSZWY8
SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCisgICAgOiBtX2lwY0Nvbm5lY3Rpb24oV1RG
TW92ZShjb25uZWN0aW9uKSkKK3sKK30KKworSVBDOjpDb25uZWN0aW9uKiBXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkKK3sKKyAgICByZXR1
cm4gbV9pcGNDb25uZWN0aW9uLnB0cigpOworfQorCit1aW50NjRfdCBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkKK3sKKyAgICByZXR1
cm4gMDsKK30KKwordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rp
b25DbG9zZWQoKQoreworICAgIC8vIEZJWE1FOiBEbyB3aGF0IGhlcmUuLi4/Cit9CisKK3ZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlckNvbnRl
eHQoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpJbnN0YWxsU2VydmljZVdvcmtl
cihkYXRhKSk7Cit9CisKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaXJl
SW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpGaXJlSW5zdGFsbEV2ZW50KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSk7Cit9CisKK3ZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6RmlyZUFjdGl2YXRlRXZlbnQo
c2VydmljZVdvcmtlcklkZW50aWZpZXIpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLjg3Yjc2ZDJhOWMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgor
I2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIDogcHVibGljIFdlYkNvcmU6OlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVz
c2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4g
c3RhdGljIFJlZjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+IGNyZWF0ZShBcmdzJiYu
Li4gYXJncykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICB9
CisKKyAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoKTsKKworICAgIElQQzo6Q29ubmVjdGlvbiog
aXBjQ29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXBjQ29ubmVjdGlvbi5wdHIoKTsgfQor
CisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCitwcml2YXRlOgorICAg
IGV4cGxpY2l0IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0
aW9uPiYmKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlcgorICAgIElQQzo6Q29ubmVjdGlv
biogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdl
U2VuZGVyRGVzdGluYXRpb25JRCgpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMgdG8gdGhlIFNX
IGhvc3QgV2ViUHJvY2VzcworICAgIHZvaWQgaW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KGNv
bnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpIGZpbmFsOworICAgIHZvaWQg
ZmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7
CisgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllcikgZmluYWw7CisgICAgCisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9pcGNDb25uZWN0
aW9uOworICAgIAorfTsgLy8gY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uOWRjOGMxNjNiNDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCkBAIC0wLDAgKzEsMzUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisj
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
KyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworbWVzc2FnZXMgLT4gV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIHsKKyAgICAjIFdoZW4gcG9zc2libGUsIHRoZXNlIG1l
c3NhZ2VzIGNhbiBiZSBpbXBsZW1lbnRlZCBkaXJlY3RseSBieSBXZWJDb3JlOjpTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24KKworICAgIFNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cmluZyBtZXNzYWdlKTsK
KyAgICBTY3JpcHRDb250ZXh0U3RhcnRlZChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBpZGVudGlmaWVyKTsKKyAgICBEaWRGaW5pc2hJbnN0YWxsKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCk7CisgICAgRGlkRmlu
aXNoQWN0aXZhdGlvbihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVy
KTsKKyAgICBTZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBoYXNQZW5kaW5n
RXZlbnRzKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKaW5kZXggYjRjZjhl
OWM3ZTguLjZmMTNlYmZkZjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNz
L1N0b3JhZ2VQcm9jZXNzLmNwcApAQCAtMzMsMTAgKzMzLDEyIEBACiAjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViU1dPcmlnaW5TdG9yZS5oIgogI2luY2x1
ZGUgIldlYlNXU2VydmVyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JREJLZXlEYXRhLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1dTZXJ2
ZXJXb3JrZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVGV4dEVuY29kaW5nLmg+CkBAIC00NCw2ICs0NiwxMCBAQAogI2luY2x1ZGUgPHd0Zi9D
cm9zc1RocmVhZFRhc2suaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCisjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQorI2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbk1lc3NhZ2VzLmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtNzksOCArODUsOSBAQCBib29sIFN0b3JhZ2VQcm9jZXNzOjpz
aG91bGRUZXJtaW5hdGUoKQogdm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uKQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBp
ZiAobV93b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPT0gJmNvbm5lY3Rpb24pIHsKLSAg
ICAgICAgbV93b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPSBudWxscHRyOworICAgIGlm
IChtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gJiYgbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLT5pcGNDb25uZWN0aW9uKCkgPT0gJmNvbm5lY3Rpb24pIHsKKyAgICAgICAgbV9zZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2VkKCk7CisgICAgICAgIG1fc2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAj
ZWxzZQpAQCAtOTgsNiArMTA1LDE2IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyCiAgICAgICAg
IGRpZFJlY2VpdmVTdG9yYWdlUHJvY2Vzc01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAg
aWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBp
ZiAoYXV0byogc3dDb25uZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpnbG9i
YWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkpIHsKKyAgICAgICAgICAgIGF1dG8qIHdlYlNX
Q29ubmVjdGlvbiA9IHN0YXRpY19jYXN0PFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbio+
KHN3Q29ubmVjdGlvbik7CisgICAgICAgICAgICB3ZWJTV0Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICAgICAgcmV0dXJuOyAgICAgICAg
CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKIH0KIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQpAQCAtMzUzLDI0ICszNzAsMjQgQEAgV2ViU1dPcmlnaW5TdG9yZSYgU3RvcmFnZVByb2Nl
c3M6OnN3T3JpZ2luU3RvcmVGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb24KICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8V2ViU1dPcmlnaW5TdG9yZSY+KHN3U2VydmVyRm9yU2Vzc2lvbihz
ZXNzaW9uSUQpLm9yaWdpblN0b3JlKCkpOwogfQogCi1JUEM6OkNvbm5lY3Rpb24qIFN0b3JhZ2VQ
cm9jZXNzOjp3b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oKQorV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKiBTdG9yYWdlUHJvY2Vzczo6Z2xvYmFsU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbigpCiB7Ci0gICAgcmV0dXJuIG1fd29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9u
LmdldCgpOworICAgIHJldHVybiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uZ2V0KCk7CiB9
CiAKLXZvaWQgU3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVj
dGlvbigpCit2b2lkIFN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uKCkKIHsKLSAgICBpZiAobV93YWl0aW5nRm9yV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0
aW9uKQorICAgIGlmIChtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlv
bikKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fd2FpdGluZ0ZvcldvcmtlckNvbnRleHRQ
cm9jZXNzQ29ubmVjdGlvbiA9IHRydWU7CisgICAgbV93YWl0aW5nRm9yU2VydmVyVG9Db250ZXh0
UHJvY2Vzc0Nvbm5lY3Rpb24gPSB0cnVlOwogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzUHJveHk6OkdldFdvcmtlckNvbnRleHRQcm9j
ZXNzQ29ubmVjdGlvbigpLCAwKTsKIH0KIAogdm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlkR2V0V29y
a2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCYmIGVuY29kZWRDb25u
ZWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBBU1NFUlQobV93YWl0aW5nRm9yV29ya2VyQ29udGV4
dFByb2Nlc3NDb25uZWN0aW9uKTsKLSAgICBtX3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vz
c0Nvbm5lY3Rpb24gPSBmYWxzZTsKKyAgICBBU1NFUlQobV93YWl0aW5nRm9yU2VydmVyVG9Db250
ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pOworICAgIG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFBy
b2Nlc3NDb25uZWN0aW9uID0gZmFsc2U7CiAKICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykK
ICAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIgPSBl
bmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIucmVsZWFzZUZpbGVEZXNjcmlwdG9yKCk7CkBAIC0z
ODUsMjUgKzQwMiwxNCBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaWRHZXRXb3JrZXJDb250ZXh0
UHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50JiYgZW5jbwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgbV93b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPSBJUEM6OkNv
bm5lY3Rpb246OmNyZWF0ZUNsaWVudENvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsICp0
aGlzKTsKLSAgICBtX3dvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbi0+b3BlbigpOworICAg
IGF1dG8gaXBjQ29ubmVjdGlvbiA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlQ2xpZW50Q29ubmVj
dGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwgKnRoaXMpOworICAgIGlwY0Nvbm5lY3Rpb24tPm9w
ZW4oKTsKKyAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gPSBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OmNyZWF0ZShXVEZNb3ZlKGlwY0Nvbm5lY3Rpb24pKTsKICAgICAKICAg
ICBmb3IgKGF1dG8mIGNvbm5lY3Rpb24gOiBtX3N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9u
cykKICAgICAgICAgY29ubmVjdGlvbi0+d29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uQ3Jl
YXRlZCgpOwogfQogCi12b2lkIFN0b3JhZ2VQcm9jZXNzOjpzZXJ2aWNlV29ya2VyQ29udGV4dEZh
aWxlZFRvU3RhcnQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgU2VydmljZVdvcmtl
cklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKLXsKLSAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5n
ZXQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKQotICAgICAgICBjb25uZWN0aW9uLT5zY3Jp
cHRDb250ZXh0RmFpbGVkVG9TdGFydChyZWdpc3RyYXRpb25LZXksIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBtZXNzYWdlKTsKLX0KLQotdm9pZCBTdG9yYWdlUHJvY2Vzczo6c2VydmljZVdvcmtl
ckNvbnRleHRTdGFydGVkKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25z
dCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQotewotICAgIGlmIChhdXRv
KiBjb25uZWN0aW9uID0gbV9zd1NlcnZlckNvbm5lY3Rpb25zLmdldChzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllcikpCi0gICAgICAgIGNvbm5lY3Rpb24tPnNjcmlwdENvbnRleHRTdGFydGVkKHJl
Z2lzdHJhdGlvbktleSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotfQotCiB2b2lkIFN0b3Jh
Z2VQcm9jZXNzOjpkaWRGYWlsRmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcikKIHsKICAgICBpZiAoYXV0byogY29ubmVjdGlv
biA9IG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5nZXQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIp
KQpAQCAtNDQwLDI1ICs0NDYsNiBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SQogICAgICAgICBj
b25uZWN0aW9uLT5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChkZXN0aW5hdGlvbklk
ZW50aWZpZXIuc2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIG1lc3NhZ2UsIHNvdXJj
ZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbik7CiB9CiAKLXZvaWQgU3RvcmFnZVByb2Nlc3M6OmRp
ZEZpbmlzaFNlcnZpY2VXb3JrZXJJbnN0YWxsKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25L
ZXksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29s
IHdhc1N1Y2Nlc3NmdWwpCi17Ci0gICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBtX3N3U2VydmVy
Q29ubmVjdGlvbnMuZ2V0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKLSAgICAgICAgY29u
bmVjdGlvbi0+ZGlkRmluaXNoSW5zdGFsbChyZWdpc3RyYXRpb25LZXksIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCB3YXNTdWNjZXNzZnVsKTsKLX0KLQotdm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlk
RmluaXNoU2VydmljZVdvcmtlckFjdGl2YXRpb24odWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlv
bktleSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCi17
Ci0gICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBtX3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0KHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKLSAgICAgICAgY29ubmVjdGlvbi0+ZGlkRmluaXNo
QWN0aXZhdGlvbihyZWdpc3RyYXRpb25LZXksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLX0K
LQotCi12b2lkIFN0b3JhZ2VQcm9jZXNzOjpzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50
cyh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50
aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgaGFzUGVuZGluZ0V2ZW50cykKLXsK
LSAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5nZXQoc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKQotICAgICAgICBjb25uZWN0aW9uLT5zZXRTZXJ2aWNl
V29ya2VySGFzUGVuZGluZ0V2ZW50cyhzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgaGFzUGVuZGlu
Z0V2ZW50cyk7Ci19Ci0KIHZvaWQgU3RvcmFnZVByb2Nlc3M6OnJlZ2lzdGVyU1dTZXJ2ZXJDb25u
ZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKICAgICBBU1NFUlQo
IW1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vz
cy5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCmluZGV4
IDYyNmY3ZDdmYmU0Li41OTFiNTgzZTFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU3RvcmFnZVByb2Nlc3MuaApAQCAtNDYsNiArNDYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb247CiBjbGFzcyBXZWJTV1Nl
cnZlckNvbm5lY3Rpb247CitjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CiBl
bnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZTsKIHN0cnVjdCBTdG9yYWdlUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyczsKIApAQCAtODAsOCArODEsMTAgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgSVBDOjpDb25uZWN0aW9uKiB3b3JrZXJDb250ZXh0
UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKLSAgICB2b2lkIGNyZWF0ZVdvcmtlckNvbnRleHRQcm9jZXNz
Q29ubmVjdGlvbigpOworICAgIC8vIEZvciBub3cgd2UganVzdCBoYXZlIG9uZSBnbG9iYWwgY29u
bmVjdGlvbiB0byBzZXJ2aWNlIHdvcmtlciBjb250ZXh0IHByb2Nlc3Nlcy4KKyAgICAvLyBUaGlz
IHdpbGwgY2hhbmdlIGluIHRoZSBmdXR1cmUuCisgICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uKiBnbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7CisgICAgdm9pZCBjcmVh
dGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7CiAKICAgICBXZWJDb3JlOjpTV1NlcnZlciYg
c3dTZXJ2ZXJGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKICAgICB2b2lkIHJlZ2lzdGVyU1dT
ZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYpOwpAQCAtMTE2LDggKzExOSw2
IEBAIHByaXZhdGU6CiAjZW5kaWYKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9p
ZCBkaWRHZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50JiYg
ZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyKTsKLSAgICB2b2lkIHNlcnZpY2VXb3JrZXJDb250
ZXh0RmFpbGVkVG9TdGFydCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgIHZvaWQgc2Vy
dmljZVdvcmtlckNvbnRleHRTdGFydGVkKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlRmV0Y2hS
ZXNwb25zZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0
Y2hJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlRmV0Y2hEYXRhKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGlu
dDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwpAQCAtMTI1LDkgKzEyNiw2IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRGYWlsRmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWROb3RIYW5kbGVGZXRjaCh1
aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlm
aWVyKTsKIAotICAgIHZvaWQgZGlkRmluaXNoU2VydmljZVdvcmtlckluc3RhbGwodWludDY0X3Qg
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3
YXNTdWNjZXNzZnVsKTsKLSAgICB2b2lkIGRpZEZpbmlzaFNlcnZpY2VXb3JrZXJBY3RpdmF0aW9u
KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIpOwotICAgIHZvaWQgc2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHModWludDY0X3Qg
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBib29sIGhhc1BlbmRpbmdFdmVudHMpOwogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZp
Y2VXb3JrZXJDbGllbnQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNz
YWdlLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CiAgICAgV2ViU1dPcmlnaW5TdG9yZSYgc3dPcmln
aW5TdG9yZUZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwogI2VuZGlmCkBAIC0xNTYsOCArMTU0
LDggQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBkaWRD
cmVhdGVXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpBdHRhY2htZW50
Jik7CiAKLSAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX3dvcmtlckNvbnRleHRQcm9jZXNz
Q29ubmVjdGlvbjsKLSAgICBib29sIG1fd2FpdGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29u
bmVjdGlvbiB7IGZhbHNlIH07CisgICAgUmVmUHRyPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbj4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOworICAgIGJvb2wgbV93YWl0aW5nRm9y
U2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24geyBmYWxzZSB9OwogICAgIEhhc2hNYXA8
UEFMOjpTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTV1NlcnZlcj4+IG1fc3dT
ZXJ2ZXJzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFdlYlNXU2VydmVyQ29ubmVjdGlvbio+IG1f
c3dTZXJ2ZXJDb25uZWN0aW9uczsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggM2I2ZDMzOTM2
ZTguLjA1NzQ5MDIzM2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNz
L1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTM4LDEyICszOCw2IEBAIG1lc3Nh
Z2VzIC0+IFN0b3JhZ2VQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAgICAgRGlkR2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKElQQzo6
QXR0YWNobWVudCBjb25uZWN0aW9uSGFuZGxlKQogCi0gICAgU2VydmljZVdvcmtlckNvbnRleHRG
YWlsZWRUb1N0YXJ0KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlvbktleSwgV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFN0cmluZyBt
ZXNzYWdlKQotICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0U3RhcnRlZCh1aW50NjRfdCBzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eSByZWdpc3RyYXRpb25LZXksIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKQotICAgIERpZEZpbmlzaFNlcnZpY2VXb3JrZXJJbnN0YWxsKHVp
bnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlvbktleSwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCk7Ci0g
ICAgRGlkRmluaXNoU2VydmljZVdvcmtlckFjdGl2YXRpb24odWludDY0X3Qgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgcmVn
aXN0cmF0aW9uS2V5LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29y
a2VySWRlbnRpZmllcik7Ci0gICAgU2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHModWlu
dDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIGhhc1BlbmRpbmdFdmVudHMp
OwotCiAgICAgRGlkTm90SGFuZGxlRmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcikKICAgICBEaWRGYWlsRmV0Y2godWludDY0
X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcikK
ICAgICBEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
dG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA0NTQ1YmM0YTI1
Mi4uOWIwOTc3ODUzZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3Mv
U3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3Rv
cmFnZVByb2Nlc3MvU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0zNSw2ICsz
NSwxMSBAQAogI2luY2x1ZGUgIldlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSA8d3RmL1J1bkxvb3AuaD4KIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyNpbmNs
dWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVz
cGFjZSBQQUw7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtODUsNiArOTAsMTEgQEAg
dm9pZCBTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW8KICAgICAgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS0+ZGlk
UmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6
OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7
CisgICAgICAgIFN0b3JhZ2VQcm9jZXNzOjpzaW5nbGV0b24oKS5nbG9iYWxTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uKCktPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQogI2VuZGlmCiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTE0OCwxMCArMTU4LDggQEAgdm9pZCBTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlv
bjo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFNlc3Npb25JRCBzZXNzaW8KIAogICAgIFN0
b3JhZ2VQcm9jZXNzOjpzaW5nbGV0b24oKS5yZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbigqKGNv
bm5lY3Rpb25SZXN1bHQuaXRlcmF0b3ItPnZhbHVlKSk7CiAKLSAgICBpZiAoYXV0byogY29ubmVj
dGlvbiA9IFN0b3JhZ2VQcm9jZXNzOjpzaW5nbGV0b24oKS53b3JrZXJDb250ZXh0UHJvY2Vzc0Nv
bm5lY3Rpb24oKSkKLSAgICAgICAgY29ubmVjdGlvblJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPnNl
dENvbnRleHRDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwotICAgIGVsc2UKLSAgICAgICAgU3RvcmFn
ZVByb2Nlc3M6OnNpbmdsZXRvbigpLmNyZWF0ZVdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlv
bigpOworICAgIGlmICghU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLmdsb2JhbFNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24oKSkKKyAgICAgICAgU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigp
LmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKIH0KIAogdm9pZCBTdG9yYWdlVG9X
ZWJQcm9jZXNzQ29ubmVjdGlvbjo6cmVtb3ZlU1dTZXJ2ZXJDb25uZWN0aW9uKHVpbnQ2NF90IHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKQpAQCAtMTY1LDExICsxNzMsOCBAQCB2b2lkIFN0b3Jh
Z2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjpyZW1vdmVTV1NlcnZlckNvbm5lY3Rpb24odWludDY0
X3Qgc2VydmVyQ29ubgogCiB2b2lkIFN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjp3b3Jr
ZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb25DcmVhdGVkKCkKIHsKLSAgICBhdXRvKiBpcGNDb25u
ZWN0aW9uID0gU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLndvcmtlckNvbnRleHRQcm9jZXNz
Q29ubmVjdGlvbigpOwotICAgIEFTU0VSVChpcGNDb25uZWN0aW9uKTsKLQotICAgIGZvciAoYXV0
byYgc3dDb25uZWN0aW9uIDogbV9zd0Nvbm5lY3Rpb25zLnZhbHVlcygpKQotICAgICAgICBzd0Nv
bm5lY3Rpb24tPnNldENvbnRleHRDb25uZWN0aW9uKGlwY0Nvbm5lY3Rpb24pOworICAgIGZvciAo
YXV0byogc2VydmVyIDogU1dTZXJ2ZXI6OmFsbFNlcnZlcnMoKSkKKyAgICAgICAgc2VydmVyLT5z
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uQ3JlYXRlZCgpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDlhMTQ0N2I2
MzBlLi4wOGRlM2MzOTRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMDE5LDYgKzEwMTksOCBAQAogCQk1MTRCREVEMzE2Qzk4RURE
MDBFNEUyNUUgLyogU3RhdGlzdGljc1JlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEJERUQyMTZDOThFREQwMEU0RTI1RSAvKiBTdGF0aXN0
aWNzUmVxdWVzdC5oICovOyB9OwogCQk1MTREOUY1NzE5MTE5RDM1MDAwMDYzQTcgLyogU2Vydmlj
ZXNDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTREOUY1NTE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLmggKi87
IH07CiAJCTUxNEQ5RjU4MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTREOUY1NjE5
MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLm1tICovOyB9OworCQk1MTUyNjJC
QzFGQjk1MTVEMDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNTI2
MkJCMUZCOTUxMzEwMDcwRTU3OSAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNz
YWdlcy5oICovOyB9OworCQk1MTUyNjJCRDFGQjk1MTYxMDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNTI2MkJBMUZCOTUxMzEwMDcwRTU3OSAvKiBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9Owog
CQk1MTU3OEI4MzEyMDlFQ0VGMDBBMzdDNEEgLyogQVBJRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1NzhCODIxMjA5RUNFRjAwQTM3QzRBIC8q
IEFQSURhdGEuaCAqLzsgfTsKIAkJNTE1QkUxNzcxRDUzRkU4NzAwREQ3QzY4IC8qIFdlYkdhbWVw
YWRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTVCRTE3MzFENTNGRERDMDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmNwcCAq
LzsgfTsKIAkJNTE1QkUxNzkxRDUzRkU4RjAwREQ3QzY4IC8qIFdlYkdhbWVwYWRQcm92aWRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1QkUxNzQx
RDUzRkREQzAwREQ3QzY4IC8qIFdlYkdhbWVwYWRQcm92aWRlci5oICovOyB9OwpAQCAtMTA1OCw2
ICsxMDYwLDcgQEAKIAkJNTE3REQ1QkUxODBEQTdEMzAwODE2NjBCIC8qIFN0b3JhZ2VQcm9jZXNz
UHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE3REQ1QkMxODBEQTdEMzAwODE2NjBCIC8qIFN0b3JhZ2VQcm9jZXNzUHJveHkuY3BwICovOyB9
OwogCQk1MTdERDVCRjE4MERBN0QzMDA4MTY2MEIgLyogU3RvcmFnZVByb2Nlc3NQcm94eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3REQ1QkQxODBE
QTdEMzAwODE2NjBCIC8qIFN0b3JhZ2VQcm9jZXNzUHJveHkuaCAqLzsgfTsKIAkJNTE4M0RERUMx
NjMwQkRGQzAwOEJFNUM3IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA1QjBENDE2MkY3QTdBMDBF
Mjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCAqLzsgfTsKKwkJNTE4NTQzMEUx
RkI2ODE2MTAwNDc4Rjk1IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg1NDMwRDFGQjY4
MEZBMDA0NzhGOTUgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCAqLzsgfTsK
IAkJNTE4NzFCNUIxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODcxQjU5MTI3Q0I4OUQw
MEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5jcHAgKi87IH07CiAJCTUxODcxQjVDMTI3Q0I4OUQw
MEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE4NzFCNUExMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRN
ZW51LmggKi87IH07CiAJCTUxOEFDQUVBMTJBRUU2QkIwMEIwNEI4MyAvKiBXS1Byb3RlY3Rpb25T
cGFjZVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MThBQ0FFOTEyQUVFNkJCMDBCMDRCODMgLyogV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zMzU5LDYg
KzMzNjIsOSBAQAogCQk1MTRCREVEMjE2Qzk4RUREMDBFNEUyNUUgLyogU3RhdGlzdGljc1JlcXVl
c3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGlzdGljc1JlcXVlc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0RDlGNTUxOTExOUQzNTAwMDA2M0E3
IC8qIFNlcnZpY2VzQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTZXJ2aWNlc0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0
RDlGNTYxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNlcnZpY2VzQ29udHJvbGxlci5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE1MjYyQjkxRkI5NTAzNTAwNzBFNTc5IC8qIFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNTI2MkJBMUZCOTUxMzEwMDcwRTU3OSAvKiBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE1MjYy
QkIxRkI5NTEzMTAwNzBFNTc5IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3Nh
Z2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
NTc4QjgyMTIwOUVDRUYwMEEzN0M0QSAvKiBBUElEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFQSURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1
QkUxNzMxRDUzRkREQzAwREQ3QzY4IC8qIFdlYkdhbWVwYWRQcm92aWRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHYW1lcGFkUHJvdmlkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVCRTE3NDFENTNGRERDMDBERDdDNjggLyogV2Vi
R2FtZXBhZFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdh
bWVwYWRQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzM5Niw2ICsz
NDAyLDggQEAKIAkJNTE3REQ1QkMxODBEQTdEMzAwODE2NjBCIC8qIFN0b3JhZ2VQcm9jZXNzUHJv
eHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RvcmFnZVByb2Nl
c3NQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0RENUJEMTgwREE3
RDMwMDgxNjYwQiAvKiBTdG9yYWdlUHJvY2Vzc1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0b3JhZ2VQcm9jZXNzUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTE4M0IzOTMxMzc5Rjg1QzAwRTg3NTRFIC8qIFNoaW0ueGNjb25maWcgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gU2hpbS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTE4NTQzMEMxRkI2ODBGOTAwNDc4Rjk1IC8qIFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTE4NTQzMEQxRkI2ODBGQTAwNDc4Rjk1IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTg3MUI1OTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29udGV4dE1lbnUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTg3MUI1QTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4
dE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29udGV4dE1lbnUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4QUNBRTkxMkFFRTZCQjAwQjA0Qjgz
IC8qIFdLUHJvdGVjdGlvblNwYWNlVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNjM4Myw2ICs2MzkxLDkgQEAKIAkJCQk1MTdBNTMwOTFGNDc5RTMxMDBEQ0RDMEEgLyog
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLywKIAkJCQk1MTdBNTMwNzFGNDc5RTMxMDBEQ0RD
MEEgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggKi8sCiAJCQkJNTE3QTUzMDgxRjQ3OUUzMTAw
RENEQzBBIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKKwkJCQk1MTg1
NDMwRDFGQjY4MEZBMDA0NzhGOTUgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cCAqLywKKwkJCQk1MTg1NDMwQzFGQjY4MEY5MDA0NzhGOTUgLyogV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmggKi8sCisJCQkJNTE1MjYyQjkxRkI5NTAzNTAwNzBFNTc5IC8qIFdlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gU2VydmljZVdvcmtlcjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC04MjAyLDYg
KzgyMTMsOCBAQAogCQkJCTQ2MEY0ODhFMUY5OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi8sCiAJCQkJNTE3QTUyRDcxRjQzQTlCNjAwRENE
QzBBIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJ
NTE3QTUyRDYxRjQzQTlCNjAwRENEQzBBIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2Vz
LmggKi8sCisJCQkJNTE1MjYyQkExRkI5NTEzMTAwNzBFNTc5IC8qIFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJNTE1MjYyQkIxRkI5NTEz
MTAwNzBFNTc5IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmggKi8s
CiAJCQkJMUFBRjA4QjUxOTI2OUU2RDAwQjYzOTBDIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
ck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMUFBRjA4QjYxOTI2OUU2RDAwQjYzOTBDIC8q
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlck1lc3NhZ2VzLmggKi8sCiAJCQkJN0MzNjFENzYxOTI4
MDNCRDAwMzZBNTlEIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLywKQEAgLTkxMjUsNiArOTEzOCw3IEBACiAJCQkJODNGMUEwN0ExRjk2RTc3OTAw
NDVCOTRFIC8qIFdlYlNXT3JpZ2luVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0E1MzBC
MUY0NzlFMzYwMERDREMwQSAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxN0E1MkQ5MUY0M0E5REEwMERDREMwQSAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb25N
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE1MjYyQkMxRkI5NTE1RDAwNzBFNTc5IC8q
IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTE4RTk5QzFGMjk1MjY2MDAzRUY5RjUgLyogV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5l
Y3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQTBFRjdGMTIzMzFFNzgwMDdEM0NGQiAvKiBX
ZWJVbmRvU3RlcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBRjA4QUUxOTI2OTM2NzAwQjYzOTBD
IC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDc5MSw2
ICsxMDgwNSw4IEBACiAJCQkJODNGMUEwNzkxRjk2RTc3OTAwNDVCOTRFIC8qIFdlYlNXT3JpZ2lu
VGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3QTUzMEExRjQ3OUUzNjAwRENEQzBBIC8q
IFdlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdBNTJEODFG
NDNBOURBMDBEQ0RDMEEgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTUxODU0MzBFMUZCNjgxNjEwMDQ3OEY5NSAvKiBXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE1MjYyQkQx
RkI5NTE2MTAwNzBFNTc5IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTE4RTk5QjFGMjk1MjY2MDAzRUY5RjUg
LyogV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QzAzMzdERDgxMjdBNTFCNjAwOEZGNEY0IC8qIFdlYlRvdWNoRXZlbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkRBOTQ0QTMxODg0RTRGMDAwRUQ4NkRCIC8qIFdlYlRvdWNoRXZlbnRJT1MuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXgg
ZWRiMjQ1NDczOTkuLmRmZGM2MmY4NmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNLZXlzLmgi
CiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3Mu
aCIKKyNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCIKICNpbmNsdWRlICJX
ZWJTb2NrZXRQcm92aWRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yQ2xpZW50Lmg+CkBA
IC05NSw4ICs5NiwxMCBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp1cGRh
dGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJgogICAgIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0RmV0Y2hBUElFbmFibGVkKHN0b3JlLmdl
dEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6ZmV0Y2hBUElFbmFibGVkS2V5KCkp
KTsKIH0KIAotdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZp
Y2VXb3JrZXIodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246Omluc3RhbGxTZXJ2aWNlV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YSYgZGF0YSkKIHsKKyAgICBMT0coU2VydmljZVdvcmtlciwgIldlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlciBmb3Igd29ya2VyICVzIiwgZGF0YS5zZXJ2
aWNlV29ya2VySWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKICAg
ICAvLyBGSVhNRTogUHJvdmlkZSBhIHNlbnNpY2FsIHNlc3Npb24gSUQuCiAgICAgYXV0byBzZXNz
aW9uSUQgPSBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwogCkBAIC0xMTMsNyAr
MTE2LDcgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZp
Y2VXb3JrZXIodWludDY0X3Qgc2VydmVyQ29ubmVjdGkKICAgICBhdXRvIGZyYW1lTG9hZGVyQ2xp
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ+KHNl
c3Npb25JRCwgbV9wYWdlSUQsICsrbV9wcmV2aW91c1NlcnZpY2VXb3JrZXJJRCk7CiAgICAgcGFn
ZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lID0gZnJhbWVMb2FkZXJDbGll
bnQucmVsZWFzZSgpOwogCi0gICAgYXV0byBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgPSBTZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZShXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSwg
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGRhdGEsIHNlc3Npb25JRCwgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuY2FjaGVTdG9yYWdlUHJvdmlkZXIoKSk7CisgICAgYXV0byBzZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkgPSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZShXVEZNb3Zl
KHBhZ2VDb25maWd1cmF0aW9uKSwgZGF0YSwgc2Vzc2lvbklELCBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5jYWNoZVN0b3JhZ2VQcm92aWRlcigpKTsKICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5n
bGV0b24oKS5yZWdpc3RlclNlcnZpY2VXb3JrZXJUaHJlYWRGb3JJbnN0YWxsKFdURk1vdmUoc2Vy
dmljZVdvcmtlclRocmVhZFByb3h5KSk7CiAKICAgICBMT0coU2VydmljZVdvcmtlciwgIkNvbnRl
eHQgcHJvY2VzcyBQSUQ6ICVpIGNyZWF0ZWQgd29ya2VyIHRocmVhZFxuIiwgZ2V0cGlkKCkpOwpA
QCAtMTIxLDE1ICsxMjQsMTAgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
aW5zdGFsbFNlcnZpY2VXb3JrZXIodWludDY0X3Qgc2VydmVyQ29ubmVjdGkKIAogdm9pZCBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c2VydmljZVdvcmtlclN0YXJ0ZWRXaXRoTWVzc2Fn
ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBleGNlcHRpb25NZXNzYWdlKQogewotICAgIGF1dG8qIHRocmVhZFByb3h5ID0gU1dD
b250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlclRocmVhZFByb3h5KHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICBBU1NFUlQodGhyZWFkUHJveHkpOwotICAgIAotICAg
IGF1dG8mIGRhdGEgPSB0aHJlYWRQcm94eS0+dGhyZWFkKCkuY29udGV4dERhdGEoKTsKLSAgICAK
ICAgICBpZiAoZXhjZXB0aW9uTWVzc2FnZS5pc0VtcHR5KCkpCi0gICAgICAgIG1fY29ubmVjdGlv
blRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpTZXJ2aWNl
V29ya2VyQ29udGV4dFN0YXJ0ZWQodGhyZWFkUHJveHktPnRocmVhZCgpLnNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyKCksIGRhdGEucmVnaXN0cmF0aW9uS2V5LCBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciksIDApOworICAgICAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlNjcmlwdENvbnRleHRTdGFy
dGVkKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSwgMCk7CiAgICAgZWxzZQotICAgICAgICBtX2Nv
bm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6
U2VydmljZVdvcmtlckNvbnRleHRGYWlsZWRUb1N0YXJ0KHRocmVhZFByb3h5LT50aHJlYWQoKS5z
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpLCBkYXRhLnJlZ2lzdHJhdGlvbktleSwgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGV4Y2VwdGlvbk1lc3NhZ2UpLCAwKTsKKyAgICAgICAgbV9jb25u
ZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpTY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgZXhjZXB0aW9uTWVzc2FnZSksIDApOwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdv
cmtlcklkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zKQpAQCAtMTQ5LDE1ICsxNDcsMTMgQEAg
dm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZShTZXJ2aWMKICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24o
KS5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKGRlc3RpbmF0aW9uSWRlbnRp
ZmllciwgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChtZXNzYWdlLnZlY3RvcigpKSwgc291
cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2luKTsKIH0KIAotdm9pZCBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6ZmlyZUluc3RhbGxFdmVudCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpcmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtl
cklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBVTlVTRURfUEFSQU0oc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIpOwogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZpcmVJ
bnN0YWxsRXZlbnQoaWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OmZpcmVBY3RpdmF0ZUV2ZW50KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBVTlVTRURfUEFSQU0oc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIpOwogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZpcmVBY3Rp
dmF0ZUV2ZW50KGlkZW50aWZpZXIpOwogfQogCkBAIC0xNjgsMjggKzE2NCwxNyBAQCB2b2lkIFdl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNs
aWVudChjb25zdCBTZXJ2aQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpk
aWRGaW5pc2hJbnN0YWxsKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCiB7Ci0gICAgYXV0byogdGhyZWFkUHJveHkgPSBT
V0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIpOwotICAgIEFTU0VSVCh0aHJlYWRQcm94eSk7Ci0KLSAgICBh
dXRvJiBkYXRhID0gdGhyZWFkUHJveHktPnRocmVhZCgpLmNvbnRleHREYXRhKCk7Ci0gICAgbV9j
b25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6
OkRpZEZpbmlzaFNlcnZpY2VXb3JrZXJJbnN0YWxsKHRocmVhZFByb3h5LT50aHJlYWQoKS5zZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpLCBkYXRhLnJlZ2lzdHJhdGlvbktleSwgc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIHdhc1N1Y2Nlc3NmdWwpLCAwKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1N0
b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OkRpZEZpbmlzaEluc3RhbGwoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHdhc1N1Y2Nlc3Nm
dWwpLCAwKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlkRmlu
aXNoQWN0aXZhdGlvbihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllcikKIHsKLSAgICBhdXRvKiB0aHJlYWRQcm94eSA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmds
ZXRvbigpLnNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7
Ci0gICAgQVNTRVJUKHRocmVhZFByb3h5KTsKLQotICAgIGF1dG8mIGRhdGEgPSB0aHJlYWRQcm94
eS0+dGhyZWFkKCkuY29udGV4dERhdGEoKTsKLSAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6RGlkRmluaXNoU2VydmljZVdvcmtl
ckFjdGl2YXRpb24odGhyZWFkUHJveHktPnRocmVhZCgpLnNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyKCksIGRhdGEucmVnaXN0cmF0aW9uS2V5LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciksIDAp
OworICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6RGlkRmluaXNoQWN0aXZhdGlvbihzZXJ2aWNlV29y
a2VySWRlbnRpZmllciksIDApOwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKQogewot
ICAgIGF1dG8qIHRocmVhZFByb3h5ID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2Vy
dmljZVdvcmtlclRocmVhZFByb3h5KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICBBU1NF
UlQodGhyZWFkUHJveHkpOwotCi0gICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OlNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZl
bnRzKHRocmVhZFByb3h5LT50aHJlYWQoKS5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpLCBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgaGFzUGVuZGluZ0V2ZW50cyksIDApOworICAgIG1fY29u
bmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6U2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHMoc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGhhc1BlbmRpbmdFdmVudHMpLCAwKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggOGRhNmE1ZDZl
YWQuLmZhMmFjODM5MmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTU4
LDExICs1OCwxMSBAQCBwcml2YXRlOgogCiAgICAgLy8gSVBDIG1lc3NhZ2VzLgogICAgIHZvaWQg
c2VydmljZVdvcmtlclN0YXJ0ZWRXaXRoTWVzc2FnZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBleGNlcHRpb25NZXNzYWdlKSBmaW5hbDsKLSAgICB2b2lk
IGluc3RhbGxTZXJ2aWNlV29ya2VyKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmKTsKKyAgICB2b2lkIGlu
c3RhbGxTZXJ2aWNlV29ya2VyKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YSYpOwogICAgIHZvaWQgc3RhcnRGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyPiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNv
cmU6OkZldGNoT3B0aW9ucyYmKTsKICAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb25J
ZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIGNvbnN0IFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBzb3VyY2VJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7Ci0gICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KHVpbnQ2
NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllcik7Ci0gICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudCh1aW50NjRfdCBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAg
IHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7
CisgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
Zmllcik7CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQ
cm9jZXNzOwogICAgIHVpbnQ2NF90IG1fcGFnZUlEIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCA1ZDI1NTVhZGNjOS4uMTQ5OGQy
NzIxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCkBAIC0yMywxMSArMjMsMTEgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKIG1l
c3NhZ2VzIC0+IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIHsKLSAgICBJbnN0YWxsU2Vy
dmljZVdvcmtlcih1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc3RydWN0IFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBjb250ZXh0RGF0YSkKKyAgICBJbnN0YWxs
U2VydmljZVdvcmtlcihzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhIGNv
bnRleHREYXRhKQogICAgIFN0YXJ0RmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcj4gc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zIG9w
dGlvbnMpCiAgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIsIElQQzo6RGF0
YVJlZmVyZW5jZSBtZXNzYWdlLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElk
ZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgU3RyaW5nIHNvdXJjZU9yaWdpbikKLSAgICBGaXJl
SW5zdGFsbEV2ZW50KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQotICAgIEZpcmVBY3RpdmF0ZUV2
ZW50KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIEZpcmVJbnN0YWxsRXZlbnQoV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBGaXJlQWN0aXZhdGVF
dmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogfQogCiAj
ZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>