<?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>155297</bug_id>
          
          <creation_ts>2016-03-10 07:33:56 -0800</creation_ts>
          <short_desc>[CallWith=ScriptExecutionContext] should pass ScriptExecutionContext to the implementation by reference</short_desc>
          <delta_ts>2016-03-11 01:44:46 -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 JavaScript</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1173080</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-10 07:33:56 -0800</bug_when>
    <thetext>[CallWith=ScriptExecutionContext] should pass ScriptExecutionContext to the implementation by reference</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173081</commentid>
    <comment_count>1</comment_count>
      <attachid>273566</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-10 07:37:46 -0800</bug_when>
    <thetext>Created attachment 273566
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173094</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-10 08:15:43 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created attachment 273566 [details]
&gt; Patch

Patch could be completed by additional work on moving to ScriptExecutionContext references wherever possible.
For instance, DOMRequestState constructor should be updated to take a ScriptExecutionContext reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173103</commentid>
    <comment_count>3</comment_count>
      <attachid>273566</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-10 08:51:19 -0800</bug_when>
    <thetext>Comment on attachment 273566
Patch

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

Nice change.

Are there some of these where the ScriptExecutionContext argument is not actually needed? Worth thinking about later.

&gt; Source/WebCore/Modules/indexeddb/client/IDBFactoryImpl.cpp:55
&gt; +    ASSERT(is&lt;Document&gt;(context) || context.isWorkerGlobalScope());
&gt; +    if (is&lt;Document&gt;(context)) {
&gt; +        Document&amp; document = downcast&lt;Document&gt;(context);
&gt;          if (!document.frame())
&gt;              return true;
&gt;          if (!document.page())
&gt;              return true;
&gt;      }

In the future seems like this should be expressed as a virtual function on ScriptExecutionContext.

&gt; Source/WebCore/Modules/indexeddb/client/IDBFactoryImpl.cpp:110
&gt; +    ASSERT(context.securityOrigin());
&gt; +    ASSERT(context.topOrigin());

What makes these assertions correct? I know the assertions are not new, but I want to understand why these are guaranteed true and not just &quot;wishful programming&quot;.

&gt; Source/WebCore/Modules/indexeddb/client/IDBFactoryImpl.cpp:138
&gt; +    ASSERT(context.securityOrigin());
&gt; +    ASSERT(context.topOrigin());

Ditto.

&gt; Source/WebCore/Modules/indexeddb/client/IDBTransactionImpl.cpp:165
&gt; +    auto objectStore = IDBObjectStore::create(*scriptExecutionContext(), *info, *this);

What guarantees it can’t be null?

&gt; Source/WebCore/Modules/mediastream/HTMLMediaElementMediaStream.idl:31
&gt; +    [SetterCallWith=ScriptExecutionContext] attribute MediaStream? srcObject;

Does this fix a bug? What was the problem before with getting the context from the ActiveDOMObejct function instead of having it be passed?

&gt; Source/WebCore/Modules/notifications/Notification.cpp:226
&gt; +    ASSERT(downcast&lt;Document&gt;(context).page());

This shows us that the argument type should be Document&amp;, not ScriptExecutionContext&amp;. Something we need to eventually work out. It’s really the same problem as the pointer vs. reference thing. Somehow, the caller knows the real type, but the interface does not express that requirement. That gives us the risk later that someone does not understand the requirement at the call site.

&gt; Source/WebCore/Modules/notifications/Notification.cpp:247
&gt; +    ASSERT(downcast&lt;Document&gt;(context).page());

Ditto.

&gt; Source/WebCore/Modules/notifications/NotificationClient.h:47
&gt; +// FIXME: Migrate to ScriptExecutionContext references.

Good idea, but not sure we should add the FIXME.

&gt; Source/WebCore/fileapi/FileReaderSync.h:63
&gt;          return readAsText(scriptExecutionContext, blob, &quot;&quot;, ec);

Should be emptyString rather than &quot;&quot; (return later for that I guess).

&gt; Source/WebCore/page/History.h:60
&gt; +    void back(ScriptExecutionContext&amp; context) { back(&amp;context); }
&gt; +    void forward(ScriptExecutionContext&amp; context) { forward(&amp;context); }
&gt; +    void go(ScriptExecutionContext&amp; context, int distance) { go(&amp;context, distance); }
&gt; +
&gt;      void back(ScriptExecutionContext*);
&gt;      void forward(ScriptExecutionContext*);
&gt;      void go(ScriptExecutionContext*, int distance);

Seems unfortunate we need to overload like this. Can we get rid of the pointer versions at some point?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173224</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-10 11:58:00 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 273566 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=273566&amp;action=review
&gt; 
&gt; Nice change.
&gt; 
&gt; Are there some of these where the ScriptExecutionContext argument is not
&gt; actually needed? Worth thinking about later.
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/client/IDBFactoryImpl.cpp:55
&gt; &gt; +    ASSERT(is&lt;Document&gt;(context) || context.isWorkerGlobalScope());
&gt; &gt; +    if (is&lt;Document&gt;(context)) {
&gt; &gt; +        Document&amp; document = downcast&lt;Document&gt;(context);
&gt; &gt;          if (!document.frame())
&gt; &gt;              return true;
&gt; &gt;          if (!document.page())
&gt; &gt;              return true;
&gt; &gt;      }
&gt; 
&gt; In the future seems like this should be expressed as a virtual function on
&gt; ScriptExecutionContext.

Right.

&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/client/IDBFactoryImpl.cpp:110
&gt; &gt; +    ASSERT(context.securityOrigin());
&gt; &gt; +    ASSERT(context.topOrigin());
&gt; 
&gt; What makes these assertions correct? I know the assertions are not new, but
&gt; I want to understand why these are guaranteed true and not just &quot;wishful
&gt; programming&quot;.

I do not know the reason.  I&apos;ll look at it, time permitting.
That said, these assertions will never crash since context.securityOrigin() is used before them.
I will move the ASSERT() above when landing.

&gt; &gt; Source/WebCore/Modules/indexeddb/client/IDBFactoryImpl.cpp:138
&gt; &gt; +    ASSERT(context.securityOrigin());
&gt; &gt; +    ASSERT(context.topOrigin());
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/client/IDBTransactionImpl.cpp:165
&gt; &gt; +    auto objectStore = IDBObjectStore::create(*scriptExecutionContext(), *info, *this);
&gt; 
&gt; What guarantees it can’t be null?

There is a check above that ensures that.

&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/HTMLMediaElementMediaStream.idl:31
&gt; &gt; +    [SetterCallWith=ScriptExecutionContext] attribute MediaStream? srcObject;
&gt; 
&gt; Does this fix a bug? What was the problem before with getting the context
&gt; from the ActiveDOMObejct function instead of having it be passed?

This is mostly for consistency.
With this change, the setter will throw an exception if the scriptExecutionContext is null in the binding generated code. Without the change, we would just return early without setting anything.

&gt; &gt; Source/WebCore/Modules/notifications/Notification.cpp:226
&gt; &gt; +    ASSERT(downcast&lt;Document&gt;(context).page());
&gt; 
&gt; This shows us that the argument type should be Document&amp;, not
&gt; ScriptExecutionContext&amp;. Something we need to eventually work out. It’s
&gt; really the same problem as the pointer vs. reference thing. Somehow, the
&gt; caller knows the real type, but the interface does not express that
&gt; requirement. That gives us the risk later that someone does not understand
&gt; the requirement at the call site.

The IDL should be updated to set CallWith=Document here.
I will do that as a follow-up patch.

&gt; &gt; Source/WebCore/Modules/notifications/Notification.cpp:247
&gt; &gt; +    ASSERT(downcast&lt;Document&gt;(context).page());
&gt; 
&gt; Ditto.

The IDL should be updated to set CallWith=Document here.
I will do that as a follow-up patch.

&gt; &gt; Source/WebCore/Modules/notifications/NotificationClient.h:47
&gt; &gt; +// FIXME: Migrate to ScriptExecutionContext references.
&gt; 
&gt; Good idea, but not sure we should add the FIXME.

Will remove it.

&gt; &gt; Source/WebCore/fileapi/FileReaderSync.h:63
&gt; &gt;          return readAsText(scriptExecutionContext, blob, &quot;&quot;, ec);
&gt; 
&gt; Should be emptyString rather than &quot;&quot; (return later for that I guess).

OK

&gt; &gt; Source/WebCore/page/History.h:60
&gt; &gt; +    void back(ScriptExecutionContext&amp; context) { back(&amp;context); }
&gt; &gt; +    void forward(ScriptExecutionContext&amp; context) { forward(&amp;context); }
&gt; &gt; +    void go(ScriptExecutionContext&amp; context, int distance) { go(&amp;context, distance); }
&gt; &gt; +
&gt; &gt;      void back(ScriptExecutionContext*);
&gt; &gt;      void forward(ScriptExecutionContext*);
&gt; &gt;      void go(ScriptExecutionContext*, int distance);
&gt; 
&gt; Seems unfortunate we need to overload like this. Can we get rid of the
&gt; pointer versions at some point?

This probably require some changes in History IDL.
I will do that as a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173629</commentid>
    <comment_count>5</comment_count>
      <attachid>273693</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-11 00:08:21 -0800</bug_when>
    <thetext>Created attachment 273693
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173654</commentid>
    <comment_count>6</comment_count>
      <attachid>273693</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-11 01:44:43 -0800</bug_when>
    <thetext>Comment on attachment 273693
Patch for landing

Clearing flags on attachment: 273693

Committed r198002: &lt;http://trac.webkit.org/changeset/198002&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173655</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-11 01:44:46 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273566</attachid>
            <date>2016-03-10 07:37:46 -0800</date>
            <delta_ts>2016-03-11 00:08:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155297-20160310163732.patch</filename>
            <type>text/plain</type>
            <size>135452</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3OTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzc4MGY3M2E4NGVjMGVh
YzJhYjViMzJjODZjM2U5NGY5YjdiZTkxYy4uYTQwNDY5OGFiYTg3MWVhMjNmYTA4NmRiNjQ3MWZh
OTU0MjlkNGQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2NyBAQAorMjAxNi0wMy0xMCAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIFtDYWxs
V2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBzaG91bGQgcGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0IHRvIHRoZSBpbXBsZW1lbnRhdGlvbiBieSByZWZlcmVuY2UKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTI5NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5naW5nIHRoZSBiaW5kaW5nIGdl
bmVyYXRvciB0byBwYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgYnkgcmVmZXJlbmNlLgorICAg
ICAgICBVcGRhdGluZyBET00gY2xhc3NlcyBhY2NvcmRpbmdseS4KKworICAgICAgICBDb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpNZWRpYUtleVNlc3Np
b24pOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmg6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFLZXlzOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVxdWVzdDo6Y2xvbmUpOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0Lmg6CisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9u
c2U6OmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnJlZGlyZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmNsb25lKToKKyAgICAgICAgKiBNb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJDdXJzb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6Y29udGludWVGdW5jdGlv
bik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCS2V5UmFuZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UmFuZ2U6Omxvd2Vy
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UmFuZ2U6OnVwcGVyVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCS2V5UmFuZ2U6Om9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6SURC
S2V5UmFuZ2U6Omxvd2VyQm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UmFuZ2U6OnVw
cGVyQm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UmFuZ2U6OmJvdW5kKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5oOgorICAgICAgICAoV2ViQ29yZTo6
SURCS2V5UmFuZ2U6Omxvd2VyQm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UmFuZ2U6
OnVwcGVyQm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UmFuZ2U6OmJvdW5kKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCT3BlbkRCUmVxdWVzdDo6SURCT3BlbkRCUmVxdWVzdCk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQlJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6SURCUmVxdWVz
dCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDdXJzb3JJbXBsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQkNsaWVudDo6SURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ3Vyc29yOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkN1cnNvckltcGwuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCRmFjdG9yeUltcGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQ2xpZW50OjpzaG91bGRUaHJvd1NlY3VyaXR5RXhjZXB0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkNsaWVudDo6SURCRmFjdG9yeTo6Z2V0RGF0YWJhc2VOYW1lcyk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkZhY3Rvcnk6Om9wZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQ2xpZW50OjpJREJGYWN0b3J5OjpvcGVuSW50ZXJuYWwpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQ2xpZW50OjpJREJGYWN0b3J5OjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJDbGllbnQ6OklEQkZhY3Rvcnk6OmNtcCk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQkZhY3RvcnlJbXBsLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L0lEQkluZGV4SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGll
bnQ6OklEQkluZGV4OjpJREJJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklE
QkluZGV4OjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCSW5k
ZXg6OmNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCSW5kZXg6Om9wZW5L
ZXlDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJJbmRleDo6Z2V0KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCSW5kZXg6OmdldEtleSk6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkluZGV4SW1wbC5oOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPYmplY3RTdG9yZUltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ2xpZW50OjpJREJPYmplY3RTdG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkNsaWVudDo6SURCT2JqZWN0U3RvcmU6OklEQk9iamVjdFN0b3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJPYmplY3RTdG9yZTo6Z2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkNsaWVudDo6SURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCT2JqZWN0U3RvcmU6OmRvRGVsZXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCT2JqZWN0U3RvcmU6Om1vZGVybkRlbGV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQk9iamVjdFN0b3JlOjpjbGVhcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQk9iamVjdFN0b3JlOjppbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQk9iamVjdFN0b3JlOjpjb3VudCk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9iamVjdFN0b3JlSW1wbC5oOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPcGVuREJSZXF1ZXN0SW1wbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQk9wZW5EQlJlcXVlc3Q6OmNyZWF0ZURl
bGV0ZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJPcGVuREJSZXF1
ZXN0OjpjcmVhdGVPcGVuUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklE
Qk9wZW5EQlJlcXVlc3Q6OklEQk9wZW5EQlJlcXVlc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJPcGVuREJSZXF1ZXN0SW1wbC5oOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJDbGllbnQ6OklEQlJlcXVlc3Q6OklEQlJlcXVlc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
Q2xpZW50OjpJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCQ2xpZW50OjpJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ2xpZW50OjpJREJUcmFuc2FjdGlvbjo6Y3JlYXRlSW5kZXgpOgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvRE9NVVJMTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE9NVVJMTWVkaWFTb3VyY2U6OmNyZWF0ZU9iamVjdFVSTCk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXNvdXJjZS9ET01VUkxNZWRpYVNvdXJjZS5oOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vRE9NVVJMTWVkaWFTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RE9NVVJMTWVkaWFTdHJlYW06OmNyZWF0ZU9iamVjdFVSTCk6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9ET01VUkxNZWRpYVN0cmVhbS5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vSFRNTE1lZGlhRWxlbWVudE1lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnRNZWRpYVN0cmVhbTo6c2V0U3JjT2JqZWN0KToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL0hUTUxNZWRpYUVsZW1lbnRNZWRpYVN0cmVhbS5oOgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vSFRNTE1lZGlhRWxlbWVudE1lZGlhU3RyZWFtLmlkbDoK
KyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bjo6cGVybWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OnJlcXVlc3RQ
ZXJtaXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
Lmg6CisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DZW50ZXI6OmNyZWF0ZU5vdGlmaWNh
dGlvbik6CisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNsaWVu
dC5oOgorICAgICAgICAqIE1vZHVsZXMvcXVvdGEvU3RvcmFnZUluZm8uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3RvcmFnZUluZm86OnF1ZXJ5VXNhZ2VBbmRRdW90YSk6CisgICAgICAgIChXZWJD
b3JlOjpTdG9yYWdlSW5mbzo6cmVxdWVzdFF1b3RhKToKKyAgICAgICAgKiBNb2R1bGVzL3F1b3Rh
L1N0b3JhZ2VJbmZvLmg6CisgICAgICAgICogTW9kdWxlcy9xdW90YS9TdG9yYWdlUXVvdGEuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlQ2Fs
bFdpdGgpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rp
b25JbXBsZW1lbnRzTWV0aG9kMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VQ
cm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDIpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9i
aldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2Jq
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyk6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVP
YmpFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlcyk6Cisg
ICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyU3luYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
aWxlUmVhZGVyU3luYzo6cmVhZEFzQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Rmls
ZVJlYWRlclN5bmM6OnJlYWRBc0JpbmFyeVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
UmVhZGVyU3luYzo6cmVhZEFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyU3lu
Yzo6cmVhZEFzRGF0YVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyU3luYzo6c3Rh
cnRMb2FkaW5nKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmg6CisgICAgICAg
IChXZWJDb3JlOjpGaWxlUmVhZGVyU3luYzo6cmVhZEFzVGV4dCk6CisgICAgICAgICogaHRtbC9E
T01VUkwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpjcmVhdGVPYmplY3RVUkwpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpjcmVhdGVQdWJsaWNVUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NVVJMOjpyZXZva2VPYmplY3RVUkwpOgorICAgICAgICAqIGh0bWwvRE9NVVJMLmg6
CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFNyY09iamVjdCk6CisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0
RGF0YWJhc2VOYW1lcyk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBw
YWdlL0hpc3RvcnkuaDoKKyAgICAgICAgKFdlYkNvcmU6Okhpc3Rvcnk6OmJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6SGlzdG9yeTo6Zm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5
Ojpnbyk6CisKIDIwMTYtMDMtMDkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgRXh0cmFjdCBFdmVudFBhdGguaC9jcHAgb3V0IG9mIEV2ZW50RGlzcGF0Y2hlci5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCBkYzA4NjEwNWNiNDNiNGMxNGEyYTAyYjgxMzFmZjk3
MzFhZWM2YWUzLi40MTYyNTA1YTg5YzQ4NTFlNmZmZDE1MGIwMmViNjJhN2U4YjNlNDNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVNlc3Npb24uY3BwCkBAIC00MCwxNSArNDAsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1SZWY8TWVkaWFLZXlTZXNzaW9uPiBNZWRpYUtleVNlc3Npb246OmNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBNZWRpYUtleXMqIGtleXMsIGNvbnN0IFN0cmluZyYg
a2V5U3lzdGVtKQorUmVmPE1lZGlhS2V5U2Vzc2lvbj4gTWVkaWFLZXlTZXNzaW9uOjpjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgTWVkaWFLZXlzKiBrZXlzLCBjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSkKIHsKICAgICBhdXRvIHNlc3Npb24gPSBhZG9wdFJlZigqbmV3IE1l
ZGlhS2V5U2Vzc2lvbihjb250ZXh0LCBrZXlzLCBrZXlTeXN0ZW0pKTsKICAgICBzZXNzaW9uLT5z
dXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gc2Vzc2lvbjsKIH0KIAotTWVkaWFLZXlTZXNz
aW9uOjpNZWRpYUtleVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTWVk
aWFLZXlzKiBrZXlzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKLSAgICA6IEFjdGl2ZURPTU9i
amVjdChjb250ZXh0KQorTWVkaWFLZXlTZXNzaW9uOjpNZWRpYUtleVNlc3Npb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgTWVkaWFLZXlzKiBrZXlzLCBjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSkKKyAgICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKICAgICAsIG1fa2V5cyhr
ZXlzKQogICAgICwgbV9rZXlTeXN0ZW0oa2V5U3lzdGVtKQogICAgICwgbV9hc3luY0V2ZW50UXVl
dWUoKnRoaXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVNlc3Npb24uaAppbmRleCAzYTVhNDc1MWQxNTIxNjZlOTVmZDM5NjM3M2Nl
M2FmNjgyODllMDExLi4xZDA4NWVkZmI1OTUxN2UwNmNhNTQ2MzcwNmE1NTU0YmUxNzI3ZDMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTZXNzaW9uLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgTWVkaWFLZXlzOwogCiBjbGFz
cyBNZWRpYUtleVNlc3Npb24gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUtleVNlc3Np
b24+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9i
amVjdCwgcHVibGljIENETVNlc3Npb25DbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
TWVkaWFLZXlTZXNzaW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1lZGlhS2V5
cyosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKKyAgICBzdGF0aWMgUmVmPE1lZGlhS2V5U2Vz
c2lvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBNZWRpYUtleXMqLCBjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSk7CiAgICAgfk1lZGlhS2V5U2Vzc2lvbigpOwogCiAgICAgY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCB7IHJldHVybiBtX2tleVN5c3RlbTsgfQpAQCAtODAs
NyArODAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBv
dmVycmlkZTsKIAogcHJvdGVjdGVkOgotICAgIE1lZGlhS2V5U2Vzc2lvbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgTWVkaWFLZXlzKiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pOworICAgIE1l
ZGlhS2V5U2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgTWVkaWFLZXlzKiwgY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0pOwogICAgIHZvaWQga2V5UmVxdWVzdFRpbWVyRmlyZWQoKTsKICAg
ICB2b2lkIGFkZEtleVRpbWVyRmlyZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCmluZGV4IDRjZTA5NzUxNmM3Y2E5ZTg0
NThjMDJmZGQwNzM1YzFmOWUxODAwYWIuLmRmNTEyNzAxNzNmODgyNGYxMWVjMDg1YzVmODVhYjM4
YzczZWU2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5cy5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgTWVkaWFLZXlzOjp+TWVkaWFLZXlz
KCkKICAgICB9CiB9CiAKLVJlZlB0cjxNZWRpYUtleVNlc3Npb24+IE1lZGlhS2V5czo6Y3JlYXRl
U2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHR5
cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZlB0cjxNZWRp
YUtleVNlc3Npb24+IE1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKICAgICAvLyBGcm9tIDxodHRwOi8vd3d3LnczLm9yZy9UUi8y
MDE0L1dELWVuY3J5cHRlZC1tZWRpYS0yMDE0MDIxOC8jZG9tLWNyZWF0ZXNlc3Npb24+OgogICAg
IC8vIFRoZSBjcmVhdGVTZXNzaW9uKHR5cGUsIGluaXREYXRhKSBtZXRob2QgbXVzdCBydW4gdGhl
IGZvbGxvd2luZyBzdGVwczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5oCmluZGV4IDBmNmQzMmFlMzQxMjRkNDU3YzFkN2VlNDM1NTNhNjUx
YWJiOWMwMmYuLjk2MmQ4OWUxNWZmMzc5OTA3NzIxOTJiYzExODVjMTg0MmJkNjVlMzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaApA
QCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxNZWRpYUtleXM+IGNy
ZWF0ZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1
YWwgfk1lZGlhS2V5cygpOwogCi0gICAgUmVmUHRyPE1lZGlhS2V5U2Vzc2lvbj4gY3JlYXRlU2Vz
c2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWlu
dDhBcnJheSogaW5pdERhdGEsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWZQdHI8TWVkaWFLZXlT
ZXNzaW9uPiBjcmVhdGVTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSwgRXhjZXB0aW9uQ29kZSYpOwogCiAg
ICAgc3RhdGljIGJvb2wgaXNUeXBlU3VwcG9ydGVkKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlcXVlc3QuY3BwCmluZGV4IDAyMjNkNjJmYTQzNDc4ODUzZGVkYmEzYWQ4YmQ3Yzc3
OGY3NjlmODguLjExYjNkOTRmOTlhYmEwNDA5ODc3OTQzMzcyNzhlNWM3OGFlMDFiYWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKQEAgLTQzNSw3
ICs0MzUsNyBAQCBTdHJpbmcgRmV0Y2hSZXF1ZXN0OjpyZWRpcmVjdCgpIGNvbnN0CiAgICAgcmV0
dXJuIFN0cmluZygpOwogfQogCi1SZWZQdHI8RmV0Y2hSZXF1ZXN0PiBGZXRjaFJlcXVlc3Q6OmNs
b25lKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
UmVmUHRyPEZldGNoUmVxdWVzdD4gRmV0Y2hSZXF1ZXN0OjpjbG9uZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoaXNEaXN0dXJi
ZWQoKSkgewogICAgICAgICBlYyA9IFR5cGVFcnJvcjsKQEAgLTQ0Myw3ICs0NDMsNyBAQCBSZWZQ
dHI8RmV0Y2hSZXF1ZXN0PiBGZXRjaFJlcXVlc3Q6OmNsb25lKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIEV4Y2VwdAogICAgIH0KIAogICAgIC8vIEZJWE1FOiBWYWxpZGF0ZSBib2R5
IHRlZWluZy4KLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGZXRjaFJlcXVlc3QoKmNvbnRleHQs
IEZldGNoQm9keShtX2JvZHkpLCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShtX2hlYWRlcnMuZ2V0KCkp
LCBGZXRjaFJlcXVlc3Q6OkludGVybmFsUmVxdWVzdChtX2ludGVybmFsUmVxdWVzdCkpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGZXRjaFJlcXVlc3QoY29udGV4dCwgRmV0Y2hCb2R5KG1f
Ym9keSksIEZldGNoSGVhZGVyczo6Y3JlYXRlKG1faGVhZGVycy5nZXQoKSksIEZldGNoUmVxdWVz
dDo6SW50ZXJuYWxSZXF1ZXN0KG1faW50ZXJuYWxSZXF1ZXN0KSkpOwogfQogCiBjb25zdCBjaGFy
KiBGZXRjaFJlcXVlc3Q6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmgKaW5kZXggMTc4ZTBjMmE0MmYyMDRiOTNh
NjVkOGJlZGFiMzkzMzg1NjM4ZjJhNi4uNTljOWI1MTQ4OWU4ZWYzMGUzZjZlZWY5ZTBhMmRmYjFh
MmZjMTQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
cXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5o
CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgcmVkaXJlY3QoKSBjb25zdDsK
ICAgICBjb25zdCBTdHJpbmcmIGludGVncml0eSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxS
ZXF1ZXN0LmludGVncml0eTsgfQogCi0gICAgUmVmUHRyPEZldGNoUmVxdWVzdD4gY2xvbmUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWZQdHI8RmV0Y2hS
ZXF1ZXN0PiBjbG9uZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRXhjZXB0aW9uQ29kZSYpOwog
CiAgICAgc3RydWN0IEludGVybmFsUmVxdWVzdCB7CiAgICAgICAgIFJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5j
cHAKaW5kZXggZDFkNGRiYzc2MTZjMjZjN2UyZmY3Y2E2NDgwZjNlNGQ2M2QxNTBkYy4uYmE4ZThj
MzlmYmM2OWViMmIwY2EyZDcwZDZiYmUxMDRjYmU5M2E1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC00OCwxNSArNDgsMTUgQEAgc3Rh
dGljIGlubGluZSBib29sIGlzTnVsbEJvZHlTdGF0dXMoaW50IHN0YXR1cykKICAgICByZXR1cm4g
c3RhdHVzID09IDEwMSB8fCBzdGF0dXMgPT0gMjA0IHx8IHN0YXR1cyA9PSAyMDUgfHwgc3RhdHVz
ID09IDMwNDsKIH0KIAotUmVmPEZldGNoUmVzcG9uc2U+IEZldGNoUmVzcG9uc2U6OmVycm9yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCitSZWY8RmV0Y2hSZXNwb25zZT4gRmV0Y2hS
ZXNwb25zZTo6ZXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBGZXRjaFJlc3BvbnNlKCpjb250ZXh0LCBUeXBlOjpFcnJvciwg
eyB9LCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRlcnM6Okd1YXJkOjpJbW11dGFibGUp
LCBSZXNvdXJjZVJlc3BvbnNlKCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGZXRjaFJl
c3BvbnNlKGNvbnRleHQsIFR5cGU6OkVycm9yLCB7IH0sIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZl
dGNoSGVhZGVyczo6R3VhcmQ6OkltbXV0YWJsZSksIFJlc291cmNlUmVzcG9uc2UoKSkpOwogfQog
Ci1SZWZQdHI8RmV0Y2hSZXNwb25zZT4gRmV0Y2hSZXNwb25zZTo6cmVkaXJlY3QoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBzdGF0dXMsIEV4
Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPEZldGNoUmVzcG9uc2U+IEZldGNoUmVzcG9uc2U6OnJl
ZGlyZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJs
LCBpbnQgc3RhdHVzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICAvLyBGSVhNRTogVGlnaHRl
biB0aGUgVVJMIHBhcnNpbmcgYWxnb3JpdGhtIGFjY29yZGluZyBodHRwczovL3VybC5zcGVjLndo
YXR3Zy5vcmcvI2NvbmNlcHQtdXJsLXBhcnNlci4KLSAgICBVUkwgcmVxdWVzdFVSTCA9IGNvbnRl
eHQtPmNvbXBsZXRlVVJMKHVybCk7CisgICAgVVJMIHJlcXVlc3RVUkwgPSBjb250ZXh0LmNvbXBs
ZXRlVVJMKHVybCk7CiAgICAgaWYgKCFyZXF1ZXN0VVJMLmlzVmFsaWQoKSB8fCAhcmVxdWVzdFVS
TC51c2VyKCkuaXNFbXB0eSgpIHx8ICFyZXF1ZXN0VVJMLnBhc3MoKS5pc0VtcHR5KCkpIHsKICAg
ICAgICAgZWMgPSBUeXBlRXJyb3I7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjUsNyAr
NjUsNyBAQCBSZWZQdHI8RmV0Y2hSZXNwb25zZT4gRmV0Y2hSZXNwb25zZTo6cmVkaXJlY3QoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgYwogICAgICAgICBlYyA9IFR5cGVFcnJvcjsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIFJlZlB0cjxGZXRjaFJlc3BvbnNl
PiByZWRpcmVjdFJlc3BvbnNlID0gYWRvcHRSZWYoKm5ldyBGZXRjaFJlc3BvbnNlKCpjb250ZXh0
LCBUeXBlOjpEZWZhdWx0LCB7IH0sIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6
R3VhcmQ6OkltbXV0YWJsZSksIFJlc291cmNlUmVzcG9uc2UoKSkpOworICAgIFJlZlB0cjxGZXRj
aFJlc3BvbnNlPiByZWRpcmVjdFJlc3BvbnNlID0gYWRvcHRSZWYoKm5ldyBGZXRjaFJlc3BvbnNl
KGNvbnRleHQsIFR5cGU6OkRlZmF1bHQsIHsgfSwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0Y2hI
ZWFkZXJzOjpHdWFyZDo6SW1tdXRhYmxlKSwgUmVzb3VyY2VSZXNwb25zZSgpKSk7CiAgICAgcmVk
aXJlY3RSZXNwb25zZS0+bV9yZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZShzdGF0dXMpOwogICAg
IHJlZGlyZWN0UmVzcG9uc2UtPm1faGVhZGVycy0+ZmFzdFNldChIVFRQSGVhZGVyTmFtZTo6TG9j
YXRpb24sIHJlcXVlc3RVUkwuc3RyaW5nKCkpOwogICAgIHJldHVybiByZWRpcmVjdFJlc3BvbnNl
OwpAQCAtMTE2LDEzICsxMTYsMTMgQEAgRmV0Y2hSZXNwb25zZTo6RmV0Y2hSZXNwb25zZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBUeXBlIHR5cGUsIEZldGNoQm8KIHsKIH0KIAot
UmVmUHRyPEZldGNoUmVzcG9uc2U+IEZldGNoUmVzcG9uc2U6OmNsb25lKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPEZldGNoUmVzcG9u
c2U+IEZldGNoUmVzcG9uc2U6OmNsb25lKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmIChtX2JvZHkuaXNEaXN0dXJiZWQoKSB8fCBt
X2lzTG9ja2VkKSB7CiAgICAgICAgIGVjID0gVHlwZUVycm9yOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9Ci0gICAgUmVmUHRyPEZldGNoUmVzcG9uc2U+IGNsb25lZCA9IGFkb3B0UmVm
KCpuZXcgRmV0Y2hSZXNwb25zZSgqY29udGV4dCwgbV90eXBlLCBGZXRjaEJvZHkobV9ib2R5KSwg
RmV0Y2hIZWFkZXJzOjpjcmVhdGUoaGVhZGVycygpKSwgUmVzb3VyY2VSZXNwb25zZShtX3Jlc3Bv
bnNlKSkpOworICAgIFJlZlB0cjxGZXRjaFJlc3BvbnNlPiBjbG9uZWQgPSBhZG9wdFJlZigqbmV3
IEZldGNoUmVzcG9uc2UoY29udGV4dCwgbV90eXBlLCBGZXRjaEJvZHkobV9ib2R5KSwgRmV0Y2hI
ZWFkZXJzOjpjcmVhdGUoaGVhZGVycygpKSwgUmVzb3VyY2VSZXNwb25zZShtX3Jlc3BvbnNlKSkp
OwogICAgIGNsb25lZC0+bV9pc1JlZGlyZWN0ZWQgPSBtX2lzUmVkaXJlY3RlZDsKICAgICByZXR1
cm4gY2xvbmVkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuaAppbmRleCA3YmQ2MDVjZWU2MmQ3Nzk3NDFmYTYzNmZiYTg5M2M2MTQ2YmJjMzhmLi44YWZj
Y2I0N2JjNGYxYTczNjA3NjJlN2QxMzM1NWU0NDc5NDVmMWZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtNDgsMTAgKzQ4LDEwIEBAIHR5cGVk
ZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiBjbGFzcyBGZXRjaFJlc3BvbnNlIGZpbmFsIDogcHVibGlj
IEZldGNoQm9keU93bmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEZldGNoUmVzcG9uc2U+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IEZldGNoUmVzcG9uc2UoY29udGV4dCwgVHlwZTo6RGVmYXVsdCwgeyB9LCBGZXRjaEhl
YWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRlcnM6Okd1YXJkOjpSZXNwb25zZSksIFJlc291cmNlUmVz
cG9uc2UoKSkpOyB9Ci0gICAgc3RhdGljIFJlZjxGZXRjaFJlc3BvbnNlPiBlcnJvcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0Kik7Ci0gICAgc3RhdGljIFJlZlB0cjxGZXRjaFJlc3BvbnNlPiByZWRp
cmVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiwgaW50LCBFeGNlcHRp
b25Db2RlJik7CisgICAgc3RhdGljIFJlZjxGZXRjaFJlc3BvbnNlPiBlcnJvcihTY3JpcHRFeGVj
dXRpb25Db250ZXh0Jik7CisgICAgc3RhdGljIFJlZlB0cjxGZXRjaFJlc3BvbnNlPiByZWRpcmVj
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiwgaW50LCBFeGNlcHRpb25D
b2RlJik7CiAgICAgLy8gRklYTUU6IEJpbmRpbmcgZ2VuZXJhdG9yIHNob3VsZCBub3QgcmVxdWly
ZSBiZWxvdyBtZXRob2QgdG8gaGFuZGxlIG9wdGlvbmFsIHN0YXR1cyBwYXJhbWV0ZXIuCi0gICAg
c3RhdGljIFJlZlB0cjxGZXRjaFJlc3BvbnNlPiByZWRpcmVjdChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0
dXJuIHJlZGlyZWN0KGNvbnRleHQsIHVybCwgMzAyLCBlYyk7IH0KKyAgICBzdGF0aWMgUmVmUHRy
PEZldGNoUmVzcG9uc2U+IHJlZGlyZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gcmVkaXJlY3Qo
Y29udGV4dCwgdXJsLCAzMDIsIGVjKTsgfQogCiAgICAgdm9pZCBpbml0aWFsaXplV2l0aChjb25z
dCBEaWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYpOwogCkBAIC02Myw3ICs2Myw3IEBAIHB1Ymxp
YzoKICAgICBjb25zdCBTdHJpbmcmIHN0YXR1c1RleHQoKSBjb25zdCB7IHJldHVybiBtX3Jlc3Bv
bnNlLmh0dHBTdGF0dXNUZXh0KCk7IH0KIAogICAgIEZldGNoSGVhZGVycyYgaGVhZGVycygpIHsg
cmV0dXJuIG1faGVhZGVyczsgfQotICAgIFJlZlB0cjxGZXRjaFJlc3BvbnNlPiBjbG9uZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxGZXRjaFJl
c3BvbnNlPiBjbG9uZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRXhjZXB0aW9uQ29kZSYpOwog
CiBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgVHlwZSB7IEJhc2ljLCBDb3JzLCBEZWZhdWx0LCBF
cnJvciwgT3BhcXVlLCBPcGFxdWVSZWRpcmVjdCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJDdXJzb3IuaAppbmRleCBiNTAyY2FmYmQ3NjVhNDA2ZTlkMTk4ZTViZDJi
ZTdlNjE5NWE1MjI1Li4yNGQzYTkzMGRmNDFiYWMyMTNlNjk1YmVmMjM4NTFmMGIzMmUzYzMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaApAQCAtNjcs
MTAgKzY3LDE0IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IHVw
ZGF0ZShKU0M6OkV4ZWNTdGF0ZSYsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgRXhjZXB0aW9u
Q29kZVdpdGhNZXNzYWdlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhZHZhbmNlKHVuc2lnbmVk
IGxvbmcsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpID0gMDsKLSAgICAvLyBGSVhNRTogVHJ5
IHRvIG1vZGlmeSB0aGUgY29kZSBnZW5lcmF0b3Igc28gdGhpcyBvdmVybG9hZCBpcyB1bm5lZWRl
ZC4KKworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IG5lZWQgdGhhdCBtZXRob2QgKHRha2lu
ZyBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgcG9pbnRlciBhbmQgbm90IGEgcmVmZXJlbmNlKQor
ICAgIC8vIGJ1dCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudCB3YW50cyB0byBjYWxsIGl0IHdpdGgg
YSBudWxsIGNvbnRleHQuIAogICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2Fn
ZSYpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBkZWxldGVGdW5jdGlvbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAwOwor
ICAgIC8vIEZJWE1FOiBUcnkgdG8gbW9kaWZ5IHRoZSBjb2RlIGdlbmVyYXRvciBzbyB0aGlzIG92
ZXJsb2FkIGlzIHVubmVlZGVkLgorICAgIHZvaWQgY29udGludWVGdW5jdGlvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKSB7IGNv
bnRpbnVlRnVuY3Rpb24oJmNvbnRleHQsIGVjKTsgfQorICAgIHZpcnR1YWwgdm9pZCBjb250aW51
ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7CisgICAgdmlydHVh
bCBSZWZQdHI8SURCUmVxdWVzdD4gZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBp
c0tleUN1cnNvcigpIGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRmFjdG9yeS5oCmluZGV4IDk5ZDI4ZjQxYmIxNmQ4NDE3ZTliMDQzNjY1YTljNWFm
NzdkYWI5ZGQuLjQ0YTVjYzI5ZjBjMTkzYWY3ZGFkYjVhYmM0ZTI4MDRkMjY1MGQ0NDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmgKQEAgLTUxLDEz
ICs1MSwxMyBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IGdldERhdGFiYXNlTmFtZXMgaXMgbm8g
bG9uZ2VyIGEgd2ViLWZhY2luZyBBUEksIGFuZCBzaG91bGQgYmUgcmVtb3ZlZCBmcm9tIElEQkZh
Y3RvcnkuCiAgICAgLy8gVGhlIFdlYiBJbnNwZWN0b3IgY3VycmVudGx5IHVzZXMgdGhpcyB0byBl
bnVtZXJhdGUgdGhlIGxpc3Qgb2YgZGF0YWJhc2VzLCBidXQgaXMgbW9yZSBjb21wbGljYXRlZCBh
cyBhIHJlc3VsdC4KICAgICAvLyBXZSBzaG91bGQgcHJvdmlkZSBhIHNpbXBsZXIgQVBJIHRvIHRo
ZSBXZWIgSW5zcGVjdG9yIHRoZW4gcmVtb3ZlIGdldERhdGFiYXNlTmFtZXMuCi0gICAgdmlydHVh
bCBSZWZQdHI8SURCUmVxdWVzdD4gZ2V0RGF0YWJhc2VOYW1lcyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0
PiBnZXREYXRhYmFzZU5hbWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBFeGNlcHRpb25Db2Rl
JikgPSAwOwogCi0gICAgdmlydHVhbCBSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gb3BlbihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJikg
PSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IG9wZW4oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgdW5zaWduZWQgbG9uZyBsb25nIHZl
cnNpb24sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8SURCT3BlbkRC
UmVxdWVzdD4gZGVsZXRlRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0
cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJREJP
cGVuREJSZXF1ZXN0PiBvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcm
IG5hbWUsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8SURCT3BlbkRC
UmVxdWVzdD4gb3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiBuYW1l
LCB1bnNpZ25lZCBsb25nIGxvbmcgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKKyAgICB2
aXJ0dWFsIFJlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBkZWxldGVEYXRhYmFzZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJikgPSAwOwog
Ci0gICAgdmlydHVhbCBzaG9ydCBjbXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBmaXJzdCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmIHNlY29uZCwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAwOworICAgIHZpcnR1YWwg
c2hvcnQgY21wKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYgZmlyc3QsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBzZWNvbmQsIEV4
Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIElEQkZhY3Rv
cnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQklu
ZGV4LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCmluZGV4
IDUyNWExNWFhMzM5ZmMzZGVmMmYxZDM3ZDE4M2FjMjQ0MmU3NjgyNmEuLjg1MTBkNGMwYmU4MmNj
ZGViMDVlMjFmYjdjZjE2YjE0ZDZmYmM5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCSW5kZXguaApAQCAtNTQsMjcgKzU0LDI3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgdW5pcXVlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBtdWx0aUVudHJ5
KCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNv
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAw
OwotICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIElEQktleVJhbmdlKiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAw
OwotICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlv
bkNvZGVXaXRoTWVzc2FnZSYpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBv
cGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBJREJLZXlSYW5nZSosIGNvbnN0IFN0
cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7Ci0gICAgdmly
dHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJl
Y3Rpb24sIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpID0gMDsKLQotICAgIHZpcnR1YWwgUmVm
UHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25D
b2RlV2l0aE1lc3NhZ2UmKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gY291
bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIElEQktleVJhbmdlKiwgRXhjZXB0aW9uQ29kZVdp
dGhNZXNzYWdlJikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5
LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIFJlZlB0cjxJ
REJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRp
b25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4g
b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURCS2V5UmFuZ2UqLCBFeGNl
cHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVz
dD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAwOwotICAg
IHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIElEQktleVJhbmdlKiwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlv
bkNvZGVXaXRoTWVzc2FnZSYpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBv
cGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZVdp
dGhNZXNzYWdlJikgPSAwOwotCi0gICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gZ2V0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBJREJLZXlSYW5nZSosIEV4Y2VwdGlvbkNvZGVXaXRoTWVz
c2FnZSYpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBnZXQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2Vw
dGlvbkNvZGVXaXRoTWVzc2FnZSYpID0gMDsKLQotICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVl
c3Q+IGdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRp
b25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4g
Z2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7CisgICAgdmlydHVhbCBS
ZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRXhj
ZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVl
c3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIElEQktleVJhbmdlKiwgRXhj
ZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVl
c3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpID0gMDsKKyAgICB2
aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBJREJLZXlSYW5nZSosIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2Rl
V2l0aE1lc3NhZ2UmKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1
cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2Fn
ZSYpID0gMDsKKworICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7CisgICAgdmly
dHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIElE
QktleVJhbmdlKiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAwOworICAgIHZpcnR1YWwg
UmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9
IDA7CisKKyAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7CisgICAg
dmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7Cisg
ICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9u
Q29kZVdpdGhNZXNzYWdlJikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IG9w
ZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIElEQktleVJhbmdlKiwgY29uc3Qg
U3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpID0gMDsKKyAgICB2
aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcm
IGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAwOworCisgICAgdmlydHVh
bCBSZWZQdHI8SURCUmVxdWVzdD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJLZXlS
YW5nZSosIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxJREJSZXF1ZXN0PiBnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpID0gMDsKKwor
ICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IGdldEtleShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7CisgICAg
dmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gZ2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1l
c3NhZ2UmKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNNb2Rlcm4oKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJLZXlSYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJL
ZXlSYW5nZS5jcHAKaW5kZXggN2U5NjQ4ZjMxM2VhNzA5NWEzZjFjNDBmMzY2ZTU2YWVkOTI1ODJk
MS4uOWUxOTQ1ZGFlNDc0MDk2ZmM1YTE4MzhkOGMyYmFmMTdjYzgwNTNlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmNwcApAQCAtNDksMTUg
KzQ5LDE1IEBAIElEQktleVJhbmdlOjpJREJLZXlSYW5nZShSZWZQdHI8SURCS2V5PiYmIGxvd2Vy
LCBSZWZQdHI8SURCS2V5PiYmIHVwcGVyLCBMb3dlckJvCiB7CiB9CiAKLURlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlIElEQktleVJhbmdlOjpsb3dlclZhbHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpIGNvbnN0CitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBJREJLZXlSYW5nZTo6bG93
ZXJWYWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25zdAogewotICAgIERP
TVJlcXVlc3RTdGF0ZSByZXF1ZXN0U3RhdGUoY29udGV4dCk7CisgICAgRE9NUmVxdWVzdFN0YXRl
IHJlcXVlc3RTdGF0ZSgmY29udGV4dCk7CiAgICAgcmV0dXJuIGlkYktleVRvU2NyaXB0VmFsdWUo
JnJlcXVlc3RTdGF0ZSwgbV9sb3dlcik7CiB9CiAKLURlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIElE
QktleVJhbmdlOjp1cHBlclZhbHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIGNv
bnN0CitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBJREJLZXlSYW5nZTo6dXBwZXJWYWx1ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25zdAogewotICAgIERPTVJlcXVlc3RTdGF0
ZSByZXF1ZXN0U3RhdGUoY29udGV4dCk7CisgICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0
ZSgmY29udGV4dCk7CiAgICAgcmV0dXJuIGlkYktleVRvU2NyaXB0VmFsdWUoJnJlcXVlc3RTdGF0
ZSwgbV91cHBlcik7CiB9CiAKQEAgLTcxLDkgKzcxLDkgQEAgUmVmUHRyPElEQktleVJhbmdlPiBJ
REJLZXlSYW5nZTo6b25seShSZWZQdHI8SURCS2V5PiYmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiAgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGtleSkpOwogfQogCi1SZWZQdHI8SURCS2V5UmFu
Z2U+IElEQktleVJhbmdlOjpvbmx5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXlWYWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMp
CitSZWZQdHI8SURCS2V5UmFuZ2U+IElEQktleVJhbmdlOjpvbmx5KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXlWYWx1ZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0ZShj
b250ZXh0KTsKKyAgICBET01SZXF1ZXN0U3RhdGUgcmVxdWVzdFN0YXRlKCZjb250ZXh0KTsKICAg
ICBSZWZQdHI8SURCS2V5PiBrZXkgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KCZyZXF1ZXN0U3RhdGUs
IGtleVZhbHVlKTsKICAgICBpZiAoIWtleSB8fCAha2V5LT5pc1ZhbGlkKCkpIHsKICAgICAgICAg
ZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6RGF0YUVycm9yOwpAQCAtODMsOSArODMsOSBAQCBS
ZWZQdHI8SURCS2V5UmFuZ2U+IElEQktleVJhbmdlOjpvbmx5KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IERlcAogICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShrZXkpKTsK
IH0KIAotUmVmUHRyPElEQktleVJhbmdlPiBJREJLZXlSYW5nZTo6bG93ZXJCb3VuZChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
Ym91bmRWYWx1ZSwgYm9vbCBvcGVuLCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZlB0cjxJREJLZXlS
YW5nZT4gSURCS2V5UmFuZ2U6Omxvd2VyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGJvdW5kVmFsdWUsIGJvb2wgb3Bl
biwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0
ZShjb250ZXh0KTsKKyAgICBET01SZXF1ZXN0U3RhdGUgcmVxdWVzdFN0YXRlKCZjb250ZXh0KTsK
ICAgICBSZWZQdHI8SURCS2V5PiBib3VuZCA9IHNjcmlwdFZhbHVlVG9JREJLZXkoJnJlcXVlc3RT
dGF0ZSwgYm91bmRWYWx1ZSk7CiAgICAgaWYgKCFib3VuZCB8fCAhYm91bmQtPmlzVmFsaWQoKSkg
ewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEYXRhRXJyb3I7CkBAIC05NSw5
ICs5NSw5IEBAIFJlZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6Omxvd2VyQm91bmQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uCiAgICAgcmV0dXJuIElEQktleVJhbmdl
OjpjcmVhdGUoV1RGTW92ZShib3VuZCksIG51bGxwdHIsIG9wZW4gPyBMb3dlckJvdW5kT3BlbiA6
IExvd2VyQm91bmRDbG9zZWQsIFVwcGVyQm91bmRPcGVuKTsKIH0KIAotUmVmUHRyPElEQktleVJh
bmdlPiBJREJLZXlSYW5nZTo6dXBwZXJCb3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgYm91bmRWYWx1ZSwgYm9vbCBvcGVu
LCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6OnVw
cGVyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmIGJvdW5kVmFsdWUsIGJvb2wgb3BlbiwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7Ci0gICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0ZShjb250ZXh0KTsKKyAgICBET01S
ZXF1ZXN0U3RhdGUgcmVxdWVzdFN0YXRlKCZjb250ZXh0KTsKICAgICBSZWZQdHI8SURCS2V5PiBi
b3VuZCA9IHNjcmlwdFZhbHVlVG9JREJLZXkoJnJlcXVlc3RTdGF0ZSwgYm91bmRWYWx1ZSk7CiAg
ICAgaWYgKCFib3VuZCB8fCAhYm91bmQtPmlzVmFsaWQoKSkgewogICAgICAgICBlYyA9IElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpEYXRhRXJyb3I7CkBAIC0xMDcsOSArMTA3LDkgQEAgUmVmUHRyPElE
QktleVJhbmdlPiBJREJLZXlSYW5nZTo6dXBwZXJCb3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb24KICAgICByZXR1cm4gSURCS2V5UmFuZ2U6OmNyZWF0ZShudWxscHRyLCBX
VEZNb3ZlKGJvdW5kKSwgTG93ZXJCb3VuZE9wZW4sIG9wZW4gPyBVcHBlckJvdW5kT3BlbiA6IFVw
cGVyQm91bmRDbG9zZWQpOwogfQogCi1SZWZQdHI8SURCS2V5UmFuZ2U+IElEQktleVJhbmdlOjpi
b3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYgbG93ZXJWYWx1ZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHVw
cGVyVmFsdWUsIGJvb2wgbG93ZXJPcGVuLCBib29sIHVwcGVyT3BlbiwgRXhjZXB0aW9uQ29kZSYg
ZWMpCitSZWZQdHI8SURCS2V5UmFuZ2U+IElEQktleVJhbmdlOjpib3VuZChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgbG93ZXJW
YWx1ZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHVwcGVyVmFsdWUsIGJvb2wgbG93
ZXJPcGVuLCBib29sIHVwcGVyT3BlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgRE9NUmVx
dWVzdFN0YXRlIHJlcXVlc3RTdGF0ZShjb250ZXh0KTsKKyAgICBET01SZXF1ZXN0U3RhdGUgcmVx
dWVzdFN0YXRlKCZjb250ZXh0KTsKICAgICBSZWZQdHI8SURCS2V5PiBsb3dlciA9IHNjcmlwdFZh
bHVlVG9JREJLZXkoJnJlcXVlc3RTdGF0ZSwgbG93ZXJWYWx1ZSk7CiAgICAgUmVmUHRyPElEQktl
eT4gdXBwZXIgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KCZyZXF1ZXN0U3RhdGUsIHVwcGVyVmFsdWUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlS
YW5nZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaApp
bmRleCA1OWQyMzAzM2UzY2U2YzllNTlhYmU3YzcyMjgxNWRkMGMyYTY3MjY1Li4xYmRhN2Y3NDVl
MjQ4NWNlNTk2NTJjNmI4MWQxOTUzM2I5ZDA1MTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmgKQEAgLTU4LDIzICs1OCwyMyBAQCBwdWJsaWM6
CiAgICAgSURCS2V5KiBsb3dlcigpIGNvbnN0IHsgcmV0dXJuIG1fbG93ZXIuZ2V0KCk7IH0KICAg
ICBJREJLZXkqIHVwcGVyKCkgY29uc3QgeyByZXR1cm4gbV91cHBlci5nZXQoKTsgfQogCi0gICAg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgbG93ZXJWYWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KikgY29uc3Q7Ci0gICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgdXBwZXJWYWx1ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KikgY29uc3Q7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgbG93
ZXJWYWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgY29uc3Q7CisgICAgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUgdXBwZXJWYWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgY29uc3Q7CiAg
ICAgYm9vbCBsb3dlck9wZW4oKSBjb25zdCB7IHJldHVybiBtX2xvd2VyVHlwZSA9PSBMb3dlckJv
dW5kT3BlbjsgfQogICAgIGJvb2wgdXBwZXJPcGVuKCkgY29uc3QgeyByZXR1cm4gbV91cHBlclR5
cGUgPT0gVXBwZXJCb3VuZE9wZW47IH0KIAogICAgIHN0YXRpYyBSZWZQdHI8SURCS2V5UmFuZ2U+
IG9ubHkoUmVmUHRyPElEQktleT4mJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHN0YXRp
YyBSZWZQdHI8SURCS2V5UmFuZ2U+IG9ubHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0
aWMgUmVmUHRyPElEQktleVJhbmdlPiBvbmx5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBz
dGF0aWMgUmVmUHRyPElEQktleVJhbmdlPiBsb3dlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBib3VuZCwgRXhjZXB0
aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGxvd2VyQm91bmQoY29udGV4dCwgYm91bmQsIGZhbHNlLCBl
Yyk7IH0KLSAgICBzdGF0aWMgUmVmUHRyPElEQktleVJhbmdlPiBsb3dlckJvdW5kKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgYm91bmQsIGJv
b2wgb3BlbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBSZWZQdHI8SURCS2V5UmFuZ2U+
IGxvd2VyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIGJvdW5kLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gbG93
ZXJCb3VuZChjb250ZXh0LCBib3VuZCwgZmFsc2UsIGVjKTsgfQorICAgIHN0YXRpYyBSZWZQdHI8
SURCS2V5UmFuZ2U+IGxvd2VyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBib3VuZCwgYm9vbCBvcGVuLCBFeGNlcHRpb25Db2RlJik7
CiAKLSAgICBzdGF0aWMgUmVmUHRyPElEQktleVJhbmdlPiB1cHBlckJvdW5kKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBib3Vu
ZCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIHVwcGVyQm91bmQoY29udGV4dCwgYm91bmQs
IGZhbHNlLCBlYyk7IH0KLSAgICBzdGF0aWMgUmVmUHRyPElEQktleVJhbmdlPiB1cHBlckJvdW5k
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
Ym91bmQsIGJvb2wgb3BlbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBSZWZQdHI8SURC
S2V5UmFuZ2U+IHVwcGVyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGJvdW5kLCBFeGNlcHRpb25Db2RlJiBlYykgeyBy
ZXR1cm4gdXBwZXJCb3VuZChjb250ZXh0LCBib3VuZCwgZmFsc2UsIGVjKTsgfQorICAgIHN0YXRp
YyBSZWZQdHI8SURCS2V5UmFuZ2U+IHVwcGVyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBib3VuZCwgYm9vbCBvcGVuLCBFeGNlcHRp
b25Db2RlJik7CiAKLSAgICBzdGF0aWMgUmVmUHRyPElEQktleVJhbmdlPiBib3VuZChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
bG93ZXIsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB1cHBlciwgRXhjZXB0aW9uQ29k
ZSYgZWMpIHsgcmV0dXJuIGJvdW5kKGNvbnRleHQsIGxvd2VyLCB1cHBlciwgZmFsc2UsIGZhbHNl
LCBlYyk7IH0KLSAgICBzdGF0aWMgUmVmUHRyPElEQktleVJhbmdlPiBib3VuZChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgbG93
ZXIsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB1cHBlciwgYm9vbCBsb3dlck9wZW4s
IEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBib3VuZChjb250ZXh0LCBsb3dlciwgdXBwZXIs
IGxvd2VyT3BlbiwgZmFsc2UsIGVjKTsgfQotICAgIHN0YXRpYyBSZWZQdHI8SURCS2V5UmFuZ2U+
IGJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYgbG93ZXIsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB1cHBlciwgYm9vbCBs
b3dlck9wZW4sIGJvb2wgdXBwZXJPcGVuLCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIFJl
ZlB0cjxJREJLZXlSYW5nZT4gYm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGxvd2VyLCBjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYgdXBwZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBib3VuZChjb250
ZXh0LCBsb3dlciwgdXBwZXIsIGZhbHNlLCBmYWxzZSwgZWMpOyB9CisgICAgc3RhdGljIFJlZlB0
cjxJREJLZXlSYW5nZT4gYm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGxvd2VyLCBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYgdXBwZXIsIGJvb2wgbG93ZXJPcGVuLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1
cm4gYm91bmQoY29udGV4dCwgbG93ZXIsIHVwcGVyLCBsb3dlck9wZW4sIGZhbHNlLCBlYyk7IH0K
KyAgICBzdGF0aWMgUmVmUHRyPElEQktleVJhbmdlPiBib3VuZChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGxvd2VyLCBjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYgdXBwZXIsIGJvb2wgbG93ZXJPcGVuLCBib29sIHVwcGVyT3Blbiwg
RXhjZXB0aW9uQ29kZSYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc09ubHlLZXkoKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlLmgKaW5kZXggMmM0YjRlMGRiYmNiYWQ3ZDk0NzAzN2UyYmIxYzQ2ZTQ1OTZmYzc4ZC4u
MDNkZWQ0MmMxNDBmOWMwOTkzMGM2YjVhYjI0ZmYwY2M5NzQ2OGQ2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCkBAIC02OSwyOCAr
NjksMjggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gYWRkKEpT
Qzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9
IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gcHV0KEpTQzo6RXhlY1N0YXRlJiwg
SlNDOjpKU1ZhbHVlLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7Ci0gICAgdmlydHVh
bCBSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
RXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPElEQlJl
cXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIElEQktleVJhbmdlKiwg
RXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPElEQlJl
cXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpID0gMDsKLSAg
ICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBJREJLZXlSYW5nZSosIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25D
b2RlV2l0aE1lc3NhZ2UmKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gb3Bl
bkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGVXaXRoTWVz
c2FnZSYpID0gMDsKLQotICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IGdldChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhj
ZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVl
c3Q+IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRpb25D
b2RlV2l0aE1lc3NhZ2UmKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gb3Bl
bkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdl
JikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIElEQktleVJhbmdlKiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdl
JikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4
Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1
ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJLZXlSYW5nZSosIGNv
bnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7Cisg
ICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5n
JiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpID0gMDsKKworICAgIHZpcnR1
YWwgUmVmUHRyPElEQlJlcXVlc3Q+IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikg
PSAwOworICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IGdldChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7CiAg
ICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gYWRkKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpK
U1ZhbHVlLCBKU0M6OkpTVmFsdWUga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7
CiAgICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gcHV0KEpTQzo6RXhlY1N0YXRlJiwgSlND
OjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWUga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9
IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gZGVsZXRlRnVuY3Rpb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIElEQktleVJhbmdlKiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdl
JikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IGRlbGV0ZUZ1bmN0aW9uKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5
LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8SURC
UmVxdWVzdD4gY2xlYXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGVXaXRo
TWVzc2FnZSYpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBkZWxldGVGdW5j
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRpb25Db2Rl
V2l0aE1lc3NhZ2UmKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gZGVsZXRl
RnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpID0gMDsKKyAgICB2aXJ0dWFs
IFJlZlB0cjxJREJSZXF1ZXN0PiBjbGVhcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRXhjZXB0
aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAwOwogCi0gICAgdmlydHVhbCBSZWZQdHI8SURCSW5kZXg+
IGNyZWF0ZUluZGV4KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IElEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBFeGNlcHRp
b25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8SURCSW5kZXg+IGNy
ZWF0ZUluZGV4KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IElEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBFeGNlcHRpb25D
b2RlV2l0aE1lc3NhZ2UmKSA9IDA7CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxJREJJbmRleD4gaW5k
ZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9u
Q29kZVdpdGhNZXNzYWdlJikgPSAwOwogCi0gICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4g
Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYp
ID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7
Ci0gICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGVX
aXRoTWVzc2FnZSYpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAwOwor
ICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBJREJLZXlSYW5nZSosIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpID0gMDsKKyAgICB2
aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
Y29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNz
YWdlJikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGlzTW9kZXJuKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCT3BlbkRCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPcGVuREJSZXF1ZXN0LmNwcAppbmRleCBhZGY4YTY4N2YyZjU3NmM0MjNjZDE1NjVlODI2MGU5
ZmRkOWRjMjVkLi44MmNlMTc5NmI4ODlmZGI4YTM3OTExZjhmOTRkMGVmZmY2MmU3NDc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1
ZXN0LmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUlEQk9w
ZW5EQlJlcXVlc3Q6OklEQk9wZW5EQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCkKK0lEQk9wZW5EQlJlcXVlc3Q6OklEQk9wZW5EQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkKICAgICA6IElEQlJlcXVlc3QoY29udGV4dCkKIHsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaApp
bmRleCBhMTAxNTZiNjMxZjIzMzE3MzljNTViZWM4N2M3MThkOTI4NmExNmE5Li4wMGFkZGMwMWRi
MWVmMDk2MWY4ZjYzNzAzNDc1NTM2NDExNzkzZDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oCkBAIC0zOCw3ICszOCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJPcGVuREJSZXF1ZXN0KCkgeyB9CiAKIHByb3RlY3Rl
ZDoKLSAgICBJREJPcGVuREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBJ
REJPcGVuREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
UmVxdWVzdC5jcHAKaW5kZXggYzZhOGIxZTEwNWYxMWE3OWZiMmVkMjEyNjE5NzY4YWVkMzQ3Y2I4
NS4uMDEyZjM2OTEyZjUzN2M2MjNlMWJkOTIyZGU2NmNkYzRiMzM3NDc4MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKQEAgLTMwLDggKzMw
LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JREJSZXF1ZXN0OjpJREJSZXF1ZXN0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgOiBBY3RpdmVET01PYmplY3QoY29u
dGV4dCkKK0lEQlJlcXVlc3Q6OklEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkKKyAgICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCmluZGV4IDlkNzA1NmVkYzRh
MjU0MjgzM2RlMjYzZjM4NzdjODE0MmYxOTc1NTcuLjVhZmJmNjFjZWUxMGZhMWM1OTNmMGQ0YmMx
MTJkMDM4Yzc0ZDkyMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJSZXF1ZXN0LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgY29uc3Qg
U3RyaW5nJiByZWFkeVN0YXRlKCkgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6Ci0gICAgSURCUmVx
dWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgSURCUmVxdWVzdChTY3JpcHRFeGVj
dXRpb25Db250ZXh0Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ3Vyc29ySW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ3Vyc29ySW1w
bC5jcHAKaW5kZXggODY3OWE2MjIxYWM5NjlhNDAyZTdkMjQyZjgwMzFkOTEyM2VlMDIxMC4uNWM1
ZTRkNjJiM2E2NWEyNmZhNWU4NjdjMTUzMGQxMDY5Nzc5ODVmNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkN1cnNvckltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDdXJzb3JJbXBsLmNw
cApAQCAtMjIwLDE0ICsyMjAsOSBAQCB2b2lkIElEQkN1cnNvcjo6Y29udGludWVGdW5jdGlvbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlVwogICAgIGNvbnRp
bnVlRnVuY3Rpb24oSURCS2V5RGF0YSgpLCBlYyk7CiB9CiAKLXZvaWQgSURCQ3Vyc29yOjpjb250
aW51ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXlWYWx1ZSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBl
YykKK3ZvaWQgSURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXlWYWx1ZSwgRXhj
ZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKIHsKLSAgICBpZiAoIWNvbnRleHQpIHsKLSAgICAg
ICAgZWMuY29kZSA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIERPTVJlcXVlc3RTdGF0ZSByZXF1ZXN0U3RhdGUo
Y29udGV4dCk7CisgICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0ZSgmY29udGV4dCk7CiAg
ICAgUmVmUHRyPElEQktleT4ga2V5OwogICAgIGlmICgha2V5VmFsdWUuanNWYWx1ZSgpLmlzVW5k
ZWZpbmVkKCkpCiAgICAgICAgIGtleSA9IHNjcmlwdFZhbHVlVG9JREJLZXkoJnJlcXVlc3RTdGF0
ZSwga2V5VmFsdWUpOwpAQCAtMjkzLDE1ICsyODgsMTAgQEAgdm9pZCBJREJDdXJzb3I6OnVuY2hl
Y2tlZEl0ZXJhdGVDdXJzb3IoY29uc3QgSURCS2V5RGF0YSYga2V5LCB1bnNpZ25lZCBsb25nIGNv
dW4KICAgICB0cmFuc2FjdGlvbigpLml0ZXJhdGVDdXJzb3IoKnRoaXMsIGtleSwgY291bnQpOwog
fQogCi1SZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCQ3Vyc29yOjpkZWxldGVGdW5jdGlv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlV2l0aE1lc3Nh
Z2UmIGVjKQorUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQkN1cnNvcjo6ZGVsZXRlRnVu
Y3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRXhjZXB0aW9uQ29kZVdpdGhN
ZXNzYWdlJiBlYykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCQ3Vyc29yOjpkZWxldGVGdW5j
dGlvbiIpOwogCi0gICAgaWYgKCFjb250ZXh0KSB7Ci0gICAgICAgIGVjLmNvZGUgPSBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7Ci0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIH0KLQogICAgIGlmIChzb3VyY2VzRGVsZXRlZCgpKSB7CiAgICAgICAgIGVjLmNvZGUg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7CiAgICAgICAgIGVjLm1l
c3NhZ2UgPSBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBleGVjdXRlICdkZWxldGUnIG9uICdJREJD
dXJzb3InOiBUaGUgY3Vyc29yJ3Mgc291cmNlIG9yIGVmZmVjdGl2ZSBvYmplY3Qgc3RvcmUgaGFz
IGJlZW4gZGVsZXRlZC4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJDdXJzb3JJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCQ3Vyc29ySW1wbC5oCmluZGV4IGJkNWE3YjZlYTFmY2VlZjgwOThm
OTYxOTQ3Njg3M2ZlYWQ2YWQ1MzEuLmQzNWM5MTUzMDM3MTU4Y2QzZTExMGU1YTVlMzZiNjY0MmQ5
NDRlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVu
dC9JREJDdXJzb3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
Y2xpZW50L0lEQkN1cnNvckltcGwuaApAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6CiAgICAgUmVm
UHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IHVwZGF0ZShKU0M6OkV4ZWNTdGF0ZSYsIERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlJiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgZmluYWw7CiAgICAg
dm9pZCBhZHZhbmNlKHVuc2lnbmVkIGxvbmcsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIGZp
bmFsOwogICAgIHZvaWQgY29udGludWVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
RXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgZmluYWw7Ci0gICAgdm9pZCBjb250aW51ZUZ1bmN0
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6SURCUmVxdWVzdD4gZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIGZpbmFsOworICAgIHZvaWQgY29udGludWVGdW5j
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgZmluYWw7CisgICAgUmVmUHRyPFdl
YkNvcmU6OklEQlJlcXVlc3Q+IGRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsKIAogICAgIHZvaWQgY29udGludWVG
dW5jdGlvbihjb25zdCBJREJLZXlEYXRhJiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJG
YWN0b3J5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCRmFjdG9yeUltcGwuY3BwCmluZGV4IDNkYjI0ZDY2NmQ5YzE5YjYwNWE2NjY2Nzg1YzVhZDhm
MzI0ZTZkNTUuLjUzYmUyMmRiYzBmOGU2MjA0OTQzZTYwN2ZkNmY5M2FiZTY0OTU1NjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJGYWN0b3J5
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lE
QkZhY3RvcnlJbXBsLmNwcApAQCAtNDMsMTggKzQzLDE4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBuYW1lc3BhY2UgSURCQ2xpZW50IHsKIAotc3RhdGljIGJvb2wgc2hvdWxkVGhyb3dTZWN1cml0
eUV4Y2VwdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorc3RhdGljIGJvb2wg
c2hvdWxkVGhyb3dTZWN1cml0eUV4Y2VwdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KQogewotICAgIEFTU0VSVChpczxEb2N1bWVudD4oKmNvbnRleHQpIHx8IGNvbnRleHQtPmlz
V29ya2VyR2xvYmFsU2NvcGUoKSk7Ci0gICAgaWYgKGlzPERvY3VtZW50PigqY29udGV4dCkpIHsK
LSAgICAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0
KTsKKyAgICBBU1NFUlQoaXM8RG9jdW1lbnQ+KGNvbnRleHQpIHx8IGNvbnRleHQuaXNXb3JrZXJH
bG9iYWxTY29wZSgpKTsKKyAgICBpZiAoaXM8RG9jdW1lbnQ+KGNvbnRleHQpKSB7CisgICAgICAg
IERvY3VtZW50JiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KTsKICAgICAg
ICAgaWYgKCFkb2N1bWVudC5mcmFtZSgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIGlmICghZG9jdW1lbnQucGFnZSgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCi0gICAgaWYgKCFjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NEYXRhYmFz
ZShjb250ZXh0LT50b3BPcmlnaW4oKSkpCisgICAgaWYgKCFjb250ZXh0LnNlY3VyaXR5T3JpZ2lu
KCktPmNhbkFjY2Vzc0RhdGFiYXNlKGNvbnRleHQudG9wT3JpZ2luKCkpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTcwLDE5ICs3MCwxOSBAQCBJREJGYWN0
b3J5OjpJREJGYWN0b3J5KElEQkNvbm5lY3Rpb25Ub1NlcnZlciYgY29ubmVjdGlvbikKIHsKIH0K
IAotUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQkZhY3Rvcnk6OmdldERhdGFiYXNlTmFt
ZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKQorUmVmUHRyPFdlYkNv
cmU6OklEQlJlcXVlc3Q+IElEQkZhY3Rvcnk6OmdldERhdGFiYXNlTmFtZXMoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIHJldHVybiBudWxscHRyOwogfQog
Ci1SZWZQdHI8V2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdD4gSURCRmFjdG9yeTo6b3BlbihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQorUmVmUHRyPFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q+IElEQkZhY3Rvcnk6
Om9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRmFjdG9yeTo6
b3BlbiIpOwogICAgIAogICAgIHJldHVybiBvcGVuSW50ZXJuYWwoY29udGV4dCwgbmFtZSwgMCwg
ZWMpLnJlbGVhc2UoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q+IElE
QkZhY3Rvcnk6Om9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCB1bnNpZ25lZCBsb25nIGxvbmcgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYgZWMp
CitSZWZQdHI8V2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdD4gSURCRmFjdG9yeTo6b3BlbihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIHVuc2lnbmVk
IGxvbmcgbG9uZyB2ZXJzaW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coSW5kZXhl
ZERCLCAiSURCRmFjdG9yeTo6b3BlbiIpOwogICAgIApAQCAtOTQsNyArOTQsNyBAQCBSZWZQdHI8
V2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdD4gSURCRmFjdG9yeTo6b3BlbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZQogICAgIHJldHVybiBvcGVuSW50ZXJuYWwoY29udGV4dCwgbmFtZSwg
dmVyc2lvbiwgZWMpLnJlbGVhc2UoKTsKIH0KIAotUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IElE
QkZhY3Rvcnk6Om9wZW5JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIGxvbmcgbG9uZyB2ZXJzaW9uLCBFeGNlcHRpb25D
b2RlJiBlYykKK1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJGYWN0b3J5OjpvcGVuSW50ZXJu
YWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCB1
bnNpZ25lZCBsb25nIGxvbmcgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYg
KG5hbWUuaXNOdWxsKCkpIHsKICAgICAgICAgZWMgPSBUeXBlRXJyb3I7CkBAIC0xMDYsOSArMTA2
LDkgQEAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IElEQkZhY3Rvcnk6Om9wZW5JbnRlcm5hbChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXgKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCi0gICAgQVNTRVJUKGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkpOwotICAgIEFTU0VS
VChjb250ZXh0LT50b3BPcmlnaW4oKSk7Ci0gICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIGRhdGFi
YXNlSWRlbnRpZmllcihuYW1lLCAqY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgKmNvbnRleHQt
PnRvcE9yaWdpbigpKTsKKyAgICBBU1NFUlQoY29udGV4dC5zZWN1cml0eU9yaWdpbigpKTsKKyAg
ICBBU1NFUlQoY29udGV4dC50b3BPcmlnaW4oKSk7CisgICAgSURCRGF0YWJhc2VJZGVudGlmaWVy
IGRhdGFiYXNlSWRlbnRpZmllcihuYW1lLCAqY29udGV4dC5zZWN1cml0eU9yaWdpbigpLCAqY29u
dGV4dC50b3BPcmlnaW4oKSk7CiAgICAgaWYgKCFkYXRhYmFzZUlkZW50aWZpZXIuaXNWYWxpZCgp
KSB7CiAgICAgICAgIGVjID0gVHlwZUVycm9yOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTEyMCw3ICsxMjAsNyBAQCBSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURCRmFjdG9yeTo6b3Bl
bkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleAogICAgIHJldHVybiBhZG9w
dFJlZigmcmVxdWVzdC5sZWFrUmVmKCkpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6SURCT3BlbkRC
UmVxdWVzdD4gSURCRmFjdG9yeTo6ZGVsZXRlRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZlB0
cjxXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0PiBJREJGYWN0b3J5OjpkZWxldGVEYXRhYmFzZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJGYWN0b3J5OjpkZWxldGVE
YXRhYmFzZSAtICVzIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIApAQCAtMTM0LDkgKzEzNCw5IEBA
IFJlZlB0cjxXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0PiBJREJGYWN0b3J5OjpkZWxldGVEYXRh
YmFzZShTY3JpcHRFeGVjdXRpb25Db250CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
IAotICAgIEFTU0VSVChjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpKTsKLSAgICBBU1NFUlQoY29u
dGV4dC0+dG9wT3JpZ2luKCkpOwotICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBkYXRhYmFzZUlk
ZW50aWZpZXIobmFtZSwgKmNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksICpjb250ZXh0LT50b3BP
cmlnaW4oKSk7CisgICAgQVNTRVJUKGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSk7CisgICAgQVNT
RVJUKGNvbnRleHQudG9wT3JpZ2luKCkpOworICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBkYXRh
YmFzZUlkZW50aWZpZXIobmFtZSwgKmNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSwgKmNvbnRleHQu
dG9wT3JpZ2luKCkpOwogICAgIGlmICghZGF0YWJhc2VJZGVudGlmaWVyLmlzVmFsaWQoKSkgewog
ICAgICAgICBlYyA9IFR5cGVFcnJvcjsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNDgs
OSArMTQ4LDkgQEAgUmVmUHRyPFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q+IElEQkZhY3Rvcnk6
OmRlbGV0ZURhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnQKICAgICByZXR1cm4gYWRvcHRSZWYo
JnJlcXVlc3QubGVha1JlZigpKTsKIH0KIAotc2hvcnQgSURCRmFjdG9yeTo6Y21wKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBm
aXJzdFZhbHVlLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgc2Vjb25kVmFsdWUsIEV4
Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCitzaG9ydCBJREJGYWN0b3J5OjpjbXAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IGZpcnN0VmFsdWUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBzZWNvbmRWYWx1ZSwg
RXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKIHsKLSAgICBET01SZXF1ZXN0U3RhdGUgcmVx
dWVzdFN0YXRlKGNvbnRleHQpOworICAgIERPTVJlcXVlc3RTdGF0ZSByZXF1ZXN0U3RhdGUoJmNv
bnRleHQpOwogICAgIFJlZlB0cjxJREJLZXk+IGZpcnN0ID0gc2NyaXB0VmFsdWVUb0lEQktleSgm
cmVxdWVzdFN0YXRlLCBmaXJzdFZhbHVlKTsKICAgICBSZWZQdHI8SURCS2V5PiBzZWNvbmQgPSBz
Y3JpcHRWYWx1ZVRvSURCS2V5KCZyZXF1ZXN0U3RhdGUsIHNlY29uZFZhbHVlKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkZhY3RvcnlJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCRmFjdG9y
eUltcGwuaAppbmRleCA4ZmM4MmVkOWU3ZWI4ZGQ3Y2YzZDcwYTIwZWQ3ZmQ1M2JjYTZiYzVhLi44
NDA3NDIxYjViOGJhMGU4ODNjMGViN2RhMjI3ODg4NjhkZGZhMGIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCRmFjdG9yeUltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCRmFjdG9yeUltcGwu
aApAQCAtNDAsMTggKzQwLDE4IEBAIGNsYXNzIElEQkZhY3RvcnkgOiBwdWJsaWMgV2ViQ29yZTo6
SURCRmFjdG9yeSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxJREJGYWN0b3J5PiBjcmVhdGUo
SURCQ29ubmVjdGlvblRvU2VydmVyJik7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVz
dD4gZ2V0RGF0YWJhc2VOYW1lcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29k
ZSYpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBnZXREYXRhYmFzZU5h
bWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBFeGNlcHRpb25Db2RlJikgZmluYWw7CiAKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdD4gb3BlbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJikgZmluYWw7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q+IG9wZW4oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgdW5zaWduZWQgbG9uZyBsb25nIHZlcnNpb24sIEV4
Y2VwdGlvbkNvZGUmKSBmaW5hbDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6SURCT3BlbkRCUmVxdWVz
dD4gZGVsZXRlRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYg
bmFtZSwgRXhjZXB0aW9uQ29kZSYpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJREJPcGVu
REJSZXF1ZXN0PiBvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIG5h
bWUsIEV4Y2VwdGlvbkNvZGUmKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SURCT3BlbkRC
UmVxdWVzdD4gb3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiBuYW1l
LCB1bnNpZ25lZCBsb25nIGxvbmcgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYpIGZpbmFsOworICAg
IFJlZlB0cjxXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0PiBkZWxldGVEYXRhYmFzZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJikgZmlu
YWw7CiAKLSAgICBzaG9ydCBjbXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiBmaXJzdCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IHNlY29uZCwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgZmluYWw7CisgICAgc2hvcnQgY21w
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
Zmlyc3QsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBzZWNvbmQsIEV4Y2VwdGlvbkNv
ZGVXaXRoTWVzc2FnZSYpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIElEQkZhY3RvcnkoSURCQ29u
bmVjdGlvblRvU2VydmVyJik7CiAgICAgCi0gICAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IG9w
ZW5JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCB1
bnNpZ25lZCBsb25nIGxvbmcgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxJ
REJPcGVuREJSZXF1ZXN0PiBvcGVuSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNv
bnN0IFN0cmluZyYgbmFtZSwgdW5zaWduZWQgbG9uZyBsb25nIHZlcnNpb24sIEV4Y2VwdGlvbkNv
ZGUmKTsKICAgICAKICAgICBSZWY8SURCQ29ubmVjdGlvblRvU2VydmVyPiBtX2Nvbm5lY3Rpb25U
b1NlcnZlcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvSURCSW5kZXhJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9JREJJbmRleEltcGwuY3BwCmluZGV4IDMxYTU3ZWNhNDhhZjY5YjUyOGVkZmI5
Yjg1NmQwZTVkY2U0ZjMxZmMuLjNmNmU4ZGY0MmE0ZGU0YWQxMmIzYWRjMWZjYTA3ZWMyMGNhMjI5
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9J
REJJbmRleEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2Ns
aWVudC9JREJJbmRleEltcGwuY3BwCkBAIC00MSw4ICs0MSw4IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBuYW1lc3BhY2UgSURCQ2xpZW50IHsKIAotSURCSW5kZXg6OklEQkluZGV4KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbywgSURCT2Jq
ZWN0U3RvcmUmIG9iamVjdFN0b3JlKQotICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCitJ
REJJbmRleDo6SURCSW5kZXgoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
SURCSW5kZXhJbmZvJiBpbmZvLCBJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUpCisgICAgOiBB
Y3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBtX2luZm8oaW5mbykKICAgICAsIG1fb2Jq
ZWN0U3RvcmUob2JqZWN0U3RvcmUpCiB7CkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgSURCSW5kZXg6
Om11bHRpRW50cnkoKSBjb25zdAogICAgIHJldHVybiBtX2luZm8ubXVsdGlFbnRyeSgpOwogfQog
Ci1SZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5DdXJzb3IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgSURCS2V5UmFuZ2UqIHJhbmdlLCBjb25zdCBTdHJp
bmcmIGRpcmVjdGlvblN0cmluZywgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKK1JlZlB0
cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBJREJLZXlSYW5nZSogcmFuZ2UsIGNvbnN0IFN0cmluZyYgZGly
ZWN0aW9uU3RyaW5nLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQogewogICAgIExPRyhJ
bmRleGVkREIsICJJREJJbmRleDo6b3BlbkN1cnNvciIpOwogCkBAIC0xMjcsMTAgKzEyNywxMCBA
QCBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5DdXJzb3IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dAogICAgICAgICByYW5nZURhdGEudXBwZXJLZXkgPSBJ
REJLZXlEYXRhOjptYXhpbXVtKCk7CiAKICAgICBhdXRvIGluZm8gPSBJREJDdXJzb3JJbmZvOjpp
bmRleEN1cnNvcihtX29iamVjdFN0b3JlLm1vZGVyblRyYW5zYWN0aW9uKCksIG1fb2JqZWN0U3Rv
cmUuaW5mbygpLmlkZW50aWZpZXIoKSwgbV9pbmZvLmlkZW50aWZpZXIoKSwgcmFuZ2VEYXRhLCBk
aXJlY3Rpb24sIEluZGV4ZWREQjo6Q3Vyc29yVHlwZTo6S2V5QW5kVmFsdWUpOwotICAgIHJldHVy
biBtX29iamVjdFN0b3JlLm1vZGVyblRyYW5zYWN0aW9uKCkucmVxdWVzdE9wZW5DdXJzb3IoKmNv
bnRleHQsICp0aGlzLCBpbmZvKTsKKyAgICByZXR1cm4gbV9vYmplY3RTdG9yZS5tb2Rlcm5UcmFu
c2FjdGlvbigpLnJlcXVlc3RPcGVuQ3Vyc29yKGNvbnRleHQsICp0aGlzLCBpbmZvKTsKIH0KIAot
UmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBr
ZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVj
KQorUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
JiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2Um
IGVjKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6b3BlbkN1cnNvciIpOwogICAg
IFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25seShjb250ZXh0
LCBrZXksIGVjLmNvZGUpOwpAQCAtMTQyLDQwICsxNDIsMjUgQEAgUmVmUHRyPFdlYkNvcmU6OklE
QlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQKICAgICByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBrZXlSYW5nZS5nZXQoKSwgZGly
ZWN0aW9uLCBlYyk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJJbmRleDo6
Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZVdpdGhN
ZXNzYWdlJiBlYykKK1JlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJJbmRleDo6Y291bnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdl
JiBlYykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCSW5kZXg6OmNvdW50Iik7CiAKLSAgICBp
ZiAoIWNvbnRleHQpIHsKLSAgICAgICAgZWMuY29kZSA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJ
bnZhbGlkU3RhdGVFcnJvcjsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAg
cmV0dXJuIGRvQ291bnQoKmNvbnRleHQsIElEQktleVJhbmdlRGF0YTo6YWxsS2V5cygpLCBlYyk7
CisgICAgcmV0dXJuIGRvQ291bnQoY29udGV4dCwgSURCS2V5UmFuZ2VEYXRhOjphbGxLZXlzKCks
IGVjKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQkluZGV4Ojpjb3VudChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBJREJLZXlSYW5nZSogcmFuZ2UsIEV4Y2Vw
dGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCitSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURC
SW5kZXg6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIElEQktleVJhbmdl
KiByYW5nZSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKIHsKICAgICBMT0coSW5kZXhl
ZERCLCAiSURCSW5kZXg6OmNvdW50Iik7CiAKLSAgICBpZiAoIWNvbnRleHQpIHsKLSAgICAgICAg
ZWMuY29kZSA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgcmV0dXJuIGRvQ291bnQoKmNvbnRleHQs
IHJhbmdlID8gSURCS2V5UmFuZ2VEYXRhKHJhbmdlKSA6IElEQktleVJhbmdlRGF0YTo6YWxsS2V5
cygpLCBlYyk7CisgICAgcmV0dXJuIGRvQ291bnQoY29udGV4dCwgcmFuZ2UgPyBJREJLZXlSYW5n
ZURhdGEocmFuZ2UpIDogSURCS2V5UmFuZ2VEYXRhOjphbGxLZXlzKCksIGVjKTsKIH0KIAotUmVm
UHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQkluZGV4Ojpjb3VudChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNl
cHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQorUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElE
QkluZGV4Ojpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6Y291bnQiKTsKIAotICAgIGlmICghY29u
dGV4dCkgewotICAgICAgICBlYy5jb2RlID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRT
dGF0ZUVycm9yOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBET01SZXF1
ZXN0U3RhdGUgcmVxdWVzdFN0YXRlKGNvbnRleHQpOworICAgIERPTVJlcXVlc3RTdGF0ZSByZXF1
ZXN0U3RhdGUoJmNvbnRleHQpOwogICAgIFJlZlB0cjxJREJLZXk+IGlkYktleSA9IHNjcmlwdFZh
bHVlVG9JREJLZXkoJnJlcXVlc3RTdGF0ZSwga2V5KTsKICAgICBpZiAoIWlkYktleSB8fCBpZGJL
ZXktPnR5cGUoKSA9PSBLZXlUeXBlOjpJbnZhbGlkKSB7CiAgICAgICAgIGVjLmNvZGUgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6RGF0YUVycm9yOwpAQCAtMTgzLDcgKzE2OCw3IEBAIFJlZlB0cjxX
ZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJJbmRleDo6Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgY29uCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJl
dHVybiBkb0NvdW50KCpjb250ZXh0LCBJREJLZXlSYW5nZURhdGEoaWRiS2V5LmdldCgpKSwgZWMp
OworICAgIHJldHVybiBkb0NvdW50KGNvbnRleHQsIElEQktleVJhbmdlRGF0YShpZGJLZXkuZ2V0
KCkpLCBlYyk7CiB9CiAKIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJJbmRleDo6ZG9D
b3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBJREJLZXlSYW5nZURh
dGEmIHJhbmdlLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQpAQCAtMjA5LDcgKzE5NCw3
IEBAIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJJbmRleDo6ZG9Db3VudChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjCiAgICAgcmV0dXJuIHRyYW5zYWN0aW9uLnJlcXVl
c3RDb3VudChjb250ZXh0LCAqdGhpcywgcmFuZ2UpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6SURC
UmVxdWVzdD4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgSURCS2V5UmFuZ2UqIHJhbmdlLCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvblN0cmlu
ZywgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKK1JlZlB0cjxXZWJDb3JlOjpJREJSZXF1
ZXN0PiBJREJJbmRleDo6b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBJREJLZXlSYW5nZSogcmFuZ2UsIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uU3RyaW5nLCBF
eGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJJ
bmRleDo6b3BlbktleUN1cnNvciIpOwogCkBAIC0yMzIsMTAgKzIxNywxMCBAQCBSZWZQdHI8V2Vi
Q29yZTo6SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udAogICAgIH0KIAogICAgIGF1dG8gaW5mbyA9IElEQkN1cnNvckluZm86Omlu
ZGV4Q3Vyc29yKG1fb2JqZWN0U3RvcmUubW9kZXJuVHJhbnNhY3Rpb24oKSwgbV9vYmplY3RTdG9y
ZS5pbmZvKCkuaWRlbnRpZmllcigpLCBtX2luZm8uaWRlbnRpZmllcigpLCByYW5nZSwgZGlyZWN0
aW9uLCBJbmRleGVkREI6OkN1cnNvclR5cGU6OktleU9ubHkpOwotICAgIHJldHVybiBtX29iamVj
dFN0b3JlLm1vZGVyblRyYW5zYWN0aW9uKCkucmVxdWVzdE9wZW5DdXJzb3IoKmNvbnRleHQsICp0
aGlzLCBpbmZvKTsKKyAgICByZXR1cm4gbV9vYmplY3RTdG9yZS5tb2Rlcm5UcmFuc2FjdGlvbigp
LnJlcXVlc3RPcGVuQ3Vyc29yKGNvbnRleHQsICp0aGlzLCBpbmZvKTsKIH0KIAotUmVmUHRyPFdl
YkNvcmU6OklEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIGNv
bnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQorUmVm
UHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBr
ZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVj
KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6b3BlbktleUN1cnNvciIpOwogICAg
IFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25seShjb250ZXh0
LCBrZXksIGVjLmNvZGUpOwpAQCAtMjQ2LDI4ICsyMzEsMTggQEAgUmVmUHRyPFdlYkNvcmU6OklE
QlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnQKICAgICByZXR1cm4gb3BlbktleUN1cnNvcihjb250ZXh0LCBrZXlSYW5nZS5nZXQoKSwg
ZGlyZWN0aW9uLCBlYyk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJJbmRl
eDo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIElEQktleVJhbmdlKiByYW5n
ZSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKK1JlZlB0cjxXZWJDb3JlOjpJREJSZXF1
ZXN0PiBJREJJbmRleDo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIElEQktl
eVJhbmdlKiByYW5nZSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKIHsKICAgICBMT0co
SW5kZXhlZERCLCAiSURCSW5kZXg6OmdldCIpOwogCi0gICAgaWYgKCFjb250ZXh0KSB7Ci0gICAg
ICAgIGVjLmNvZGUgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7Ci0g
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHJldHVybiBkb0dldCgqY29udGV4
dCwgSURCS2V5UmFuZ2VEYXRhKHJhbmdlKSwgZWMpOworICAgIHJldHVybiBkb0dldChjb250ZXh0
LCBJREJLZXlSYW5nZURhdGEocmFuZ2UpLCBlYyk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpJREJS
ZXF1ZXN0PiBJREJJbmRleDo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2Fn
ZSYgZWMpCitSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
a2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQogewogICAgIExPRyhJbmRleGVkREIs
ICJJREJJbmRleDo6Z2V0Iik7CiAKLSAgICBpZiAoIWNvbnRleHQpIHsKLSAgICAgICAgZWMuY29k
ZSA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0ZShj
b250ZXh0KTsKKyAgICBET01SZXF1ZXN0U3RhdGUgcmVxdWVzdFN0YXRlKCZjb250ZXh0KTsKICAg
ICBSZWZQdHI8SURCS2V5PiBpZGJLZXkgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KCZyZXF1ZXN0U3Rh
dGUsIGtleSk7CiAgICAgaWYgKCFpZGJLZXkgfHwgaWRiS2V5LT50eXBlKCkgPT0gS2V5VHlwZTo6
SW52YWxpZCkgewogICAgICAgICBlYy5jb2RlID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRhdGFF
cnJvcjsKQEAgLTI3NSw3ICsyNTAsNyBAQCBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURC
SW5kZXg6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdAogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gZG9HZXQoKmNvbnRleHQsIElE
QktleVJhbmdlRGF0YShpZGJLZXkuZ2V0KCkpLCBlYyk7CisgICAgcmV0dXJuIGRvR2V0KGNvbnRl
eHQsIElEQktleVJhbmdlRGF0YShpZGJLZXkuZ2V0KCkpLCBlYyk7CiB9CiAKIFJlZlB0cjxXZWJD
b3JlOjpJREJSZXF1ZXN0PiBJREJJbmRleDo6ZG9HZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSwgRXhjZXB0aW9uQ29kZVdpdGhN
ZXNzYWdlJiBlYykKQEAgLTMwMSwyOCArMjc2LDE4IEBAIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1
ZXN0PiBJREJJbmRleDo6ZG9HZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29u
CiAgICAgcmV0dXJuIHRyYW5zYWN0aW9uLnJlcXVlc3RHZXRWYWx1ZShjb250ZXh0LCAqdGhpcywg
cmFuZ2UpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldEtl
eShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBJREJLZXlSYW5nZSogcmFuZ2UsIEV4
Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCitSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4g
SURCSW5kZXg6OmdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJLZXlS
YW5nZSogcmFuZ2UsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCiB7CiAgICAgTE9HKElu
ZGV4ZWREQiwgIklEQkluZGV4OjpnZXRLZXkiKTsKIAotICAgIGlmICghY29udGV4dCkgewotICAg
ICAgICBlYy5jb2RlID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9yOwot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICByZXR1cm4gZG9HZXRLZXkoKmNv
bnRleHQsIElEQktleVJhbmdlRGF0YShyYW5nZSksIGVjKTsKKyAgICByZXR1cm4gZG9HZXRLZXko
Y29udGV4dCwgSURCS2V5UmFuZ2VEYXRhKHJhbmdlKSwgZWMpOwogfQogCi1SZWZQdHI8V2ViQ29y
ZTo6SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2Rl
V2l0aE1lc3NhZ2UmIGVjKQorUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQkluZGV4Ojpn
ZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKIHsKICAgICBM
T0coSW5kZXhlZERCLCAiSURCSW5kZXg6OmdldEtleSIpOwogCi0gICAgaWYgKCFjb250ZXh0KSB7
Ci0gICAgICAgIGVjLmNvZGUgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJy
b3I7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIERPTVJlcXVlc3RTdGF0
ZSByZXF1ZXN0U3RhdGUoY29udGV4dCk7CisgICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0
ZSgmY29udGV4dCk7CiAgICAgUmVmUHRyPElEQktleT4gaWRiS2V5ID0gc2NyaXB0VmFsdWVUb0lE
QktleSgmcmVxdWVzdFN0YXRlLCBrZXkpOwogICAgIGlmICghaWRiS2V5IHx8IGlkYktleS0+dHlw
ZSgpID09IEtleVR5cGU6OkludmFsaWQpIHsKICAgICAgICAgZWMuY29kZSA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpEYXRhRXJyb3I7CkBAIC0zMzAsNyArMjk1LDcgQEAgUmVmUHRyPFdlYkNvcmU6
OklEQlJlcXVlc3Q+IElEQkluZGV4OjpnZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgY28KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIGRv
R2V0S2V5KCpjb250ZXh0LCBJREJLZXlSYW5nZURhdGEoaWRiS2V5LmdldCgpKSwgZWMpOworICAg
IHJldHVybiBkb0dldEtleShjb250ZXh0LCBJREJLZXlSYW5nZURhdGEoaWRiS2V5LmdldCgpKSwg
ZWMpOwogfQogCiBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCSW5kZXg6OmRvR2V0S2V5
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IElEQktleVJhbmdlRGF0YSYg
cmFuZ2UsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCSW5kZXhJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCSW5kZXhJbXBsLmgKaW5kZXggYjAx
Y2Y5OWY1NjYyOGFmM2FmODE3OGJmMjE3MTA1YTcwMTA5Mjc1Yi4uZmQyNDI1ZTZmY2Y5ODI5MjMy
ZGJkYWJkYmYyYTFiZjA2ZWIzYjdiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L0lEQkluZGV4SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJJbmRleEltcGwuaApAQCAtNDMsNyArNDMsNyBAQCBj
bGFzcyBJREJPYmplY3RTdG9yZTsKIAogY2xhc3MgSURCSW5kZXggOiBwdWJsaWMgV2ViQ29yZTo6
SURCSW5kZXgsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgotICAgIElEQkluZGV4
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBJREJJbmRleEluZm8mLCBJREJPYmplY3RT
dG9yZSYpOworICAgIElEQkluZGV4KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBJREJJ
bmRleEluZm8mLCBJREJPYmplY3RTdG9yZSYpOwogCiAgICAgdmlydHVhbCB+SURCSW5kZXgoKTsK
IApAQCAtNTUsMjYgKzU1LDI2IEBAIHB1YmxpYzoKICAgICBib29sIHVuaXF1ZSgpIGNvbnN0IGZp
bmFsOwogICAgIGJvb2wgbXVsdGlFbnRyeSgpIGNvbnN0IGZpbmFsOwogCi0gICAgUmVmUHRyPFdl
YkNvcmU6OklEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykgZmluYWwgeyByZXR1cm4gb3BlbkN1
cnNvcihjb250ZXh0LCBzdGF0aWNfY2FzdDxJREJLZXlSYW5nZSo+KG51bGxwdHIpLCBlYyk7IH0K
LSAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBJREJLZXlSYW5nZSoga2V5UmFuZ2UsIEV4Y2VwdGlvbkNvZGVX
aXRoTWVzc2FnZSYgZWMpIGZpbmFsIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwga2V5UmFu
Z2UsIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpLCBlYyk7IH0KLSAgICBSZWZQdHI8V2ViQ29y
ZTo6SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1l
c3NhZ2UmIGVjKSBmaW5hbCB7IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIGtleSwgSURCQ3Vy
c29yOjpkaXJlY3Rpb25OZXh0KCksIGVjKTsgfQotICAgIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1
ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBJREJLZXlSYW5nZSosIGNv
bnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsK
LSAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3Ry
aW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIGZpbmFsOwotCi0gICAg
UmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIElEQktleVJhbmdlKiwg
RXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgZmluYWw7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OklE
QlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsKLQot
ICAgIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpIGZpbmFs
IHsgcmV0dXJuIG9wZW5LZXlDdXJzb3IoY29udGV4dCwgc3RhdGljX2Nhc3Q8SURCS2V5UmFuZ2Uq
PihudWxscHRyKSwgZWMpOyB9Ci0gICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IG9wZW5L
ZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgSURCS2V5UmFuZ2UqIGtl
eVJhbmdlLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKSBmaW5hbCB7IHJldHVybiBvcGVu
S2V5Q3Vyc29yKGNvbnRleHQsIGtleVJhbmdlLCBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHQoKSwg
ZWMpOyB9Ci0gICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykgZmluYWwgeyByZXR1cm4gb3Bl
bktleUN1cnNvcihjb250ZXh0LCBrZXksIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpLCBlYyk7
IH0KLSAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgSURCS2V5UmFuZ2UqLCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwg
RXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgZmluYWw7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OklE
QlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNl
cHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsKLQotICAgIFJlZlB0cjxXZWJDb3JlOjpJREJS
ZXF1ZXN0PiBnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIElEQktleVJhbmdlKiwgRXhjZXB0
aW9uQ29kZVdpdGhNZXNzYWdlJikgZmluYWw7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVl
c3Q+IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgZmluYWw7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OklEQlJlcXVlc3Q+IGdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURC
S2V5UmFuZ2UqLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6SURCUmVxdWVzdD4gZ2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2Um
KSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVj
KSBmaW5hbCB7IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIHN0YXRpY19jYXN0PElEQktleVJh
bmdlKj4obnVsbHB0ciksIGVjKTsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBv
cGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIElEQktleVJhbmdlKiBr
ZXlSYW5nZSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykgZmluYWwgeyByZXR1cm4gb3Bl
bkN1cnNvcihjb250ZXh0LCBrZXlSYW5nZSwgSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0KCksIGVj
KTsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBr
ZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpIGZpbmFsIHsgcmV0dXJuIG9wZW5DdXJz
b3IoY29udGV4dCwga2V5LCBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHQoKSwgZWMpOyB9CisgICAg
UmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIElEQktleVJhbmdlKiwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNv
ZGVXaXRoTWVzc2FnZSYpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBv
cGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZVdpdGhN
ZXNzYWdlJikgZmluYWw7CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gY291bnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIGZpbmFs
OworICAgIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGVX
aXRoTWVzc2FnZSYpIGZpbmFsOworCisgICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IG9w
ZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRXhjZXB0aW9uQ29k
ZVdpdGhNZXNzYWdlJiBlYykgZmluYWwgeyByZXR1cm4gb3BlbktleUN1cnNvcihjb250ZXh0LCBz
dGF0aWNfY2FzdDxJREJLZXlSYW5nZSo+KG51bGxwdHIpLCBlYyk7IH0KKyAgICBSZWZQdHI8V2Vi
Q29yZTo6SURCUmVxdWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBJREJLZXlSYW5nZSoga2V5UmFuZ2UsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYg
ZWMpIGZpbmFsIHsgcmV0dXJuIG9wZW5LZXlDdXJzb3IoY29udGV4dCwga2V5UmFuZ2UsIElEQkN1
cnNvcjo6ZGlyZWN0aW9uTmV4dCgpLCBlYyk7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVx
dWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2Um
IGVjKSBmaW5hbCB7IHJldHVybiBvcGVuS2V5Q3Vyc29yKGNvbnRleHQsIGtleSwgSURCQ3Vyc29y
OjpkaXJlY3Rpb25OZXh0KCksIGVjKTsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0
PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJLZXlSYW5nZSosIGNv
bnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgY29uc3Qg
U3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIGZpbmFsOworCisg
ICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3Nh
Z2UmKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gZ2V0S2V5KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBJREJLZXlSYW5nZSosIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2Fn
ZSYpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBnZXRLZXkoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4
Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIGZpbmFsOwogCiAgICAgY29uc3QgSURCSW5kZXhJbmZv
JiBpbmZvKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPYmplY3RTdG9yZUltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9iamVjdFN0b3JlSW1w
bC5jcHAKaW5kZXggNWE2ODg1MTA5NmFmMmVlOWFkMzdiMzE0NDZiYzBlODFhNjE2NjcwYy4uZmEw
Yzg3NmQ5OTVkYjExMWViYzk5OGUxYzg3ZmQzYzJlYzRhOWY5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9iamVjdFN0b3JlSW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9iamVjdFN0
b3JlSW1wbC5jcHAKQEAgLTQ2LDEzICs0NiwxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFt
ZXNwYWNlIElEQkNsaWVudCB7CiAKLVJlZjxJREJPYmplY3RTdG9yZT4gSURCT2JqZWN0U3RvcmU6
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBJREJPYmplY3RT
dG9yZUluZm8mIGluZm8sIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKK1JlZjxJREJPYmpl
Y3RTdG9yZT4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8sIElEQlRyYW5zYWN0aW9uJiB0
cmFuc2FjdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJREJPYmplY3RTdG9yZShj
b250ZXh0LCBpbmZvLCB0cmFuc2FjdGlvbikpOwogfQogCi1JREJPYmplY3RTdG9yZTo6SURCT2Jq
ZWN0U3RvcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgSURCT2JqZWN0
U3RvcmVJbmZvJiBpbmZvLCBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCi0gICAgOiBBY3Rp
dmVET01PYmplY3QoY29udGV4dCkKK0lEQk9iamVjdFN0b3JlOjpJREJPYmplY3RTdG9yZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGlu
Zm8sIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKKyAgICA6IEFjdGl2ZURPTU9iamVjdCgm
Y29udGV4dCkKICAgICAsIG1faW5mbyhpbmZvKQogICAgICwgbV9vcmlnaW5hbEluZm8oaW5mbykK
ICAgICAsIG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCkBAIC0xMTQsMjIgKzExNCwyMiBAQCBi
b29sIElEQk9iamVjdFN0b3JlOjphdXRvSW5jcmVtZW50KCkgY29uc3QKICAgICByZXR1cm4gbV9p
bmZvLmF1dG9JbmNyZW1lbnQoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElE
Qk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCitSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVz
dD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKIHsKICAgICByZXR1cm4gb3BlbkN1
cnNvcihjb250ZXh0LCBzdGF0aWNfY2FzdDxJREJLZXlSYW5nZSo+KG51bGxwdHIpLCBlYyk7CiB9
CiAKLVJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNv
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBJREJLZXlSYW5nZSoga2V5UmFuZ2Us
IEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCitSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVz
dD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgSURCS2V5UmFuZ2UqIGtleVJhbmdlLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVj
KQogewogICAgIHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIGtleVJhbmdlLCBJREJDdXJzb3I6
OmRpcmVjdGlvbk5leHQoKSwgZWMpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4g
SURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhN
ZXNzYWdlJiBlYykKK1JlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6
b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQogewog
ICAgIHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIGtleSwgSURCQ3Vyc29yOjpkaXJlY3Rpb25O
ZXh0KCksIGVjKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0
b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIElEQktleVJh
bmdlKiByYW5nZSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb25TdHJpbmcsIEV4Y2VwdGlvbkNvZGVX
aXRoTWVzc2FnZSYgZWMpCitSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3Rv
cmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSURCS2V5UmFu
Z2UqIHJhbmdlLCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvblN0cmluZywgRXhjZXB0aW9uQ29kZVdp
dGhNZXNzYWdlJiBlYykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6Om9w
ZW5DdXJzb3IiKTsKIApAQCAtMTUwLDExICsxNTAsMTEgQEAgUmVmUHRyPFdlYkNvcmU6OklEQlJl
cXVlc3Q+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGMKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIGluZm8gPSBJREJDdXJzb3JJ
bmZvOjpvYmplY3RTdG9yZUN1cnNvcihtX3RyYW5zYWN0aW9uLmdldCgpLCBtX2luZm8uaWRlbnRp
ZmllcigpLCByYW5nZSwgZGlyZWN0aW9uKTsKLSAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdCA9
IG1fdHJhbnNhY3Rpb24tPnJlcXVlc3RPcGVuQ3Vyc29yKCpjb250ZXh0LCAqdGhpcywgaW5mbyk7
CisgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBtX3RyYW5zYWN0aW9uLT5yZXF1ZXN0T3Bl
bkN1cnNvcihjb250ZXh0LCAqdGhpcywgaW5mbyk7CiAgICAgcmV0dXJuIFdURk1vdmUocmVxdWVz
dCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6b3Bl
bkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29k
ZVdpdGhNZXNzYWdlJiBlYykKK1JlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RT
dG9yZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhj
ZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKIHsKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGtl
eVJhbmdlID0gSURCS2V5UmFuZ2U6Om9ubHkoY29udGV4dCwga2V5LCBlYy5jb2RlKTsKICAgICBp
ZiAoZWMuY29kZSkgewpAQCAtMTY1LDE1ICsxNjUsMTAgQEAgUmVmUHRyPFdlYkNvcmU6OklEQlJl
cXVlc3Q+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGMKICAgICByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBrZXlSYW5nZS5nZXQoKSwgZGlyZWN0
aW9uLCBlYyk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9y
ZTo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCitSZWZQdHI8
V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmdldChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNl
cHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJPYmpl
Y3RTdG9yZTo6Z2V0Iik7CiAKLSAgICBpZiAoIWNvbnRleHQpIHsKLSAgICAgICAgZWMuY29kZSA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgfQotCiAgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5pc0FjdGl2ZSgpKSB7
CiAgICAgICAgIGVjLmNvZGUgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VHJhbnNhY3Rpb25JbmFj
dGl2ZUVycm9yOwogICAgICAgICBlYy5tZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8g
ZXhlY3V0ZSAnZ2V0JyBvbiAnSURCT2JqZWN0U3RvcmUnOiBUaGUgdHJhbnNhY3Rpb24gaXMgaW5h
Y3RpdmUgb3IgZmluaXNoZWQuIik7CkBAIC0xODYsNyArMTgxLDcgQEAgUmVmUHRyPFdlYkNvcmU6
OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgRE9NUmVxdWVz
dFN0YXRlIHJlcXVlc3RTdGF0ZShjb250ZXh0KTsKKyAgICBET01SZXF1ZXN0U3RhdGUgcmVxdWVz
dFN0YXRlKCZjb250ZXh0KTsKICAgICBSZWZQdHI8SURCS2V5PiBpZGJLZXkgPSBzY3JpcHRWYWx1
ZVRvSURCS2V5KCZyZXF1ZXN0U3RhdGUsIGtleSk7CiAgICAgaWYgKCFpZGJLZXkgfHwgaWRiS2V5
LT50eXBlKCkgPT0gS2V5VHlwZTo6SW52YWxpZCkgewogICAgICAgICBlYy5jb2RlID0gSURCRGF0
YWJhc2VFeGNlcHRpb246OkRhdGFFcnJvcjsKQEAgLTE5NCwxOSArMTg5LDE0IEBAIFJlZlB0cjxX
ZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFJl
ZjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gbV90cmFuc2FjdGlvbi0+cmVxdWVzdEdldFJlY29yZCgq
Y29udGV4dCwgKnRoaXMsIGlkYktleS5nZXQoKSk7CisgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVl
c3QgPSBtX3RyYW5zYWN0aW9uLT5yZXF1ZXN0R2V0UmVjb3JkKGNvbnRleHQsICp0aGlzLCBpZGJL
ZXkuZ2V0KCkpOwogICAgIHJldHVybiBXVEZNb3ZlKHJlcXVlc3QpOwogfQogCi1SZWZQdHI8V2Vi
Q29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmdldChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBJREJLZXlSYW5nZSoga2V5UmFuZ2UsIEV4Y2VwdGlvbkNvZGVXaXRoTWVz
c2FnZSYgZWMpCitSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Omdl
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJLZXlSYW5nZSoga2V5UmFuZ2Us
IEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklE
Qk9iamVjdFN0b3JlOjpnZXQiKTsKIAotICAgIGlmICghY29udGV4dCkgewotICAgICAgICBlYy5j
b2RlID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9yOwotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KICAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPmlzQWN0aXZl
KCkpIHsKICAgICAgICAgZWMuY29kZSA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlv
bkluYWN0aXZlRXJyb3I7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjI0LDcgKzIxNCw3
IEBAIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIAotICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gbV90cmFuc2FjdGlvbi0+cmVxdWVz
dEdldFJlY29yZCgqY29udGV4dCwgKnRoaXMsIGtleVJhbmdlRGF0YSk7CisgICAgUmVmPElEQlJl
cXVlc3Q+IHJlcXVlc3QgPSBtX3RyYW5zYWN0aW9uLT5yZXF1ZXN0R2V0UmVjb3JkKGNvbnRleHQs
ICp0aGlzLCBrZXlSYW5nZURhdGEpOwogICAgIHJldHVybiBXVEZNb3ZlKHJlcXVlc3QpOwogfQog
CkBAIC0zNTgsMTIgKzM0OCwxMiBAQCBSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6
OnB1dE9yQWRkKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlCiAgICAgcmV0dXJu
IGFkb3B0UmVmKHJlcXVlc3QubGVha1JlZigpKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OklEQlJl
cXVlc3Q+IElEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBJREJLZXlSYW5nZSoga2V5UmFuZ2UsIEV4Y2VwdGlvbkNvZGVXaXRoTWVz
c2FnZSYgZWMpCitSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmRl
bGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIElEQktleVJhbmdl
KiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKIHsKICAgICByZXR1cm4g
ZG9EZWxldGUoY29udGV4dCwga2V5UmFuZ2UsIGVjKTsKIH0KIAotUmVmUHRyPElEQlJlcXVlc3Q+
IElEQk9iamVjdFN0b3JlOjpkb0RlbGV0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBJREJLZXlSYW5nZSoga2V5UmFuZ2UsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCitS
ZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmRvRGVsZXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIElEQktleVJhbmdlKiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29kZVdp
dGhNZXNzYWdlJiBlYykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6OmRl
bGV0ZUZ1bmN0aW9uIik7CiAKQEAgLTM5NywxOCArMzg3LDE4IEBAIFJlZlB0cjxJREJSZXF1ZXN0
PiBJREJPYmplY3RTdG9yZTo6ZG9EZWxldGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgSURCCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFJlZjxJREJSZXF1
ZXN0PiByZXF1ZXN0ID0gbV90cmFuc2FjdGlvbi0+cmVxdWVzdERlbGV0ZVJlY29yZCgqY29udGV4
dCwgKnRoaXMsIGtleVJhbmdlRGF0YSk7CisgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBt
X3RyYW5zYWN0aW9uLT5yZXF1ZXN0RGVsZXRlUmVjb3JkKGNvbnRleHQsICp0aGlzLCBrZXlSYW5n
ZURhdGEpOwogICAgIHJldHVybiBXVEZNb3ZlKHJlcXVlc3QpOwogfQogCi1SZWZQdHI8V2ViQ29y
ZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXks
IEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCitSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVz
dD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNv
ZGVXaXRoTWVzc2FnZSYgZWMpCiB7CiAgICAgcmV0dXJuIG1vZGVybkRlbGV0ZShjb250ZXh0LCBr
ZXkuanNWYWx1ZSgpLCBlYyk7CiB9CiAKLVJlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9y
ZTo6bW9kZXJuRGVsZXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEpTQzo6SlNW
YWx1ZSBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCitSZWZQdHI8SURCUmVxdWVz
dD4gSURCT2JqZWN0U3RvcmU6Om1vZGVybkRlbGV0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBKU0M6OkpTVmFsdWUga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQog
ewotICAgIERPTVJlcXVlc3RTdGF0ZSByZXF1ZXN0U3RhdGUoY29udGV4dCk7CisgICAgRE9NUmVx
dWVzdFN0YXRlIHJlcXVlc3RTdGF0ZSgmY29udGV4dCk7CiAgICAgUmVmUHRyPElEQktleT4gaWRi
S2V5ID0gc2NyaXB0VmFsdWVUb0lEQktleSgmcmVxdWVzdFN0YXRlLCBrZXkpOwogICAgIGlmICgh
aWRiS2V5IHx8IGlkYktleS0+dHlwZSgpID09IEtleVR5cGU6OkludmFsaWQpIHsKICAgICAgICAg
ZWMuY29kZSA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEYXRhRXJyb3I7CkBAIC00MTksNyArNDA5
LDcgQEAgUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjptb2Rlcm5EZWxldGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICByZXR1cm4gZG9EZWxldGUoY29udGV4
dCwgJklEQktleVJhbmdlOjpjcmVhdGUoaWRiS2V5LmdldCgpKS5nZXQoKSwgZWMpOwogfQogCi1S
ZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmNsZWFyKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCitS
ZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmNsZWFyKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCiB7
CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpjbGVhciIpOwogCkBAIC00NDYs
MTkgKzQzNiwxNCBAQCBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6
OmNsZWFyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleAogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKLSAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdCA9IG1fdHJhbnNhY3Rp
b24tPnJlcXVlc3RDbGVhck9iamVjdFN0b3JlKCpjb250ZXh0LCAqdGhpcyk7CisgICAgUmVmPElE
QlJlcXVlc3Q+IHJlcXVlc3QgPSBtX3RyYW5zYWN0aW9uLT5yZXF1ZXN0Q2xlYXJPYmplY3RTdG9y
ZShjb250ZXh0LCAqdGhpcyk7CiAgICAgcmV0dXJuIGFkb3B0UmVmKHJlcXVlc3QubGVha1JlZigp
KTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OklEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6Y3JlYXRl
SW5kZXgoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5
LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQorUmVmUHRyPFdlYkNvcmU6OklEQkluZGV4
PiBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUs
IGJvb2wgbXVsdGlFbnRyeSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKIHsKICAgICBM
T0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4ICVzIiwgbmFtZS51dGY4
KCkuZGF0YSgpKTsKIAotICAgIGlmICghY29udGV4dCkgewotICAgICAgICBlYy5jb2RlID0gSURC
RGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9yOwotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICB9Ci0KICAgICBpZiAobV9kZWxldGVkKSB7CiAgICAgICAgIGVjLmNvZGUgPSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7CiAgICAgICAgIGVjLm1lc3Nh
Z2UgPSBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBleGVjdXRlICdjcmVhdGVJbmRleCcgb24gJ0lE
Qk9iamVjdFN0b3JlJzogVGhlIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpOwpAQCAt
NTQ0LDcgKzUyOSw3IEBAIFJlZlB0cjxXZWJDb3JlOjpJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6
OmluZGV4KGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBFeGNlcHRpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gaW5kZXggPSBzdGQ6Om1ha2VfdW5pcXVlPElEQklu
ZGV4PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICppbmZvLCAqdGhpcyk7CisgICAgYXV0byBp
bmRleCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCSW5kZXg+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCksICppbmZvLCAqdGhpcyk7CiAgICAgUmVmUHRyPElEQkluZGV4PiByZWZJbmRleCA9IGluZGV4
LmdldCgpOwogICAgIG1fcmVmZXJlbmNlZEluZGV4ZXMuc2V0KGluZGV4TmFtZSwgV1RGTW92ZShp
bmRleCkpOwogCkBAIC01OTcsMjggKzU4MiwxOCBAQCB2b2lkIElEQk9iamVjdFN0b3JlOjpkZWxl
dGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZQog
ICAgIG1fdHJhbnNhY3Rpb24tPmRlbGV0ZUluZGV4KG1faW5mby5pZGVudGlmaWVyKCksIG5hbWUp
OwogfQogCi1SZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmNvdW50
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2Fn
ZSYgZWMpCitSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmNvdW50
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2Fn
ZSYgZWMpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpjb3VudCIpOwog
Ci0gICAgaWYgKCFjb250ZXh0KSB7Ci0gICAgICAgIGVjLmNvZGUgPSBJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0K
LQotICAgIHJldHVybiBkb0NvdW50KCpjb250ZXh0LCBJREJLZXlSYW5nZURhdGE6OmFsbEtleXMo
KSwgZWMpOworICAgIHJldHVybiBkb0NvdW50KGNvbnRleHQsIElEQktleVJhbmdlRGF0YTo6YWxs
S2V5cygpLCBlYyk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RT
dG9yZTo6Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKK1Jl
ZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y291bnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtl
eSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKIHsKICAgICBMT0coSW5kZXhlZERCLCAi
SURCT2JqZWN0U3RvcmU6OmNvdW50Iik7CiAKLSAgICBpZiAoIWNvbnRleHQpIHsKLSAgICAgICAg
ZWMuY29kZSA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RT
dGF0ZShjb250ZXh0KTsKKyAgICBET01SZXF1ZXN0U3RhdGUgcmVxdWVzdFN0YXRlKCZjb250ZXh0
KTsKICAgICBSZWZQdHI8SURCS2V5PiBpZGJLZXkgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KCZyZXF1
ZXN0U3RhdGUsIGtleSk7CiAgICAgaWYgKCFpZGJLZXkgfHwgaWRiS2V5LT50eXBlKCkgPT0gS2V5
VHlwZTo6SW52YWxpZCkgewogICAgICAgICBlYy5jb2RlID0gSURCRGF0YWJhc2VFeGNlcHRpb246
OkRhdGFFcnJvcjsKQEAgLTYyNiwxOSArNjAxLDE0IEBAIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1
ZXN0PiBJREJPYmplY3RTdG9yZTo6Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBkb0NvdW50KCpj
b250ZXh0LCBJREJLZXlSYW5nZURhdGEoaWRiS2V5LmdldCgpKSwgZWMpOworICAgIHJldHVybiBk
b0NvdW50KGNvbnRleHQsIElEQktleVJhbmdlRGF0YShpZGJLZXkuZ2V0KCkpLCBlYyk7CiB9CiAK
LVJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y291bnQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgSURCS2V5UmFuZ2UqIHJhbmdlLCBFeGNlcHRpb25D
b2RlV2l0aE1lc3NhZ2UmIGVjKQorUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVj
dFN0b3JlOjpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJLZXlSYW5n
ZSogcmFuZ2UsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCiB7CiAgICAgTE9HKEluZGV4
ZWREQiwgIklEQk9iamVjdFN0b3JlOjpjb3VudCIpOwogCi0gICAgaWYgKCFjb250ZXh0KSB7Ci0g
ICAgICAgIGVjLmNvZGUgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHJldHVybiBkb0NvdW50KCpj
b250ZXh0LCByYW5nZSA/IElEQktleVJhbmdlRGF0YShyYW5nZSkgOiBJREJLZXlSYW5nZURhdGE6
OmFsbEtleXMoKSwgZWMpOworICAgIHJldHVybiBkb0NvdW50KGNvbnRleHQsIHJhbmdlID8gSURC
S2V5UmFuZ2VEYXRhKHJhbmdlKSA6IElEQktleVJhbmdlRGF0YTo6YWxsS2V5cygpLCBlYyk7CiB9
CiAKIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6ZG9Db3VudChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJh
bmdlLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9iamVjdFN0b3JlSW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9iamVjdFN0b3JlSW1wbC5o
CmluZGV4IGNlNDE3ZDFhYjQ3NmFhNTY5NzBlZjYxNGFjNjkwMDE3NjZhMzA1Y2IuLjMwNmIxNTAy
ZDQ2NjhjNjhmMjRjYmE3MmI5YzJmNjhlNTA4ZTZhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPYmplY3RTdG9yZUltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBs
LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgSURCVHJhbnNhY3Rpb247CiAKIGNsYXNzIElEQk9i
amVjdFN0b3JlIDogcHVibGljIFdlYkNvcmU6OklEQk9iamVjdFN0b3JlLCBwdWJsaWMgQWN0aXZl
RE9NT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPElEQk9iamVjdFN0b3JlPiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIElE
QlRyYW5zYWN0aW9uJik7CisgICAgc3RhdGljIFJlZjxJREJPYmplY3RTdG9yZT4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mLCBJREJUcmFu
c2FjdGlvbiYpOwogCiAgICAgfklEQk9iamVjdFN0b3JlKCkgZmluYWw7CiAKQEAgLTYxLDI3ICs2
MSwyNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gYWRkKEpT
Qzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBm
aW5hbDsKICAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gcHV0KEpTQzo6RXhlY1N0YXRl
JiwgSlNDOjpKU1ZhbHVlLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgZmluYWw7Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OklEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIElEQktl
eVJhbmdlKiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgZmluYWw7Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OklEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2Fn
ZSYpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBJREJLZXlSYW5nZSosIGNvbnN0IFN0cmluZyYgZGlyZWN0
aW9uLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4
Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpJREJS
ZXF1ZXN0PiBnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIGZpbmFsOwotICAgIFJl
ZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIElE
QktleVJhbmdlKiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgZmluYWw7CisgICAgUmVmUHRy
PFdlYkNvcmU6OklEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJ
REJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJLZXlSYW5n
ZSosIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBm
aW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgSURCS2V5UmFuZ2UqLCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwg
RXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OklE
QlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRp
b25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVz
dD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6SURCUmVxdWVzdD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJLZXlS
YW5nZSosIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIGZpbmFsOwogICAgIFJlZlB0cjxXZWJD
b3JlOjpJREJSZXF1ZXN0PiBhZGQoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIEpTQzo6
SlNWYWx1ZSBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIGZpbmFsOwogICAgIFJlZlB0
cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBwdXQoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUs
IEpTQzo6SlNWYWx1ZSBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIGZpbmFsOwotICAg
IFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5h
bDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gZGVsZXRlRnVuY3Rpb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4
Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpJREJS
ZXF1ZXN0PiBjbGVhcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZVdpdGhN
ZXNzYWdlJikgZmluYWw7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OklEQkluZGV4PiBjcmVhdGVJbmRl
eChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJL
ZXlQYXRoJiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgRXhjZXB0aW9uQ29kZVdpdGhN
ZXNzYWdlJikgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IGRlbGV0ZUZ1
bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJLZXlSYW5nZSosIEV4Y2VwdGlvbkNv
ZGVXaXRoTWVzc2FnZSYpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBk
ZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgZmluYWw7CisgICAg
UmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IGNsZWFyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
SURCSW5kZXg+IGNyZWF0ZUluZGV4KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5
LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsKICAgICBSZWZQdHI8V2ViQ29yZTo6
SURCSW5kZXg+IGluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNz
YWdlJikgZmluYWw7CiAgICAgdm9pZCBkZWxldGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIEV4
Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpJREJS
ZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZVdpdGhN
ZXNzYWdlJikgZmluYWw7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IGNvdW50KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBJREJLZXlSYW5nZSosIEV4Y2VwdGlvbkNvZGVXaXRoTWVz
c2FnZSYpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBjb3VudChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwg
RXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OklE
QlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBFeGNlcHRpb25Db2RlV2l0
aE1lc3NhZ2UmKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gY291bnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIElEQktleVJhbmdlKiwgRXhjZXB0aW9uQ29kZVdpdGhN
ZXNzYWdlJikgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IGNvdW50KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5
LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsKIAogICAgIFJlZlB0cjxJREJSZXF1
ZXN0PiBwdXRGb3JDdXJzb3JVcGRhdGUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIEpT
Qzo6SlNWYWx1ZSBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpOwotICAgIFJlZlB0cjxJ
REJSZXF1ZXN0PiBtb2Rlcm5EZWxldGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEpTQzo6SlNW
YWx1ZSBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpOworICAgIFJlZlB0cjxJREJSZXF1
ZXN0PiBtb2Rlcm5EZWxldGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEpTQzo6SlNWYWx1ZSBr
ZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpOwogCiAgICAgdm9pZCBtYXJrQXNEZWxldGVk
KCk7CiAgICAgYm9vbCBpc0RlbGV0ZWQoKSBjb25zdCB7IHJldHVybiBtX2RlbGV0ZWQ7IH0KQEAg
LTk5LDcgKzk5LDcgQEAgcHVibGljOgogICAgIHZvaWQgdmlzaXRSZWZlcmVuY2VkSW5kZXhlcyhK
U0M6OlNsb3RWaXNpdG9yJikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgSURCT2JqZWN0U3RvcmUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIElEQlRy
YW5zYWN0aW9uJik7CisgICAgSURCT2JqZWN0U3RvcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIElEQlRyYW5zYWN0aW9uJik7CiAKICAgICBlbnVt
IGNsYXNzIElubGluZUtleUNoZWNrIHsKICAgICAgICAgUGVyZm9ybSwKQEAgLTEwOCw3ICsxMDgs
NyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHB1dE9yQWRkKEpTQzo6RXhl
Y1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBSZWZQdHI8SURCS2V5PiwgSW5kZXhlZERCOjpPYmplY3RT
dG9yZU92ZXJ3cml0ZU1vZGUsIElubGluZUtleUNoZWNrLCBFeGNlcHRpb25Db2RlV2l0aE1lc3Nh
Z2UmKTsKICAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gZG9Db3VudChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgRXhjZXB0aW9uQ29kZVdpdGhN
ZXNzYWdlJik7Ci0gICAgUmVmUHRyPElEQlJlcXVlc3Q+IGRvRGVsZXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIElEQktleVJhbmdlKiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29kZVdp
dGhNZXNzYWdlJiBlYyk7CisgICAgUmVmUHRyPElEQlJlcXVlc3Q+IGRvRGVsZXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBJREJLZXlSYW5nZSosIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYp
OwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2Jq
ZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L0lEQk9wZW5EQlJlcXVlc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPcGVuREJSZXF1ZXN0SW1wbC5jcHAKaW5k
ZXggYzE5YjczMDJiMjhjNzVkYmZhYTA4MGY4MzA5MzlkNzk3MDkyMzJmMi4uNmNmNDBmYTE2Y2Q3
NmVkNjhkNmQ2ODQ1MWM1N2UwZmU4M2UwNGVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9wZW5EQlJlcXVlc3RJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT3BlbkRCUmVxdWVzdElt
cGwuY3BwCkBAIC0zOSwxOSArMzksMTkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFj
ZSBJREJDbGllbnQgewogCi1SZWY8SURCT3BlbkRCUmVxdWVzdD4gSURCT3BlbkRCUmVxdWVzdDo6
Y3JlYXRlRGVsZXRlUmVxdWVzdChJREJDb25uZWN0aW9uVG9TZXJ2ZXImIGNvbm5lY3Rpb24sIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmll
ciYgZGF0YWJhc2VJZGVudGlmaWVyKQorUmVmPElEQk9wZW5EQlJlcXVlc3Q+IElEQk9wZW5EQlJl
cXVlc3Q6OmNyZWF0ZURlbGV0ZVJlcXVlc3QoSURCQ29ubmVjdGlvblRvU2VydmVyJiBjb25uZWN0
aW9uLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBJREJEYXRhYmFzZUlk
ZW50aWZpZXImIGRhdGFiYXNlSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoZGF0YWJhc2VJZGVu
dGlmaWVyLmlzVmFsaWQoKSk7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSURCT3BlbkRCUmVx
dWVzdChjb25uZWN0aW9uLCBjb250ZXh0LCBkYXRhYmFzZUlkZW50aWZpZXIsIDAsIEluZGV4ZWRE
Qjo6UmVxdWVzdFR5cGU6OkRlbGV0ZSkpOwogfQogCi1SZWY8SURCT3BlbkRCUmVxdWVzdD4gSURC
T3BlbkRCUmVxdWVzdDo6Y3JlYXRlT3BlblJlcXVlc3QoSURCQ29ubmVjdGlvblRvU2VydmVyJiBj
b25uZWN0aW9uLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBJREJEYXRh
YmFzZUlkZW50aWZpZXImIGRhdGFiYXNlSWRlbnRpZmllciwgdWludDY0X3QgdmVyc2lvbikKK1Jl
ZjxJREJPcGVuREJSZXF1ZXN0PiBJREJPcGVuREJSZXF1ZXN0OjpjcmVhdGVPcGVuUmVxdWVzdChJ
REJDb25uZWN0aW9uVG9TZXJ2ZXImIGNvbm5lY3Rpb24sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgZGF0YWJhc2VJZGVudGlmaWVy
LCB1aW50NjRfdCB2ZXJzaW9uKQogewogICAgIEFTU0VSVChkYXRhYmFzZUlkZW50aWZpZXIuaXNW
YWxpZCgpKTsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJREJPcGVuREJSZXF1ZXN0KGNvbm5l
Y3Rpb24sIGNvbnRleHQsIGRhdGFiYXNlSWRlbnRpZmllciwgdmVyc2lvbiwgSW5kZXhlZERCOjpS
ZXF1ZXN0VHlwZTo6T3BlbikpOwogfQogICAgIAotSURCT3BlbkRCUmVxdWVzdDo6SURCT3BlbkRC
UmVxdWVzdChJREJDb25uZWN0aW9uVG9TZXJ2ZXImIGNvbm5lY3Rpb24sIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgZGF0YWJhc2VJ
ZGVudGlmaWVyLCB1aW50NjRfdCB2ZXJzaW9uLCBJbmRleGVkREI6OlJlcXVlc3RUeXBlIHJlcXVl
c3RUeXBlKQorSURCT3BlbkRCUmVxdWVzdDo6SURCT3BlbkRCUmVxdWVzdChJREJDb25uZWN0aW9u
VG9TZXJ2ZXImIGNvbm5lY3Rpb24sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNv
bnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgZGF0YWJhc2VJZGVudGlmaWVyLCB1aW50NjRfdCB2
ZXJzaW9uLCBJbmRleGVkREI6OlJlcXVlc3RUeXBlIHJlcXVlc3RUeXBlKQogICAgIDogSURCUmVx
dWVzdChjb25uZWN0aW9uLCBjb250ZXh0KQogICAgICwgbV9kYXRhYmFzZUlkZW50aWZpZXIoZGF0
YWJhc2VJZGVudGlmaWVyKQogICAgICwgbV92ZXJzaW9uKHZlcnNpb24pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT3BlbkRCUmVxdWVzdElt
cGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPcGVuREJS
ZXF1ZXN0SW1wbC5oCmluZGV4IDMzNmM1NDdiMTQ2NmM5NWYzMGJiNWRhZWE0ZTUzZjVmODY5NWFm
YjIuLmRhODA0YzEwZDgxZDhlODA3MmI2YmRlMmRhODBmYThiNWZlMzIzM2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPcGVuREJSZXF1ZXN0
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJP
cGVuREJSZXF1ZXN0SW1wbC5oCkBAIC00Miw4ICs0Miw4IEBAIGNsYXNzIElEQkNvbm5lY3Rpb25U
b1NlcnZlcjsKIAogY2xhc3MgSURCT3BlbkRCUmVxdWVzdCA6IHB1YmxpYyBJREJSZXF1ZXN0IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPElEQk9wZW5EQlJlcXVlc3Q+IGNyZWF0ZURlbGV0ZVJl
cXVlc3QoSURCQ29ubmVjdGlvblRvU2VydmVyJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOwotICAgIHN0YXRpYyBSZWY8SURCT3BlbkRCUmVx
dWVzdD4gY3JlYXRlT3BlblJlcXVlc3QoSURCQ29ubmVjdGlvblRvU2VydmVyJiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYsIHVpbnQ2NF90IHZl
cnNpb24pOworICAgIHN0YXRpYyBSZWY8SURCT3BlbkRCUmVxdWVzdD4gY3JlYXRlRGVsZXRlUmVx
dWVzdChJREJDb25uZWN0aW9uVG9TZXJ2ZXImLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29u
c3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CisgICAgc3RhdGljIFJlZjxJREJPcGVuREJSZXF1
ZXN0PiBjcmVhdGVPcGVuUmVxdWVzdChJREJDb25uZWN0aW9uVG9TZXJ2ZXImLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiwgdWludDY0X3QgdmVy
c2lvbik7CiAKICAgICB+SURCT3BlbkRCUmVxdWVzdCgpIGZpbmFsOwogICAgIApAQCAtNjAsNyAr
NjAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBkaXNwYXRjaEV2ZW50KEV2ZW50JikgZmluYWw7CiAK
IHByaXZhdGU6Ci0gICAgSURCT3BlbkRCUmVxdWVzdChJREJDb25uZWN0aW9uVG9TZXJ2ZXImLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiwgdWlu
dDY0X3QgdmVyc2lvbiwgSW5kZXhlZERCOjpSZXF1ZXN0VHlwZSk7CisgICAgSURCT3BlbkRCUmVx
dWVzdChJREJDb25uZWN0aW9uVG9TZXJ2ZXImLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29u
c3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiwgdWludDY0X3QgdmVyc2lvbiwgSW5kZXhlZERCOjpS
ZXF1ZXN0VHlwZSk7CiAKICAgICB2b2lkIG9uRXJyb3IoY29uc3QgSURCUmVzdWx0RGF0YSYpOwog
ICAgIHZvaWQgb25TdWNjZXNzKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwu
Y3BwCmluZGV4IGI3NGUxN2FjMWE4NTIyYmU4M2JmOWFkZGIwNjc3MzJjMDM2NWM1OTMuLmQwMmE3
NDJiMTA0MTQ1YTdmMTNjMDc4MmU5OGQ2N2QxOGJlZTNhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVlc3RJbXBsLmNw
cApAQCAtNjQsNyArNjQsNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCUmVxdWVzdDo6Y3JlYXRlR2V0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIElEQkluZGV4JgogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IElEQlJlcXVlc3QoY29udGV4dCwgaW5kZXgsIHJlcXVlc3RlZFJlY29yZFR5
cGUsIHRyYW5zYWN0aW9uKSk7CiB9CiAKLUlEQlJlcXVlc3Q6OklEQlJlcXVlc3QoSURCQ29ubmVj
dGlvblRvU2VydmVyJiBjb25uZWN0aW9uLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQorSURCUmVxdWVzdDo6SURCUmVxdWVzdChJREJDb25uZWN0aW9uVG9TZXJ2ZXImIGNvbm5lY3Rp
b24sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJREJPcGVuREJSZXF1
ZXN0KGNvbnRleHQpCiAgICAgLCBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKICAgICAsIG1fcmVz
b3VyY2VJZGVudGlmaWVyKGNvbm5lY3Rpb24pCkBAIC03Myw3ICs3Myw3IEBAIElEQlJlcXVlc3Q6
OklEQlJlcXVlc3QoSURCQ29ubmVjdGlvblRvU2VydmVyJiBjb25uZWN0aW9uLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0CiB9CiAKIElEQlJlcXVlc3Q6OklEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBJREJUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24pCi0gICAgOiBJREJPcGVuREJSZXF1ZXN0KCZjb250ZXh0KQorICAg
IDogSURCT3BlbkRCUmVxdWVzdChjb250ZXh0KQogICAgICwgbV90cmFuc2FjdGlvbigmdHJhbnNh
Y3Rpb24pCiAgICAgLCBtX2Nvbm5lY3Rpb24odHJhbnNhY3Rpb24uc2VydmVyQ29ubmVjdGlvbigp
KQogICAgICwgbV9yZXNvdXJjZUlkZW50aWZpZXIodHJhbnNhY3Rpb24uc2VydmVyQ29ubmVjdGlv
bigpKQpAQCAtODMsNyArODMsNyBAQCBJREJSZXF1ZXN0OjpJREJSZXF1ZXN0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIElEQk9iamVjdFN0b3JlJiBvYmplY3RTdAogfQogCiBJREJS
ZXF1ZXN0OjpJREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIElEQkN1
cnNvciYgY3Vyc29yLCBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCi0gICAgOiBJREJPcGVu
REJSZXF1ZXN0KCZjb250ZXh0KQorICAgIDogSURCT3BlbkRCUmVxdWVzdChjb250ZXh0KQogICAg
ICwgbV90cmFuc2FjdGlvbigmdHJhbnNhY3Rpb24pCiAgICAgLCBtX2Nvbm5lY3Rpb24odHJhbnNh
Y3Rpb24uc2VydmVyQ29ubmVjdGlvbigpKQogICAgICwgbV9yZXNvdXJjZUlkZW50aWZpZXIodHJh
bnNhY3Rpb24uc2VydmVyQ29ubmVjdGlvbigpKQpAQCAtOTYsNyArOTYsNyBAQCBJREJSZXF1ZXN0
OjpJREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIElEQkN1cnNvciYg
Y3Vyc29yLCBJREJUcgogfQogCiBJREJSZXF1ZXN0OjpJREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIElEQkluZGV4JiBpbmRleCwgSURCVHJhbnNhY3Rpb24mIHRyYW5z
YWN0aW9uKQotICAgIDogSURCT3BlbkRCUmVxdWVzdCgmY29udGV4dCkKKyAgICA6IElEQk9wZW5E
QlJlcXVlc3QoY29udGV4dCkKICAgICAsIG1fdHJhbnNhY3Rpb24oJnRyYW5zYWN0aW9uKQogICAg
ICwgbV9jb25uZWN0aW9uKHRyYW5zYWN0aW9uLnNlcnZlckNvbm5lY3Rpb24oKSkKICAgICAsIG1f
cmVzb3VyY2VJZGVudGlmaWVyKHRyYW5zYWN0aW9uLnNlcnZlckNvbm5lY3Rpb24oKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0
SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVl
c3RJbXBsLmgKaW5kZXggMjA4MzAyOWI1ZDlmYzdjYzAwZDFhZDQ3MDZiOWY4NDNmYjQ3MjMwNi4u
NTU1OTEzY2JhOGM3ZjNkZWIzNjhiNGNjYmI0Mjg1ZjU0ZGE4M2M1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVlc3RJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVlc3RJbXBs
LmgKQEAgLTEwNCw3ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgSW5kZXhlZERCOjpSZXF1ZXN0VHlw
ZSByZXF1ZXN0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGU7IH0KIAogcHJvdGVj
dGVkOgotICAgIElEQlJlcXVlc3QoSURCQ29ubmVjdGlvblRvU2VydmVyJiwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCopOworICAgIElEQlJlcXVlc3QoSURCQ29ubmVjdGlvblRvU2VydmVyJiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpOwogICAgIElEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIElEQk9iamVjdFN0b3JlJiwgSURCVHJhbnNhY3Rpb24mKTsKICAgICBJREJSZXF1ZXN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJDdXJzb3ImLCBJREJUcmFuc2FjdGlvbiYpOwog
ICAgIElEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIElEQkluZGV4JiwgSURCVHJh
bnNhY3Rpb24mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5jcHAKaW5kZXggM2QxNTFiODY0YmQ5
ZThjNTIxMDdlZmYxNzJmY2E0Nzc5MzU3OWE0Yy4uZjY0Y2NmOWU4ZDJkNGIxYzI0YTcxOWZjNDE2
N2RhOTQwZjQyMjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5jcHAKQEAgLTE2Miw3ICsx
NjIsNyBAQCBSZWZQdHI8V2ViQ29yZTo6SURCT2JqZWN0U3RvcmU+IElEQlRyYW5zYWN0aW9uOjpv
YmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG9iamVjdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKLSAgICBhdXRvIG9iamVjdFN0b3JlID0gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZShz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksICppbmZvLCAqdGhpcyk7CisgICAgYXV0byBvYmplY3RT
dG9yZSA9IElEQk9iamVjdFN0b3JlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
KmluZm8sICp0aGlzKTsKICAgICBtX3JlZmVyZW5jZWRPYmplY3RTdG9yZXMuc2V0KG9iamVjdFN0
b3JlTmFtZSwgJm9iamVjdFN0b3JlLmdldCgpKTsKIAogICAgIHJldHVybiBhZG9wdFJlZigmb2Jq
ZWN0U3RvcmUubGVha1JlZigpKTsKQEAgLTQ3Myw3ICs0NzMsNyBAQCBSZWY8SURCT2JqZWN0U3Rv
cmU+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9y
ZUluZm8mCiAgICAgQVNTRVJUKGlzVmVyc2lvbkNoYW5nZSgpKTsKICAgICBBU1NFUlQoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKTsKIAotICAgIFJlZjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3Rv
cmUgPSBJREJPYmplY3RTdG9yZTo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW5m
bywgKnRoaXMpOworICAgIFJlZjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUgPSBJREJPYmpl
Y3RTdG9yZTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGluZm8sICp0aGlzKTsK
ICAgICBtX3JlZmVyZW5jZWRPYmplY3RTdG9yZXMuc2V0KGluZm8ubmFtZSgpLCAmb2JqZWN0U3Rv
cmUuZ2V0KCkpOwogCiAgICAgYXV0byBvcGVyYXRpb24gPSBjcmVhdGVUcmFuc2FjdGlvbk9wZXJh
dGlvbigqdGhpcywgJklEQlRyYW5zYWN0aW9uOjpkaWRDcmVhdGVPYmplY3RTdG9yZU9uU2VydmVy
LCAmSURCVHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlT25TZXJ2ZXIsIGluZm8pOwpAQCAt
NTA5LDcgKzUwOSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJJbmRleD4gSURCVHJhbnNhY3Rpb246
OmNyZWF0ZUluZGV4KElEQk9iamVjdFN0b3JlJiBvYmplY3RTdG9yCiAgICAgYXV0byBvcGVyYXRp
b24gPSBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigqdGhpcywgJklEQlRyYW5zYWN0aW9uOjpk
aWRDcmVhdGVJbmRleE9uU2VydmVyLCAmSURCVHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4T25TZXJ2
ZXIsIGluZm8pOwogICAgIHNjaGVkdWxlT3BlcmF0aW9uKFdURk1vdmUob3BlcmF0aW9uKSk7CiAK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJREJJbmRleD4oc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBpbmZvLCBvYmplY3RTdG9yZSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
SURCSW5kZXg+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGluZm8sIG9iamVjdFN0b3JlKTsK
IH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlSW5kZXhPblNlcnZlcihUcmFuc2FjdGlv
bk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJJbmRleEluZm8mIGluZm8pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL0RPTVVSTE1lZGlhU291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvRE9NVVJMTWVkaWFTb3Vy
Y2UuY3BwCmluZGV4IDIwNTEyNzQ4NDJmOTJmYTg4ZDAxMDg0YjlmYmZmNjE4ZjgwN2VkOTcuLmVl
MjRjMmJlYzdlZTI0MmJjZWJiZjkwMmE3MGY0MGYwNDg0ZTBkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvRE9NVVJMTWVkaWFTb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvRE9NVVJMTWVkaWFTb3VyY2UuY3Bw
CkBAIC0zOSwxMiArMzksMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TdHJpbmcgRE9N
VVJMTWVkaWFTb3VyY2U6OmNyZWF0ZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBNZWRpYVNvdXJjZSogc291cmNlKQorU3RyaW5nIERPTVVS
TE1lZGlhU291cmNlOjpjcmVhdGVPYmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwgTWVkaWFTb3VyY2UqIHNvdXJjZSkKIHsKICAgICAvLyBTaW5j
ZSBXZWJXb3JrZXJzIGNhbm5vdCBvYnRhaW4gTWVkaWFTb3VyY2Ugb2JqZWN0cywgd2Ugc2hvdWxk
IGJlIG9uIHRoZSBtYWluIHRocmVhZC4KICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0g
ICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0IHx8ICFzb3VyY2UpCisgICAgaWYgKCFzb3Vy
Y2UpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICByZXR1cm4gRE9NVVJMOjpjcmVhdGVQ
dWJsaWNVUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgc291cmNlKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvRE9NVVJMTWVkaWFTb3VyY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvRE9NVVJMTWVkaWFTb3VyY2UuaApp
bmRleCAxZWNjZDRiNzU0OWY4YTJmYmU5NjliOGMyMTQ3MTI2MjEyZjk0NmE1Li4zYzlhNDIzNGE0
YzM0MzZkZjhhOTQwMzM1M2E0NGJjYTA5MGIwNDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL0RPTVVSTE1lZGlhU291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9ET01VUkxNZWRpYVNvdXJjZS5oCkBAIC00Miw3ICs0
Miw3IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIERPTVVSTE1lZGlh
U291cmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgTWVkaWFTb3VyY2UqKTsKKyAgICBzdGF0aWMgU3RyaW5nIGNy
ZWF0ZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgTWVkaWFTb3VyY2UqKTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vRE9NVVJMTWVkaWFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9ET01VUkxNZWRpYVN0cmVhbS5jcHAKaW5kZXggMGVlZWQ5Yzlm
N2Y3N2Q1NTVkY2EzYmNiNWJmYmEzZGZmZDY4MGNlYS4uYmQzZjdjNjVmZDNjNDQ5YTUzOTEzMmRm
ZWJiNWI2OWIxZTQ2NDcxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9ET01VUkxNZWRpYVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9ET01VUkxNZWRpYVN0cmVhbS5jcHAKQEAgLTQwLDEyICs0MCwxMiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVN0cmluZyBET01VUkxNZWRpYVN0cmVhbTo6Y3JlYXRl
T2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IE1lZGlhU3RyZWFtKiBzdHJlYW0pCitTdHJpbmcgRE9NVVJMTWVkaWFTdHJlYW06OmNyZWF0ZU9i
amVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBN
ZWRpYVN0cmVhbSogc3RyZWFtKQogewogICAgIC8vIFNpbmNlIFdlYldvcmtlcnMgY2Fubm90IG9i
dGFpbiBTdHJlYW0gb2JqZWN0cywgd2Ugc2hvdWxkIGJlIG9uIHRoZSBtYWluIHRocmVhZC4KICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250
ZXh0IHx8ICFzdHJlYW0pCisgICAgaWYgKCFzdHJlYW0pCiAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKICAgICByZXR1cm4gRE9NVVJMOjpjcmVhdGVQdWJsaWNVUkwoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgc3RyZWFtKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vRE9NVVJMTWVkaWFTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vRE9NVVJMTWVkaWFTdHJlYW0uaAppbmRleCAzZTJkOGM5MDU3ZDUwOTNiNzNmMzFm
OTQ5NWRjNTFjMmVhODJhMWEzLi4wYWZhYzBkZTQxYWNjNDJhNWM0ZTJjOWNiMjVlZGFjNTQ2YWNh
MmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RPTVVS
TE1lZGlhU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9E
T01VUkxNZWRpYVN0cmVhbS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7CiAKIGNsYXNzIERPTVVSTE1lZGlhU3RyZWFtIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTWVkaWFT
dHJlYW0qKTsKKyAgICBzdGF0aWMgU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgTWVkaWFTdHJlYW0qKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vSFRNTE1lZGlh
RWxlbWVudE1lZGlhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vSFRNTE1lZGlhRWxlbWVudE1lZGlhU3RyZWFtLmNwcAppbmRleCA5ZjlmZGIxNWRmYjBjM2Vk
MDM3NjBkMjE1Y2IwMDg0ZDIxYjA2NWQ4Li4zMzkyOWUyMjNhZjRlMDdkNjljZTA1YjdkYjZkMTZi
NThhZjExY2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L0hUTUxNZWRpYUVsZW1lbnRNZWRpYVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9IVE1MTWVkaWFFbGVtZW50TWVkaWFTdHJlYW0uY3BwCkBAIC0zOCw5
ICszOCw5IEBAIE1lZGlhU3RyZWFtKiBIVE1MTWVkaWFFbGVtZW50TWVkaWFTdHJlYW06OnNyY09i
amVjdChIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lCiAgICAgcmV0dXJuIG1lZGlhRWxlbWVu
dC5zcmNPYmplY3QoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50TWVkaWFTdHJlYW06OnNl
dFNyY09iamVjdChIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQsIE1lZGlhU3RyZWFtKiBt
ZWRpYVN0cmVhbSkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudE1lZGlhU3RyZWFtOjpzZXRTcmNPYmpl
Y3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSFRNTE1lZGlhRWxlbWVudCYgbWVk
aWFFbGVtZW50LCBNZWRpYVN0cmVhbSogbWVkaWFTdHJlYW0pCiB7Ci0gICAgbWVkaWFFbGVtZW50
LnNldFNyY09iamVjdChtZWRpYVN0cmVhbSk7CisgICAgbWVkaWFFbGVtZW50LnNldFNyY09iamVj
dChjb250ZXh0LCBtZWRpYVN0cmVhbSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vSFRNTE1lZGlhRWxl
bWVudE1lZGlhU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0hU
TUxNZWRpYUVsZW1lbnRNZWRpYVN0cmVhbS5oCmluZGV4IDU0NGMwZmMxNTkxMjg1MjE5YzNkOTkx
NzA5M2JiZDQwMTc0ZjhjNjUuLmI3NGQxNmM4MzY2NzcwZDE4ZjkyY2I3NzQ1MTUxMTQ5Y2I1MjE4
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vSFRNTE1l
ZGlhRWxlbWVudE1lZGlhU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9IVE1MTWVkaWFFbGVtZW50TWVkaWFTdHJlYW0uaApAQCAtMjgsMTcgKzI4LDE2IEBA
CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBFTkFCTEUoVklERU8pCiAKLSNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxN
ZWRpYUVsZW1lbnQ7CiBjbGFzcyBNZWRpYVN0cmVhbTsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CiAKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnRNZWRpYVN0cmVhbSB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIE1lZGlhU3RyZWFtKiBzcmNPYmplY3QoSFRNTE1lZGlhRWxlbWVudCYpOwotICAg
IHN0YXRpYyB2b2lkIHNldFNyY09iamVjdChIVE1MTWVkaWFFbGVtZW50JiwgTWVkaWFTdHJlYW0q
KTsKKyAgICBzdGF0aWMgdm9pZCBzZXRTcmNPYmplY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IEhUTUxNZWRpYUVsZW1lbnQmLCBNZWRpYVN0cmVhbSopOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9I
VE1MTWVkaWFFbGVtZW50TWVkaWFTdHJlYW0uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9IVE1MTWVkaWFFbGVtZW50TWVkaWFTdHJlYW0uaWRsCmluZGV4IGI4ZmNkOGI0
YTAxMDE1YmVjMThjN2FmODJhOTViNmM2NDU4MzFhYjIuLjkwMmRkNTM1NTUyYjYxMzE5MDc1OTFi
ZWYyMGNlZmU5NzI4N2Y5MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vSFRNTE1lZGlhRWxlbWVudE1lZGlhU3RyZWFtLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0hUTUxNZWRpYUVsZW1lbnRNZWRpYVN0cmVhbS5pZGwK
QEAgLTI4LDYgKzI4LDYgQEAKIF0gcGFydGlhbCBpbnRlcmZhY2UgSFRNTE1lZGlhRWxlbWVudAog
ewogI2lmICghZGVmaW5lZChMQU5HVUFHRV9HT0JKRUNUKSB8fCAhTEFOR1VBR0VfR09CSkVDVCkg
JiYgKCFkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAhTEFOR1VBR0VfT0JKRUNUSVZF
X0MpCi0gICAgYXR0cmlidXRlIE1lZGlhU3RyZWFtPyBzcmNPYmplY3Q7CisgICAgW1NldHRlckNh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIGF0dHJpYnV0ZSBNZWRpYVN0cmVhbT8gc3Jj
T2JqZWN0OwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAppbmRleCAyNzM4MDU2OThkODI4NWU4OTkzMTBm
OGQ5MGFjYTNhZTUzYzkwOWUyLi42NTc4ZGE0NDkwMTEyN2E1NDNlNjFlNjdhZDEyNGZmNDE3Zjg0
NTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uLmNwcApAQCAtNTksOCArNTksOCBAQCBOb3RpZmljYXRpb246Ok5vdGlmaWNh
dGlvbigpCiB9CiAKICNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi1Ob3RpZmljYXRp
b246Ok5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHks
IGNvbnN0IFN0cmluZyYgaWNvblVSSSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
RXhjZXB0aW9uQ29kZSYgZWMsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRl
cikKLSAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQorTm90aWZpY2F0aW9uOjpOb3RpZmlj
YXRpb24oY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJp
bmcmIGljb25VUkksIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEV4Y2VwdGlvbkNv
ZGUmIGVjLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpCisgICAgOiBB
Y3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBtX3RpdGxlKHRpdGxlKQogICAgICwgbV9i
b2R5KGJvZHkpCiAgICAgLCBtX3N0YXRlKElkbGUpCkBAIC05OCw3ICs5OCw3IEBAIE5vdGlmaWNh
dGlvbjo6fk5vdGlmaWNhdGlvbigpCiB9CiAKICNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElP
TlMpCi1SZWY8Tm90aWZpY2F0aW9uPiBOb3RpZmljYXRpb246OmNyZWF0ZShjb25zdCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZyYgaWNvblVSSSwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMsIFBhc3NSZWZQdHI8
Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcikgCitSZWY8Tm90aWZpY2F0aW9uPiBOb3RpZmlj
YXRpb246OmNyZWF0ZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNv
bnN0IFN0cmluZyYgaWNvblVSSSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRXhj
ZXB0aW9uQ29kZSYgZWMsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcikg
CiB7IAogICAgIGF1dG8gbm90aWZpY2F0aW9uID0gYWRvcHRSZWYoKm5ldyBOb3RpZmljYXRpb24o
dGl0bGUsIGJvZHksIGljb25VUkksIGNvbnRleHQsIGVjLCBwcm92aWRlcikpOwogICAgIG5vdGlm
aWNhdGlvbi5nZXQoKS5zdXNwZW5kSWZOZWVkZWQoKTsKQEAgLTIyMSwxMCArMjIxLDEwIEBAIHZv
aWQgTm90aWZpY2F0aW9uOjp0YXNrVGltZXJGaXJlZCgpCiAKIAogI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKQotY29uc3QgU3RyaW5nIE5vdGlmaWNhdGlvbjo6cGVybWlzc2lvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KQorY29uc3QgU3RyaW5nIE5vdGlmaWNhdGlvbjo6cGVybWlz
c2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogewotICAgIEFTU0VSVChkb3du
Y2FzdDxEb2N1bWVudD4oKmNvbnRleHQpLnBhZ2UoKSk7Ci0gICAgcmV0dXJuIHBlcm1pc3Npb25T
dHJpbmcoTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShkb3duY2FzdDxEb2N1bWVudD4oKmNv
bnRleHQpLnBhZ2UoKSktPmNsaWVudCgpLT5jaGVja1Blcm1pc3Npb24oY29udGV4dCkpOworICAg
IEFTU0VSVChkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkucGFnZSgpKTsKKyAgICByZXR1cm4g
cGVybWlzc2lvblN0cmluZyhOb3RpZmljYXRpb25Db250cm9sbGVyOjpmcm9tKGRvd25jYXN0PERv
Y3VtZW50Pihjb250ZXh0KS5wYWdlKCkpLT5jbGllbnQoKS0+Y2hlY2tQZXJtaXNzaW9uKCZjb250
ZXh0KSk7CiB9CiAKIGNvbnN0IFN0cmluZyBOb3RpZmljYXRpb246OnBlcm1pc3Npb25TdHJpbmco
Tm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIHBlcm1pc3Npb24pCkBAIC0yNDIsMTAgKzI0
MiwxMCBAQCBjb25zdCBTdHJpbmcgTm90aWZpY2F0aW9uOjpwZXJtaXNzaW9uU3RyaW5nKE5vdGlm
aWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbiBwZXJtaQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0K
IAotdm9pZCBOb3RpZmljYXRpb246OnJlcXVlc3RQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNr
PiBjYWxsYmFjaykKK3ZvaWQgTm90aWZpY2F0aW9uOjpyZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvblBlcm1pc3Np
b25DYWxsYmFjaz4gY2FsbGJhY2spCiB7Ci0gICAgQVNTRVJUKGRvd25jYXN0PERvY3VtZW50Pigq
Y29udGV4dCkucGFnZSgpKTsKLSAgICBOb3RpZmljYXRpb25Db250cm9sbGVyOjpmcm9tKGRvd25j
YXN0PERvY3VtZW50PigqY29udGV4dCkucGFnZSgpKS0+Y2xpZW50KCktPnJlcXVlc3RQZXJtaXNz
aW9uKGNvbnRleHQsIGNhbGxiYWNrKTsKKyAgICBBU1NFUlQoZG93bmNhc3Q8RG9jdW1lbnQ+KGNv
bnRleHQpLnBhZ2UoKSk7CisgICAgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShkb3duY2Fz
dDxEb2N1bWVudD4oY29udGV4dCkucGFnZSgpKS0+Y2xpZW50KCktPnJlcXVlc3RQZXJtaXNzaW9u
KCZjb250ZXh0LCBjYWxsYmFjayk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCmluZGV4IGU3NmJkMjU3MmYy
MDk3YmRiN2I2NGZiMmY5MzNhMWQwYTk4YWNlOWUuLjAxZjI3MDU0NjkyYWU5NWQ5ODYxOTVjYjBl
YzJjMjAzYWViMzg3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKQEAgLTY2LDcgKzY2LDcgQEAgY2xhc3MgTm90aWZpY2F0
aW9uIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9uPiwgcHVibGljIEFjdGl2
ZURPTU9iamUKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBOb3RpZmljYXRpb24oKTsKICNp
ZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0gICAgc3RhdGljIFJlZjxOb3RpZmljYXRp
b24+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNvbnN0
IFN0cmluZyYgaWNvblVSSSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUm
LCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpOworICAgIHN0YXRpYyBS
ZWY8Tm90aWZpY2F0aW9uPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5n
JiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkksIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBF
eGNlcHRpb25Db2RlJiwgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKTsK
ICNlbmRpZgogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIHN0YXRpYyBSZWY8Tm90aWZp
Y2F0aW9uPiBjcmVhdGUoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBEaWN0
aW9uYXJ5JiBvcHRpb25zKTsKQEAgLTEyMiwxNCArMTIyLDE0IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGZpbmFsaXplKCk7CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykK
LSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIHBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCopOworICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgcGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IFN0cmluZyBwZXJtaXNz
aW9uU3RyaW5nKE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbik7Ci0gICAgc3RhdGljIHZv
aWQgcmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8
Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrPiA9IG51bGxwdHIpOworICAgIHN0YXRpYyB2
b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBQYXNzUmVmUHRy
PE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaz4gPSBudWxscHRyKTsKICNlbmRpZgogCiBw
cml2YXRlOgogI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLSAgICBOb3RpZmljYXRp
b24oY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcm
IGljb25VUkksIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJiwgUGFzc1Jl
ZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+KTsKKyAgICBOb3RpZmljYXRpb24oY29uc3QgU3RyaW5n
JiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkksIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBFeGNlcHRpb25Db2RlJiwgUGFzc1JlZlB0cjxOb3RpZmljYXRp
b25DZW50ZXI+KTsKICNlbmRpZgogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIE5vdGlm
aWNhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25DZW50ZXIuY3BwCmluZGV4IDY0ZmYwNjQzYmI2MDU5ODk3NDliOTk4ZTlmOTFlNGQz
OTM3ODRjYTkuLmYwMWZmYmI4MDE2N2RjYTU2ZDhkNjY3MDJiNDEzOWYyYTA5M2YxMjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25D
ZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25DZW50ZXIuY3BwCkBAIC01OSwxMSArNTksMTEgQEAgTm90aWZpY2F0aW9uQ2VudGVy
OjpOb3RpZmljYXRpb25DZW50ZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTm90
aWZpY2EKIAogUmVmUHRyPE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uQ2VudGVyOjpjcmVhdGVO
b3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBpY29uVVJJLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBj
b25zdCBTdHJpbmcmIGJvZHksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmICghbV9jbGll
bnQpIHsKKyAgICBpZiAoIW1fY2xpZW50IHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIHsK
ICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQotICAgIHJldHVybiBOb3RpZmljYXRpb246OmNyZWF0ZSh0aXRsZSwgYm9keSwgaWNv
blVSSSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBlYywgdGhpcyk7CisgICAgcmV0dXJuIE5v
dGlmaWNhdGlvbjo6Y3JlYXRlKHRpdGxlLCBib2R5LCBpY29uVVJJLCAqc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCBlYywgdGhpcyk7CiB9CiAKIGludCBOb3RpZmljYXRpb25DZW50ZXI6OmNoZWNr
UGVybWlzc2lvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50LmgKaW5kZXggNzMxZGVkODczMzQxMDMwZjRiY2Yy
NDk2MmY0NTVjMzNhOWFkYzVhZi4uZjdhNjVjOTA3ZDcxZjg4OTEyM2E2ZmUyMDQ2NGFhNzY4MTAw
MmRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25DbGllbnQuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBOb3RpZmlj
YXRpb247CiBjbGFzcyBQYWdlOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAorLy8g
RklYTUU6IE1pZ3JhdGUgdG8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dCByZWZlcmVuY2VzLgogY2xh
c3MgTm90aWZpY2F0aW9uQ2xpZW50IHsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9xdW90YS9TdG9yYWdlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3F1b3RhL1N0b3JhZ2VJbmZvLmNwcAppbmRleCA2Mjc1ZWY5ZDViZjVkMTY3ODc4YzAwYWQ1
NDdlMzJjODFiNGVlOGNjLi41OTBlNDBiM2JlZDYzMmVhYmM2NzgyMmIyMDcyOTFjMmQwYWE5NTUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VJbmZvLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VJbmZvLmNwcApAQCAt
NTIsNyArNTIsNyBAQCBTdG9yYWdlSW5mbzo6flN0b3JhZ2VJbmZvKCkKIHsKIH0KIAotdm9pZCBT
dG9yYWdlSW5mbzo6cXVlcnlVc2FnZUFuZFF1b3RhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIGludCBzdG9yYWdlVHlwZSwgUGFzc1JlZlB0cjxTdG9yYWdl
VXNhZ2VDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPFN0b3JhZ2VFcnJvckNh
bGxiYWNrPiBlcnJvckNhbGxiYWNrKQordm9pZCBTdG9yYWdlSW5mbzo6cXVlcnlVc2FnZUFuZFF1
b3RhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGludCBz
dG9yYWdlVHlwZSwgUGFzc1JlZlB0cjxTdG9yYWdlVXNhZ2VDYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrLCBQYXNzUmVmUHRyPFN0b3JhZ2VFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogewog
ICAgIC8vIERpc3BhdGNoaW5nIHRoZSByZXF1ZXN0IHRvIFN0b3JhZ2VRdW90YSwgYXMgdGhpcyBp
bnRlcmZhY2UgaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBTdG9yYWdlUXVvdGEuCiAgICAgU3Rv
cmFnZVF1b3RhKiBzdG9yYWdlUXVvdGEgPSBnZXRTdG9yYWdlUXVvdGEoc3RvcmFnZVR5cGUpOwpA
QCAtNjQsNyArNjQsNyBAQCB2b2lkIFN0b3JhZ2VJbmZvOjpxdWVyeVVzYWdlQW5kUXVvdGEoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udAogICAgIHN0b3JhZ2VRdW90
YS0+cXVlcnlVc2FnZUFuZFF1b3RhKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHN1Y2Nlc3NDYWxs
YmFjaywgZXJyb3JDYWxsYmFjayk7CiB9CiAKLXZvaWQgU3RvcmFnZUluZm86OnJlcXVlc3RRdW90
YShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBpbnQgc3Rv
cmFnZVR5cGUsIHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdRdW90YUluQnl0ZXMsIFBhc3NSZWZQdHI8
U3RvcmFnZVF1b3RhQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxTdG9yYWdl
RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKK3ZvaWQgU3RvcmFnZUluZm86OnJlcXVlc3RR
dW90YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBpbnQg
c3RvcmFnZVR5cGUsIHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdRdW90YUluQnl0ZXMsIFBhc3NSZWZQ
dHI8U3RvcmFnZVF1b3RhQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxTdG9y
YWdlRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKIHsKICAgICAvLyBEaXNwYXRjaGluZyB0
aGUgcmVxdWVzdCB0byBTdG9yYWdlUXVvdGEsIGFzIHRoaXMgaW50ZXJmYWNlIGlzIGRlcHJlY2F0
ZWQgaW4gZmF2b3Igb2YgU3RvcmFnZVF1b3RhLgogICAgIFN0b3JhZ2VRdW90YSogc3RvcmFnZVF1
b3RhID0gZ2V0U3RvcmFnZVF1b3RhKHN0b3JhZ2VUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcXVvdGEvU3RvcmFnZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcXVvdGEvU3RvcmFnZUluZm8uaAppbmRleCA3YzUyNjNjMzAxZGIxZGNlYWNjYjNiY2QzMWNm
ZDM2ZjRlYTU0ODA4Li40MmRhM2YyY2NhY2RkYTk2MTMzYjZlZTE1ZmY0ZmQzZDY4ODYyM2IzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VJbmZvLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9TdG9yYWdlSW5mby5oCkBAIC01Nyw5ICs1
Nyw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZUluZm8o
KSk7CiAgICAgfQogCi0gICAgdm9pZCBxdWVyeVVzYWdlQW5kUXVvdGEoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGludCBzdG9yYWdlVHlwZSwgUGFzc1JlZlB0cjxTdG9yYWdlVXNhZ2VDYWxsYmFj
az4sIFBhc3NSZWZQdHI8U3RvcmFnZUVycm9yQ2FsbGJhY2s+KTsKKyAgICB2b2lkIHF1ZXJ5VXNh
Z2VBbmRRdW90YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgaW50IHN0b3JhZ2VUeXBlLCBQYXNz
UmVmUHRyPFN0b3JhZ2VVc2FnZUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxTdG9yYWdlRXJyb3JDYWxs
YmFjaz4pOwogCi0gICAgdm9pZCByZXF1ZXN0UXVvdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGludCBzdG9yYWdlVHlwZSwgdW5zaWduZWQgbG9uZyBsb25nIG5ld1F1b3RhSW5CeXRlcywgUGFz
c1JlZlB0cjxTdG9yYWdlUXVvdGFDYWxsYmFjaz4sIFBhc3NSZWZQdHI8U3RvcmFnZUVycm9yQ2Fs
bGJhY2s+KTsKKyAgICB2b2lkIHJlcXVlc3RRdW90YShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
aW50IHN0b3JhZ2VUeXBlLCB1bnNpZ25lZCBsb25nIGxvbmcgbmV3UXVvdGFJbkJ5dGVzLCBQYXNz
UmVmUHRyPFN0b3JhZ2VRdW90YUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxTdG9yYWdlRXJyb3JDYWxs
YmFjaz4pOwogCiAgICAgflN0b3JhZ2VJbmZvKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcXVvdGEvU3RvcmFnZVF1b3RhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3F1b3RhL1N0b3JhZ2VRdW90YS5oCmluZGV4IDViOWQzOWEyZWUzOGU1YmUwMWJjNWNhZWNiYmM1
NzM1MzA4MWU4MDkuLmNjZmRlODFlNGUzOWQ0MGZiZDhmYTU4MjZhM2ExZTFlMzhlNjJjOWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvU3RvcmFnZVF1b3RhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9TdG9yYWdlUXVvdGEuaApAQCAtNTUsOSAr
NTUsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VRdW90
YSh0eXBlKSk7CiAgICAgfQogCi0gICAgdm9pZCBxdWVyeVVzYWdlQW5kUXVvdGEoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8U3RvcmFnZVVzYWdlQ2FsbGJhY2s+LCBQYXNzUmVm
UHRyPFN0b3JhZ2VFcnJvckNhbGxiYWNrPik7CisgICAgdm9pZCBxdWVyeVVzYWdlQW5kUXVvdGEo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFBhc3NSZWZQdHI8U3RvcmFnZVVzYWdlQ2FsbGJhY2s+
LCBQYXNzUmVmUHRyPFN0b3JhZ2VFcnJvckNhbGxiYWNrPik7CiAKLSAgICB2b2lkIHJlcXVlc3RR
dW90YShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgdW5zaWduZWQgbG9uZyBsb25nIG5ld1F1b3Rh
SW5CeXRlcywgUGFzc1JlZlB0cjxTdG9yYWdlUXVvdGFDYWxsYmFjaz4sIFBhc3NSZWZQdHI8U3Rv
cmFnZUVycm9yQ2FsbGJhY2s+KTsKKyAgICB2b2lkIHJlcXVlc3RRdW90YShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgdW5zaWduZWQgbG9uZyBsb25nIG5ld1F1b3RhSW5CeXRlcywgUGFzc1JlZlB0
cjxTdG9yYWdlUXVvdGFDYWxsYmFjaz4sIFBhc3NSZWZQdHI8U3RvcmFnZUVycm9yQ2FsbGJhY2s+
KTsKIAogICAgIH5TdG9yYWdlUXVvdGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcAppbmRleCBmYTY4M2NhMDhiOGU3
ZGVhN2E3MWVjNjA4NTBlNDRkYjNjOGJlOTQzLi4zMjUxZmYyZmJhMGRiMTYyYzNlMTdjZDQzMDVj
MjVlOGZjZTUwMjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lE
Qk9iamVjdFN0b3JlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIEpTVmFsdWUgSlNJ
REJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICB9CiAKICAg
ICBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UgZWM7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pT
KCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHdyYXBwZWQoKS5jcmVhdGVJbmRleChjb250ZXh0LCBu
YW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnksIGVjKS5nZXQoKSk7CisgICAgSlNWYWx1
ZSByZXN1bHQgPSB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHdyYXBwZWQoKS5jcmVhdGVJ
bmRleCgqY29udGV4dCwgbmFtZSwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aUVudHJ5LCBlYykuZ2V0
KCkpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQppbmRleCA3OWE5NTUxZTQ2YjUzOTNjYTlkM2NiZjAyMTA2Nzk4YTQ5YWJjNWNmLi4z
N2VjNDA2MjAxYmEzZWRhOWU3ZmYzM2UzYTM0ZTc5NzY2ODlhOThjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzI4Niw3
ICszMjg2LDcgQEAgc3ViIEdlbmVyYXRlQ2FsbFdpdGgKICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
O1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoIXNjcmlwdENvbnRl
eHQpXG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4iIC4g
KCRyZXR1cm5WYWx1ZSA/ICIgIiAuICRyZXR1cm5WYWx1ZSA6ICIiKSAuICI7XG4iKTsKLSAgICAg
ICAgcHVzaChAY2FsbFdpdGhBcmdzLCAic2NyaXB0Q29udGV4dCIpOworICAgICAgICBwdXNoKEBj
YWxsV2l0aEFyZ3MsICIqc2NyaXB0Q29udGV4dCIpOwogICAgIH0KICAgICBpZiAoJGZ1bmN0aW9u
IGFuZCAkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkY2FsbFdpdGgs
ICJTY3JpcHRBcmd1bWVudHMiKSkgewogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
UmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiBzY3JpcHRBcmd1bWVudHMoSW5zcGVj
dG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoc3RhdGUsICIgLiBAeyRmdW5jdGlvbi0+cGFyYW1l
dGVyc30gLiAiKSk7XG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKaW5kZXggMWE3YjBmOTcwNTA2
NTdlZTdkZDFmYjczZTRmYjNjZDMxYzZkMGRkYy4uMjFhZTNjNmMzMjUxNjE1NTdjNTUwN2U3MTVh
ZWQ5MDNmNDBmODBhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKQEAgLTc5Nyw3ICs3OTcsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1
bmN0aW9uSW1wbGVtZW50c01ldGhvZDIoRQogICAgIFRlc3RPYmoqIG9iakFyZyA9IEpTVGVzdE9i
ajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgxKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5pbXBsZW1lbnRzTWV0aG9kMihzY3JpcHRD
b250ZXh0LCBzdHJBcmcsIG9iakFyZywgZWMpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pT
KHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5pbXBs
ZW1lbnRzTWV0aG9kMigqc2NyaXB0Q29udGV4dCwgc3RyQXJnLCBvYmpBcmcsIGVjKSkpOwogCiAg
ICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwpAQCAtODYzLDcgKzg2Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QyCiAg
ICAgVGVzdE9iaiogb2JqQXJnID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50
KDEpKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBKU1ZhbHVlIHJlc3Vs
dCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihX
ZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxNZXRob2QyKGltcGwsIHNjcmlw
dENvbnRleHQsIHN0ckFyZywgb2JqQXJnLCBlYykpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRv
SlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihXZWJDb3Jl
OjpUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxNZXRob2QyKGltcGwsICpzY3JpcHRDb250
ZXh0LCBzdHJBcmcsIG9iakFyZywgZWMpKSk7CiAKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUs
IGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4
IGUwYjIxNzg3OTY2MjM5NmZmNTM4ZmEzNDY4ZDExOTU4NTcxNmFiNGQuLmUyMDVjNTIwNjc0NjAy
Y2JlMTBiNWVjZjg4ZWYwNzgyMzhjYzQ2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0xNDc4LDcgKzE0Nzgs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0
dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbgogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhz
dGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwud2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoc2NyaXB0Q29udGV4dCkpKTsKKyAgICBKU1Zh
bHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6
OmdldFB0cihpbXBsLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKCpzY3JpcHRD
b250ZXh0KSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIApAQCAt
MTUxNCw3ICsxNTE0LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBzdGEKICAgICBpZiAoIXNjcmlw
dENvbnRleHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJl
c3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0
cihpbXBsLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKHNjcmlwdENv
bnRleHQsIGVjKSkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBdHRyaWJ1dGVSYWlzZXMoKnNjcmlwdENvbnRleHQsIGVjKSkpOwogICAgIHNldERPTUV4
Y2VwdGlvbihzdGF0ZSwgZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
IH0KQEAgLTE1MzMsNyArMTUzMyw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0CiAgICAgaWYg
KCFzY3JpcHRDb250ZXh0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgSlNW
YWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RG
OjpnZXRQdHIoaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0
cmlidXRlKCpzdGF0ZSwgc2NyaXB0Q29udGV4dCkpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRv
SlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoKnN0YXRlLCAq
c2NyaXB0Q29udGV4dCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9
CiAKQEAgLTE1NTIsNyArMTU1Miw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoCiAgICAgaWYg
KCFzY3JpcHRDb250ZXh0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgSlNW
YWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RG
OjpnZXRQdHIoaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0
cmlidXRlUmFpc2VzKCpzdGF0ZSwgc2NyaXB0Q29udGV4dCwgZWMpKSk7CisgICAgSlNWYWx1ZSBy
ZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQ
dHIoaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRl
UmFpc2VzKCpzdGF0ZSwgKnNjcmlwdENvbnRleHQsIGVjKSkpOwogICAgIHNldERPTUV4Y2VwdGlv
bihzdGF0ZSwgZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAg
LTE1NzEsNyArMTU3MSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmliCiAgICAgaWYgKCFzY3Jp
cHRDb250ZXh0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSBy
ZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQ
dHIoaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNl
c0F0dHJpYnV0ZSgqc3RhdGUsIHNjcmlwdENvbnRleHQpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQg
PSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1w
bC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJp
YnV0ZSgqc3RhdGUsICpzY3JpcHRDb250ZXh0KSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKIH0KIApAQCAtMjY5Nyw3ICsyNjk3LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpX
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlMKICAgICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybjsKLSAgICBpbXBsLnNl
dFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKHNjcmlwdENvbnRleHQsIG5hdGl2
ZVZhbHVlKTsKKyAgICBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRl
KCpzY3JpcHRDb250ZXh0LCBuYXRpdmVWYWx1ZSk7CiB9CiAKIApAQCAtMjczNCw3ICsyNzM0LDcg
QEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJh
aXNlcyhFeGVjU3RhdGUqIHN0YXRlLCBFbmMKICAgICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAg
IHJldHVybjsKLSAgICBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRl
UmFpc2VzKHNjcmlwdENvbnRleHQsIG5hdGl2ZVZhbHVlKTsKKyAgICBpbXBsLnNldFdpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKCpzY3JpcHRDb250ZXh0LCBuYXRpdmVW
YWx1ZSk7CiB9CiAKIApAQCAtMjc1NCw3ICsyNzU0LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSog
c3QKICAgICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
c3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
ICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybjsKLSAgICBpbXBsLnNldFdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoKnN0YXRlLCBz
Y3JpcHRDb250ZXh0LCBuYXRpdmVWYWx1ZSk7CisgICAgaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKCpzdGF0ZSwgKnNjcmlwdENvbnRleHQs
IG5hdGl2ZVZhbHVlKTsKIH0KIAogCkBAIC0yNzc0LDcgKzI3NzQsNyBAQCB2b2lkIHNldEpTVGVz
dE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlz
ZXMoRXhlY1N0YQogICAgIGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJuOwotICAgIGlt
cGwuc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJh
aXNlcygqc3RhdGUsIHNjcmlwdENvbnRleHQsIG5hdGl2ZVZhbHVlKTsKKyAgICBpbXBsLnNldFdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoKnN0
YXRlLCAqc2NyaXB0Q29udGV4dCwgbmF0aXZlVmFsdWUpOwogfQogCiAKQEAgLTI3OTQsNyArMjc5
NCw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoRXhlCiAgICAgYXV0byogc2NyaXB0Q29udGV4dCA9
IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQogICAg
ICAgICByZXR1cm47Ci0gICAgaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSgqc3RhdGUsIHNjcmlwdENvbnRleHQsIG5hdGl2
ZVZhbHVlKTsKKyAgICBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKCpzdGF0ZSwgKnNjcmlwdENvbnRleHQsIG5hdGl2ZVZh
bHVlKTsKIH0KIAogCkBAIC0zNzA0LDcgKzM3MDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eAogICAgIGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihz
dGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwog
ICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLSAgICBpbXBsLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0KHNjcmlw
dENvbnRleHQpOworICAgIGltcGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKnNjcmlwdENv
bnRleHQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
QEAgLTM3MTksNyArMzcxOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4CiAgICAgYXV0byog
c2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3Jp
cHRDb250ZXh0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwotICAgIGltcGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZSgqc3Rh
dGUsIHNjcmlwdENvbnRleHQpOworICAgIGltcGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZSgqc3RhdGUsICpzY3JpcHRDb250ZXh0KTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC0zNzM1LDcgKzM3MzUsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleAogICAgIGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRv
SlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24oKnN0YXRl
LCBzY3JpcHRDb250ZXh0LCBlYykpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUs
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24oKnN0YXRlLCAqc2NyaXB0
Q29udGV4dCwgZWMpKSk7CiAKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKQEAgLTM3NTQsNyArMzc1NCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25X
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4CiAgICAgYXV0byogc2NyaXB0Q29udGV4dCA9IGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIEpTVmFsdWUgcmVzdWx0
ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGlt
cGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXMoKnN0
YXRlLCBzY3JpcHRDb250ZXh0KSkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwg
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwud2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXMoKnN0YXRlLCAqc2NyaXB0Q29u
dGV4dCkpKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVSZWFkZXJTeW5jLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlclN5
bmMuY3BwCmluZGV4IGFlYzQwZjk5OWM3M2ViZWE1NmZhZmNjNzY2M2ZhZTYyODMxZDdhOWQuLjUx
ZmY0MTM0OGZjZDQ5OGMwMjU4NDU4ZTQxNDYwZmI4MWFjOTU5YjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlclN5bmMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZVJlYWRlclN5bmMuY3BwCkBAIC00NCw3ICs0NCw3IEBAIEZpbGVSZWFkZXJT
eW5jOjpGaWxlUmVhZGVyU3luYygpCiB7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gRmlsZVJl
YWRlclN5bmM6OnJlYWRBc0FycmF5QnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIEJsb2IqIGJsb2IsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRy
PEFycmF5QnVmZmVyPiBGaWxlUmVhZGVyU3luYzo6cmVhZEFzQXJyYXlCdWZmZXIoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgQmxvYiogYmxvYiwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFibG9iKSB7CiAgICAgICAgIGVjID0gTk9UX0ZPVU5E
X0VSUjsKQEAgLTU3LDcgKzU3LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBGaWxlUmVhZGVyU3lu
Yzo6cmVhZEFzQXJyYXlCdWZmZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2MKICAgICByZXR1
cm4gbG9hZGVyLmFycmF5QnVmZmVyUmVzdWx0KCk7CiB9CiAKLVN0cmluZyBGaWxlUmVhZGVyU3lu
Yzo6cmVhZEFzQmluYXJ5U3RyaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIEJsb2IqIGJsb2IsIEV4Y2VwdGlvbkNvZGUmIGVjKQorU3RyaW5nIEZpbGVS
ZWFkZXJTeW5jOjpyZWFkQXNCaW5hcnlTdHJpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwgQmxvYiogYmxvYiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAg
ICAgaWYgKCFibG9iKSB7CiAgICAgICAgIGVjID0gTk9UX0ZPVU5EX0VSUjsKQEAgLTY5LDcgKzY5
LDcgQEAgU3RyaW5nIEZpbGVSZWFkZXJTeW5jOjpyZWFkQXNCaW5hcnlTdHJpbmcoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW8KICAgICByZXR1cm4gbG9hZGVyLnN0cmluZ1Jl
c3VsdCgpOwogfQogCi1TdHJpbmcgRmlsZVJlYWRlclN5bmM6OnJlYWRBc1RleHQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgQmxvYiogYmxvYiwgY29uc3Qg
U3RyaW5nJiBlbmNvZGluZywgRXhjZXB0aW9uQ29kZSYgZWMpCitTdHJpbmcgRmlsZVJlYWRlclN5
bmM6OnJlYWRBc1RleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgQmxvYiogYmxvYiwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAgICAgaWYgKCFibG9iKSB7CiAgICAgICAgIGVjID0gTk9UX0ZPVU5EX0VSUjsKQEAg
LTgyLDcgKzgyLDcgQEAgU3RyaW5nIEZpbGVSZWFkZXJTeW5jOjpyZWFkQXNUZXh0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICByZXR1cm4gbG9hZGVy
LnN0cmluZ1Jlc3VsdCgpOwogfQogCi1TdHJpbmcgRmlsZVJlYWRlclN5bmM6OnJlYWRBc0RhdGFV
UkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgQmxvYiog
YmxvYiwgRXhjZXB0aW9uQ29kZSYgZWMpCitTdHJpbmcgRmlsZVJlYWRlclN5bmM6OnJlYWRBc0Rh
dGFVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgQmxv
YiogYmxvYiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFibG9iKSB7CiAgICAgICAg
IGVjID0gTk9UX0ZPVU5EX0VSUjsKQEAgLTk1LDkgKzk1LDkgQEAgU3RyaW5nIEZpbGVSZWFkZXJT
eW5jOjpyZWFkQXNEYXRhVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnQKICAgICByZXR1cm4gbG9hZGVyLnN0cmluZ1Jlc3VsdCgpOwogfQogCi12b2lkIEZpbGVS
ZWFkZXJTeW5jOjpzdGFydExvYWRpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgRmlsZVJlYWRlckxvYWRlciYgbG9hZGVyLCBCbG9iKiBibG9iLCBFeGNl
cHRpb25Db2RlJiBlYykKK3ZvaWQgRmlsZVJlYWRlclN5bmM6OnN0YXJ0TG9hZGluZyhTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBGaWxlUmVhZGVyTG9hZGVy
JiBsb2FkZXIsIEJsb2IqIGJsb2IsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGxvYWRlci5z
dGFydChzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBibG9iKTsKKyAgICBsb2FkZXIuc3RhcnQoJnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIGJsb2IpOwogICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6RXJy
b3JDb2RlVG9FeGNlcHRpb25Db2RlKGxvYWRlci5lcnJvckNvZGUoKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlclN5bmMuaCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVJlYWRlclN5bmMuaAppbmRleCBiYTM1ZTY5MTBkMWNjMDNjOWQ4Zjk3
ZTRiZDYxYmRhYjQ3ZjhkM2U4Li45Njg0MTU4N2QxZDU5YmY1YWY3NDE3YTFhZjRjMjdkMjFhNGZj
Zjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyU3luYy5oCkBAIC01NiwxOSAr
NTYsMTkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+RmlsZVJlYWRlclN5bmMoKSB7IH0KIAot
ICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiByZWFkQXNBcnJheUJ1ZmZlcihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgQmxvYiosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBTdHJpbmcgcmVhZEFz
QmluYXJ5U3RyaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbG9iKiwgRXhjZXB0aW9uQ29k
ZSYpOwotICAgIFN0cmluZyByZWFkQXNUZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIEJsb2IqIGJsb2IsIEV4Y2VwdGlvbkNvZGUmIGVjKQorICAgIFJl
ZlB0cjxKU0M6OkFycmF5QnVmZmVyPiByZWFkQXNBcnJheUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgQmxvYiosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBTdHJpbmcgcmVhZEFzQmluYXJ5
U3RyaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBCbG9iKiwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIFN0cmluZyByZWFkQXNUZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIEJsb2IqIGJsb2IsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHJlYWRBc1RleHQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgYmxvYiwgIiIsIGVj
KTsKICAgICB9Ci0gICAgU3RyaW5nIHJlYWRBc1RleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEJsb2IqLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgU3Ry
aW5nIHJlYWRBc0RhdGFVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsb2IqLCBFeGNlcHRp
b25Db2RlJik7CisgICAgU3RyaW5nIHJlYWRBc1RleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IEJsb2IqLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBFeGNlcHRpb25Db2RlJik7CisgICAgU3Ry
aW5nIHJlYWRBc0RhdGFVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEJsb2IqLCBFeGNlcHRp
b25Db2RlJik7CiAKIHByaXZhdGU6CiAgICAgRmlsZVJlYWRlclN5bmMoKTsKIAotICAgIHZvaWQg
c3RhcnRMb2FkaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBGaWxlUmVhZGVyTG9hZGVyJiwg
QmxvYiosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHN0YXJ0TG9hZGluZyhTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgRmlsZVJlYWRlckxvYWRlciYsIEJsb2IqLCBFeGNlcHRpb25Db2RlJik7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0RPTVVSTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAKaW5kZXgg
MWFhNTVhODM5OTZkZjUyMDkxZTEzODU0OTczMmMzMDQ5ODQ1MjAzYS4uNjExYjdhODIzYWYyODdm
Njg1N2RiN2I4MjZhYWYzYWIyN2VjM2QwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9ET01VUkwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcApAQCAtOTAs
MzcgKzkwLDM0IEBAIHZvaWQgRE9NVVJMOjpzZXRIcmVmKGNvbnN0IFN0cmluZyYgdXJsLCBFeGNl
cHRpb25Db2RlJiBlYykKICAgICAgICAgZWMgPSBUeXBlRXJyb3I7CiB9CiAKLVN0cmluZyBET01V
Ukw6OmNyZWF0ZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBCbG9iKiBibG9iKQorU3RyaW5nIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEJsb2IqIGJsb2Ip
CiB7Ci0gICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0IHx8ICFibG9iKQorICAgIGlmICgh
YmxvYikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIHJldHVybiBjcmVhdGVQdWJsaWNV
Ukwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgYmxvYik7CiB9CiAKLVN0cmluZyBET01VUkw6OmNy
ZWF0ZVB1YmxpY1VSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBVUkxSZWdpc3RyYWJsZSogcmVnaXN0cmFibGUpCitTdHJpbmcgRE9NVVJMOjpjcmVhdGVQ
dWJsaWNVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
VVJMUmVnaXN0cmFibGUqIHJlZ2lzdHJhYmxlKQogewotICAgIFVSTCBwdWJsaWNVUkwgPSBCbG9i
VVJMOjpjcmVhdGVQdWJsaWNVUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmln
aW4oKSk7CisgICAgVVJMIHB1YmxpY1VSTCA9IEJsb2JVUkw6OmNyZWF0ZVB1YmxpY1VSTChzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIGlmIChwdWJsaWNVUkwu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5wdWJsaWNVUkxNYW5hZ2VyKCkucmVnaXN0ZXJVUkwoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgcHVibGljVVJMLCByZWdpc3RyYWJsZSk7CisgICAg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC5wdWJsaWNVUkxNYW5hZ2VyKCkucmVnaXN0ZXJVUkwoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5zZWN1cml0eU9yaWdpbigpLCBwdWJsaWNVUkwsIHJlZ2lzdHJh
YmxlKTsKIAogICAgIHJldHVybiBwdWJsaWNVUkwuc3RyaW5nKCk7CiB9CiAKLXZvaWQgRE9NVVJM
OjpyZXZva2VPYmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCit2b2lkIERPTVVSTDo6cmV2b2tlT2Jq
ZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nKQogewotICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgVVJMIHVybChVUkwoKSwgdXJsU3RyaW5nKTsKICAg
ICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCh1cmwpOwogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJ
T05JTkcpCi0gICAgcmVxdWVzdC5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihzY3JpcHRFeGVj
dXRpb25Db250ZXh0LT50b3BPcmlnaW4oKS0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSk7Cisg
ICAgcmVxdWVzdC5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihzY3JpcHRFeGVjdXRpb25Db250
ZXh0LnRvcE9yaWdpbigpLT5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpKTsKICNlbmRpZgotICAg
IE1lbW9yeUNhY2hlOjpyZW1vdmVSZXF1ZXN0RnJvbVNlc3Npb25DYWNoZXMoKnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIHJlcXVlc3QpOworICAgIE1lbW9yeUNhY2hlOjpyZW1vdmVSZXF1ZXN0RnJv
bVNlc3Npb25DYWNoZXMoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgcmVxdWVzdCk7CiAKLSAgICBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5wdWJsaWNVUkxNYW5hZ2VyKCkucmV2b2tlKHVybCk7Cisg
ICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5wdWJsaWNVUkxNYW5hZ2VyKCkucmV2b2tlKHVybCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRE9NVVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCmluZGV4IGJjMzA4
NDk2YWU2ZTQ5YTMxYzc3NTYxMDYxMmE4MjJiODU2NjUyMWYuLjM4MmNkYmJhOTdmN2Q1NTI1Mzgy
MGQ1MmQwMjY5ZDQ1N2JiYTA4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9N
VVJMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaApAQCAtNTEsMTAgKzUxLDEw
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhyZWYoY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHZv
aWQgc2V0SHJlZihjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBzdGF0aWMg
U3RyaW5nIGNyZWF0ZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxvYiopOwot
ICAgIHN0YXRpYyB2b2lkIHJldm9rZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIFN0cmluZyBjcmVhdGVPYmplY3RVUkwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIEJsb2IqKTsKKyAgICBzdGF0aWMgdm9pZCByZXZva2VPYmplY3RV
UkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYpOwogCi0gICAgc3RhdGlj
IFN0cmluZyBjcmVhdGVQdWJsaWNVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFVSTFJlZ2lz
dHJhYmxlKik7CisgICAgc3RhdGljIFN0cmluZyBjcmVhdGVQdWJsaWNVUkwoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIFVSTFJlZ2lzdHJhYmxlKik7CiAKIHByaXZhdGU6CiAgICAgRE9NVVJMKGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGJhc2UsIEV4Y2VwdGlvbkNvZGUmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDUxN2NmNmUxZjdjMWI1
M2IzYWU4OTI1ODUwNTVhZjBlMjgyM2JlMDUuLjczYzM1ZjE3M2I2MzBiMzNiOWUxOWQ3YThjYTlk
YjRmZjg5ZjczNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApA
QCAtOTA0LDcgKzkwNCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U3JjKGNvbnN0IFN0
cmluZyYgdXJsKQogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLXZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6c2V0U3JjT2JqZWN0KE1lZGlhU3RyZWFtKiBtZWRpYVN0cmVhbSkKK3ZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c2V0U3JjT2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIE1lZGlhU3RyZWFtKiBtZWRpYVN0cmVhbSkKIHsKICAgICAvLyBGSVhNRTogU2V0dGluZyB0
aGUgc3JjT2JqZWN0IGF0dHJpYnV0ZSBtYXkgY2F1c2Ugb3RoZXIgY2hhbmdlcyB0byB0aGUgbWVk
aWEgZWxlbWVudCdzIGludGVybmFsIHN0YXRlOgogICAgIC8vIFNwZWNpZmljYWxseSwgaWYgc3Jj
T2JqZWN0IGlzIHNwZWNpZmllZCwgdGhlIFVBIG11c3QgdXNlIGl0IGFzIHRoZSBzb3VyY2Ugb2Yg
bWVkaWEsIGV2ZW4gaWYgdGhlIHNyYwpAQCAtOTE0LDcgKzkxNCw3IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6c2V0U3JjT2JqZWN0KE1lZGlhU3RyZWFtKiBtZWRpYVN0cmVhbSkKICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0ODk2CiAKICAgICBtX21l
ZGlhU3RyZWFtU3JjT2JqZWN0ID0gbWVkaWFTdHJlYW07Ci0gICAgc2V0U3JjKERPTVVSTDo6Y3Jl
YXRlUHVibGljVVJMKEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBt
ZWRpYVN0cmVhbSkpOworICAgIHNldFNyYyhET01VUkw6OmNyZWF0ZVB1YmxpY1VSTChjb250ZXh0
LCBtZWRpYVN0cmVhbSkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgKaW5kZXggOWEwOWJhMmY1OGM5YjZhMTg4ZjhjMjZjMTkzN2FjY2M0NjhhZjYzOS4u
MGEzNWUxY2MwYjc0ODgyMTQxNjYyM2RkNTk4YWZlN2IyZTliOTU3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTk2LDYgKzk2LDcgQEAgdHlwZWRlZiBWZWN0b3I8
Q3VlSW50ZXJ2YWw+IEN1ZUxpc3Q7CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogY2xhc3Mg
TWVkaWFTdHJlYW07CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogI2VuZGlmCiAKIGNs
YXNzIEhUTUxNZWRpYUVsZW1lbnQKQEAgLTE1Niw3ICsxNTcsNyBAQCBwdWJsaWM6CiAKICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQogICAgIE1lZGlhU3RyZWFtKiBzcmNPYmplY3QoKSBjb25zdCB7
IHJldHVybiBtX21lZGlhU3RyZWFtU3JjT2JqZWN0LmdldCgpOyB9Ci0gICAgdm9pZCBzZXRTcmNP
YmplY3QoTWVkaWFTdHJlYW0qKTsKKyAgICB2b2lkIHNldFNyY09iamVjdChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgTWVkaWFTdHJlYW0qKTsKICNlbmRpZgogCiAvLyBuZXR3b3JrIHN0YXRlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50
LmNwcAppbmRleCA0ZThjMTgwNjE0MGRmYzAwMjFjOGQ5MGE2NzJiMjhiYzVmZDFhMzAxLi5kMjli
NTI3MmNhZjVhZWJhZWNhYTkxMDMyOTJiMTVlMzEwYjJkYWUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTIwNSw3
ICsyMDUsMTMgQEAgdm9pZCBFeGVjdXRhYmxlV2l0aERhdGFiYXNlOjpzdGFydChJREJGYWN0b3J5
KiBpZGJGYWN0b3J5LCBTZWN1cml0eU9yaWdpbiosIGNvbnMKIHsKICAgICBSZWY8T3BlbkRhdGFi
YXNlQ2FsbGJhY2s+IGNhbGxiYWNrID0gT3BlbkRhdGFiYXNlQ2FsbGJhY2s6OmNyZWF0ZSh0aGlz
KTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8SURCT3BlbkRCUmVxdWVz
dD4gaWRiT3BlbkRCUmVxdWVzdCA9IGlkYkZhY3RvcnktPm9wZW4oY29udGV4dCgpLCBkYXRhYmFz
ZU5hbWUsIGVjKTsKKworICAgIGlmICghY29udGV4dCgpKSB7CisgICAgICAgIHJlcXVlc3RDYWxs
YmFjaygpLnNlbmRGYWlsdXJlKCJDb3VsZCBub3Qgb3BlbiBkYXRhYmFzZS4iKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIFJlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBpZGJPcGVuREJS
ZXF1ZXN0ID0gaWRiRmFjdG9yeS0+b3BlbigqY29udGV4dCgpLCBkYXRhYmFzZU5hbWUsIGVjKTsK
ICAgICBpZiAoZWMpIHsKICAgICAgICAgcmVxdWVzdENhbGxiYWNrKCkuc2VuZEZhaWx1cmUoIkNv
dWxkIG5vdCBvcGVuIGRhdGFiYXNlLiIpOwogICAgICAgICByZXR1cm47CkBAIC01MTMsNyArNTE5
LDcgQEAgdm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGFiYXNlTmFtZXMo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb24KICAgICAgICAgcmV0dXJuOwogCiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPElEQlJlcXVlc3Q+IGlkYlJlcXVlc3QgPSBp
ZGJGYWN0b3J5LT5nZXREYXRhYmFzZU5hbWVzKGRvY3VtZW50LCBlYyk7CisgICAgUmVmUHRyPElE
QlJlcXVlc3Q+IGlkYlJlcXVlc3QgPSBpZGJGYWN0b3J5LT5nZXREYXRhYmFzZU5hbWVzKCpkb2N1
bWVudCwgZWMpOwogICAgIGlmICghaWRiUmVxdWVzdCB8fCBlYykgewogICAgICAgICByZXF1ZXN0
Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJDb3VsZCBub3Qgb2J0YWluIGRhdGFiYXNlIG5hbWVzLiIp
OwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCAyZTQzOThkNTEx
MWNhMjlmZjg2Y2YzZDRjOTg4ZTExNDBhY2M3MmNiLi5iMzRmMzU5YjYxYWM2ZmMzZTg2N2FmNmU2
ZTg2NDdkN2MyNTIwMmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKQEAgLTE2MSw4ICsxNjEs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBFbGVtZW50KiBmcmFtZUVsZW1lbnQo
KSBjb25zdDsKIAogICAgICAgICB2b2lkIGZvY3VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqID0g
bnVsbHB0cik7CisgICAgICAgIHZvaWQgZm9jdXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkgeyBmb2N1cygmY29udGV4dCk7IH0KICAgICAgICAgdm9pZCBibHVyKCk7CiAgICAgICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xvc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogPSBudWxs
cHRyKTsKKyAgICAgICAgdm9pZCBjbG9zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSB7IGNsb3NlKCZjb250ZXh0KTsgfQogICAgICAgICB2b2lkIHByaW50KCk7CiAgICAgICAgIHZv
aWQgc3RvcCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5oCmluZGV4IGFlMzdmYzM4Nzg4ZmM3YzczM2Q3
YzhmYTM2Y2UxODRjODUzZWU4NmEuLjVhZTUwYmU2M2EyOWEzODYyOTkzNWNhNmFlNTU4NTJiM2Y4
YmQ1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5oCkBAIC01MSw2ICs1MSwxMCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBmb3J3YXJkKCk7CiAgICAgdm9pZCBnbyhpbnQgZGlzdGFuY2UpOwogCisgICAgdm9p
ZCBiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsgYmFjaygmY29udGV4dCk7
IH0KKyAgICB2b2lkIGZvcndhcmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeyBm
b3J3YXJkKCZjb250ZXh0KTsgfQorICAgIHZvaWQgZ28oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgaW50IGRpc3RhbmNlKSB7IGdvKCZjb250ZXh0LCBkaXN0YW5jZSk7IH0KKwogICAg
IHZvaWQgYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgdm9pZCBmb3J3YXJkKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICB2b2lkIGdvKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBpbnQgZGlzdGFuY2UpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273693</attachid>
            <date>2016-03-11 00:08:21 -0800</date>
            <delta_ts>2016-03-11 01:44:43 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-155297-20160311090807.patch</filename>
            <type>text/plain</type>
            <size>134995</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGNlNDAxNzdhMTAwMjgy
Y2I4NTExYTkyMzgyMWY3Yzk2NDBiMWI5Zi4uMjE2OWY4NmM3OGJiNjJmZTQxYzhlZTBmODliN2Yx
MmE3N2FjOWM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2NyBAQAorMjAxNi0wMy0xMSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIFtDYWxs
V2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBzaG91bGQgcGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0IHRvIHRoZSBpbXBsZW1lbnRhdGlvbiBieSByZWZlcmVuY2UKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTI5NworCisgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIENoYW5naW5nIHRoZSBiaW5kaW5nIGdlbmVy
YXRvciB0byBwYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgYnkgcmVmZXJlbmNlLgorICAgICAg
ICBVcGRhdGluZyBET00gY2xhc3NlcyBhY2NvcmRpbmdseS4KKworICAgICAgICBDb3ZlcmVkIGJ5
IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpNZWRpYUtleVNlc3Npb24p
OgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmg6Cisg
ICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFLZXlzOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVxdWVzdDo6Y2xvbmUpOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0Lmg6CisgICAgICAgICogTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6
OmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnJlZGlyZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmNsb25lKToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJD
dXJzb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6Y29udGludWVGdW5jdGlvbik6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCS2V5UmFuZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UmFuZ2U6Omxvd2VyVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UmFuZ2U6OnVwcGVyVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCS2V5UmFuZ2U6Om9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5
UmFuZ2U6Omxvd2VyQm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UmFuZ2U6OnVwcGVy
Qm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UmFuZ2U6OmJvdW5kKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5oOgorICAgICAgICAoV2ViQ29yZTo6SURC
S2V5UmFuZ2U6Omxvd2VyQm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UmFuZ2U6OnVw
cGVyQm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UmFuZ2U6OmJvdW5kKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
T3BlbkRCUmVxdWVzdDo6SURCT3BlbkRCUmVxdWVzdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QlJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6SURCUmVxdWVzdCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDdXJzb3JJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQkNsaWVudDo6SURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkNsaWVudDo6SURCQ3Vyc29yOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkN1cnNvckltcGwuaDoKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCRmFjdG9yeUltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpzaG91bGRUaHJvd1NlY3VyaXR5RXhjZXB0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkNsaWVudDo6SURCRmFjdG9yeTo6Z2V0RGF0YWJhc2VOYW1lcyk6CisgICAgICAg
IChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkZhY3Rvcnk6Om9wZW4pOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpJREJGYWN0b3J5OjpvcGVuSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpJREJGYWN0b3J5OjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJDbGllbnQ6OklEQkZhY3Rvcnk6OmNtcCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L0lEQkZhY3RvcnlJbXBsLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L0lEQkluZGV4SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6
OklEQkluZGV4OjpJREJJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQklu
ZGV4OjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCSW5kZXg6
OmNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCSW5kZXg6Om9wZW5LZXlD
dXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJJbmRleDo6Z2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCSW5kZXg6OmdldEtleSk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkluZGV4SW1wbC5oOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPYmplY3RTdG9yZUltcGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQ2xpZW50OjpJREJPYmplY3RTdG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkNsaWVudDo6SURCT2JqZWN0U3RvcmU6OklEQk9iamVjdFN0b3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkNsaWVudDo6SURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJPYmplY3RTdG9yZTo6Z2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkNsaWVudDo6SURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCT2JqZWN0U3RvcmU6OmRvRGVsZXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCT2JqZWN0U3RvcmU6Om1vZGVybkRlbGV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQk9iamVjdFN0b3JlOjpjbGVhcik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQk9iamVjdFN0b3JlOjppbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQk9iamVjdFN0b3JlOjpjb3VudCk6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9iamVjdFN0b3JlSW1wbC5oOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPcGVuREJSZXF1ZXN0SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQk9wZW5EQlJlcXVlc3Q6OmNyZWF0ZURlbGV0
ZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJPcGVuREJSZXF1ZXN0
OjpjcmVhdGVPcGVuUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQk9w
ZW5EQlJlcXVlc3Q6OklEQk9wZW5EQlJlcXVlc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9JREJPcGVuREJSZXF1ZXN0SW1wbC5oOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJD
bGllbnQ6OklEQlJlcXVlc3Q6OklEQlJlcXVlc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xp
ZW50OjpJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
Q2xpZW50OjpJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQ2xpZW50OjpJREJUcmFuc2FjdGlvbjo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzb3VyY2UvRE9NVVJMTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NVVJMTWVkaWFTb3VyY2U6OmNyZWF0ZU9iamVjdFVSTCk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXNvdXJjZS9ET01VUkxNZWRpYVNvdXJjZS5oOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vRE9NVVJMTWVkaWFTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9N
VVJMTWVkaWFTdHJlYW06OmNyZWF0ZU9iamVjdFVSTCk6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9ET01VUkxNZWRpYVN0cmVhbS5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vSFRNTE1lZGlhRWxlbWVudE1lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnRNZWRpYVN0cmVhbTo6c2V0U3JjT2JqZWN0KToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL0hUTUxNZWRpYUVsZW1lbnRNZWRpYVN0cmVhbS5oOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vSFRNTE1lZGlhRWxlbWVudE1lZGlhU3RyZWFtLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6
cGVybWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OnJlcXVlc3RQZXJt
aXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmg6
CisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DZW50ZXI6OmNyZWF0ZU5vdGlmaWNhdGlv
bik6CisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5o
OgorICAgICAgICAqIE1vZHVsZXMvcXVvdGEvU3RvcmFnZUluZm8uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3RvcmFnZUluZm86OnF1ZXJ5VXNhZ2VBbmRRdW90YSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdG9yYWdlSW5mbzo6cmVxdWVzdFF1b3RhKToKKyAgICAgICAgKiBNb2R1bGVzL3F1b3RhL1N0
b3JhZ2VJbmZvLmg6CisgICAgICAgICogTW9kdWxlcy9xdW90YS9TdG9yYWdlUXVvdGEuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlQ2FsbFdp
dGgpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25J
bXBsZW1lbnRzTWV0aG9kMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VQcm90
b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDIpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVXaXRoU3BhY2VzQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpF
eGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25X
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlcyk6CisgICAg
ICAgICogZmlsZWFwaS9GaWxlUmVhZGVyU3luYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
UmVhZGVyU3luYzo6cmVhZEFzQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJl
YWRlclN5bmM6OnJlYWRBc0JpbmFyeVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVh
ZGVyU3luYzo6cmVhZEFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyU3luYzo6
cmVhZEFzRGF0YVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyU3luYzo6c3RhcnRM
b2FkaW5nKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmg6CisgICAgICAgIChX
ZWJDb3JlOjpGaWxlUmVhZGVyU3luYzo6cmVhZEFzVGV4dCk6CisgICAgICAgICogaHRtbC9ET01V
UkwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpjcmVhdGVPYmplY3RVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NVVJMOjpjcmVhdGVQdWJsaWNVUkwpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NVVJMOjpyZXZva2VPYmplY3RVUkwpOgorICAgICAgICAqIGh0bWwvRE9NVVJMLmg6Cisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnNldFNyY09iamVjdCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0
YWJhc2VOYW1lcyk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdl
L0hpc3RvcnkuaDoKKyAgICAgICAgKFdlYkNvcmU6Okhpc3Rvcnk6OmJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6SGlzdG9yeTo6Zm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Ojpn
byk6CisKIDIwMTYtMDMtMTAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHVEtdIEZpeCByZW5kZXJpbmcgb2Ygc2xpZGVyIGlucHV0IGVsZW1l
bnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggZGMwODYxMDVjYjQzYjRjMTRhMmEwMmI4MTMxZmY5
NzMxYWVjNmFlMy4uNDE2MjUwNWE4OWM0ODUxZTZmZmQxNTBiMDJlYjYyYTdlOGIzZTQzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNl
c3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTZXNzaW9uLmNwcApAQCAtNDAsMTUgKzQwLDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUmVmPE1lZGlhS2V5U2Vzc2lvbj4gTWVkaWFLZXlTZXNzaW9uOjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTWVkaWFLZXlzKiBrZXlzLCBjb25zdCBTdHJpbmcm
IGtleVN5c3RlbSkKK1JlZjxNZWRpYUtleVNlc3Npb24+IE1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIE1lZGlhS2V5cyoga2V5cywgY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0pCiB7CiAgICAgYXV0byBzZXNzaW9uID0gYWRvcHRSZWYoKm5ldyBN
ZWRpYUtleVNlc3Npb24oY29udGV4dCwga2V5cywga2V5U3lzdGVtKSk7CiAgICAgc2Vzc2lvbi0+
c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHNlc3Npb247CiB9CiAKLU1lZGlhS2V5U2Vz
c2lvbjo6TWVkaWFLZXlTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE1l
ZGlhS2V5cyoga2V5cywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCi0gICAgOiBBY3RpdmVET01P
YmplY3QoY29udGV4dCkKK01lZGlhS2V5U2Vzc2lvbjo6TWVkaWFLZXlTZXNzaW9uKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIE1lZGlhS2V5cyoga2V5cywgY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0pCisgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBtX2tleXMo
a2V5cykKICAgICAsIG1fa2V5U3lzdGVtKGtleVN5c3RlbSkKICAgICAsIG1fYXN5bmNFdmVudFF1
ZXVlKCp0aGlzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKaW5kZXggM2E1YTQ3NTFkMTUyMTY2ZTk1ZmQzOTYzNzNj
ZTNhZjY4Mjg5ZTAxMS4uMWQwODVlZGZiNTk1MTdlMDZjYTU0NjM3MDZhNTU1NGJlMTcyN2QzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U2Vzc2lvbi5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIE1lZGlhS2V5czsKIAogY2xh
c3MgTWVkaWFLZXlTZXNzaW9uIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFLZXlTZXNz
aW9uPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBBY3RpdmVET01P
YmplY3QsIHB1YmxpYyBDRE1TZXNzaW9uQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PE1lZGlhS2V5U2Vzc2lvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNZWRpYUtl
eXMqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CisgICAgc3RhdGljIFJlZjxNZWRpYUtleVNl
c3Npb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgTWVkaWFLZXlzKiwgY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0pOwogICAgIH5NZWRpYUtleVNlc3Npb24oKTsKIAogICAgIGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgeyByZXR1cm4gbV9rZXlTeXN0ZW07IH0KQEAgLTgw
LDcgKzgwLDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Qg
b3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKLSAgICBNZWRpYUtleVNlc3Npb24oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIE1lZGlhS2V5cyosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKKyAgICBN
ZWRpYUtleVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIE1lZGlhS2V5cyosIGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtKTsKICAgICB2b2lkIGtleVJlcXVlc3RUaW1lckZpcmVkKCk7CiAg
ICAgdm9pZCBhZGRLZXlUaW1lckZpcmVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcAppbmRleCA0Y2UwOTc1MTZjN2NhOWU4
NDU4YzAyZmRkMDczNWMxZjllMTgwMGFiLi5kZjUxMjcwMTczZjg4MjRmMTFlYzA4NWM1Zjg1YWIz
OGM3M2VlNmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleXMuY3BwCkBAIC04Myw3ICs4Myw3IEBAIE1lZGlhS2V5czo6fk1lZGlhS2V5
cygpCiAgICAgfQogfQogCi1SZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBNZWRpYUtleXM6OmNyZWF0
ZVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB0
eXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8TWVk
aWFLZXlTZXNzaW9uPiBNZWRpYUtleXM6OmNyZWF0ZVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB0eXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgLy8gRnJvbSA8aHR0cDovL3d3dy53My5vcmcvVFIv
MjAxNC9XRC1lbmNyeXB0ZWQtbWVkaWEtMjAxNDAyMTgvI2RvbS1jcmVhdGVzZXNzaW9uPjoKICAg
ICAvLyBUaGUgY3JlYXRlU2Vzc2lvbih0eXBlLCBpbml0RGF0YSkgbWV0aG9kIG11c3QgcnVuIHRo
ZSBmb2xsb3dpbmcgc3RlcHM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuaAppbmRleCAwZjZkMzJhZTM0MTI0ZDQ1N2MxZDdlZTQzNTUzYTY1
MWFiYjljMDJmLi45NjJkODllMTVmZjM3OTkwNzcyMTkyYmMxMTg1YzE4NDJiZDY1ZTM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgK
QEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFLZXlzPiBj
cmVhdGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0
dWFsIH5NZWRpYUtleXMoKTsKIAotICAgIFJlZlB0cjxNZWRpYUtleVNlc3Npb24+IGNyZWF0ZVNl
c3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVp
bnQ4QXJyYXkqIGluaXREYXRhLCBFeGNlcHRpb25Db2RlJik7CisgICAgUmVmUHRyPE1lZGlhS2V5
U2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEsIEV4Y2VwdGlvbkNvZGUmKTsKIAog
ICAgIHN0YXRpYyBib29sIGlzVHlwZVN1cHBvcnRlZChjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXF1ZXN0LmNwcAppbmRleCAwMjIzZDYyZmE0MzQ3ODg1M2RlZGJhM2FkOGJkN2M3
NzhmNzY5Zjg4Li4xMWIzZDk0Zjk5YWJhMDQwOTg3Nzk0MzM3Mjc4ZTVjNzhhZTAxYmFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCkBAIC00MzUs
NyArNDM1LDcgQEAgU3RyaW5nIEZldGNoUmVxdWVzdDo6cmVkaXJlY3QoKSBjb25zdAogICAgIHJl
dHVybiBTdHJpbmcoKTsKIH0KIAotUmVmUHRyPEZldGNoUmVxdWVzdD4gRmV0Y2hSZXF1ZXN0Ojpj
bG9uZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykK
K1JlZlB0cjxGZXRjaFJlcXVlc3Q+IEZldGNoUmVxdWVzdDo6Y2xvbmUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKGlzRGlzdHVy
YmVkKCkpIHsKICAgICAgICAgZWMgPSBUeXBlRXJyb3I7CkBAIC00NDMsNyArNDQzLDcgQEAgUmVm
UHRyPEZldGNoUmVxdWVzdD4gRmV0Y2hSZXF1ZXN0OjpjbG9uZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBFeGNlcHQKICAgICB9CiAKICAgICAvLyBGSVhNRTogVmFsaWRhdGUgYm9k
eSB0ZWVpbmcuCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0KCpjb250ZXh0
LCBGZXRjaEJvZHkobV9ib2R5KSwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUobV9oZWFkZXJzLmdldCgp
KSwgRmV0Y2hSZXF1ZXN0OjpJbnRlcm5hbFJlcXVlc3QobV9pbnRlcm5hbFJlcXVlc3QpKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0KGNvbnRleHQsIEZldGNoQm9keSht
X2JvZHkpLCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShtX2hlYWRlcnMuZ2V0KCkpLCBGZXRjaFJlcXVl
c3Q6OkludGVybmFsUmVxdWVzdChtX2ludGVybmFsUmVxdWVzdCkpKTsKIH0KIAogY29uc3QgY2hh
ciogRmV0Y2hSZXF1ZXN0OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5oCmluZGV4IDE3OGUwYzJhNDJmMjA0Yjkz
YTY1ZDhiZWRhYjM5MzM4NTYzOGYyYTYuLjU5YzliNTE0ODllOGVmMzBlM2Y2ZWVmOWUwYTJkZmIx
YTJmYzE0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3Qu
aApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHJlZGlyZWN0KCkgY29uc3Q7
CiAgICAgY29uc3QgU3RyaW5nJiBpbnRlZ3JpdHkoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFs
UmVxdWVzdC5pbnRlZ3JpdHk7IH0KIAotICAgIFJlZlB0cjxGZXRjaFJlcXVlc3Q+IGNsb25lKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJik7CisgICAgUmVmUHRyPEZldGNo
UmVxdWVzdD4gY2xvbmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEV4Y2VwdGlvbkNvZGUmKTsK
IAogICAgIHN0cnVjdCBJbnRlcm5hbFJlcXVlc3QgewogICAgICAgICBSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
Y3BwCmluZGV4IGQxZDRkYmM3NjE2YzI2YzdlMmZmN2NhNjQ4MGYzZTRkNjNkMTUwZGMuLmJhOGU4
YzM5ZmJjNjllYjJiMGNhMmQ3MGQ2YmJlMTA0Y2JlOTNhNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtNDgsMTUgKzQ4LDE1IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBpc051bGxCb2R5U3RhdHVzKGludCBzdGF0dXMpCiAgICAgcmV0dXJu
IHN0YXR1cyA9PSAxMDEgfHwgc3RhdHVzID09IDIwNCB8fCBzdGF0dXMgPT0gMjA1IHx8IHN0YXR1
cyA9PSAzMDQ7CiB9CiAKLVJlZjxGZXRjaFJlc3BvbnNlPiBGZXRjaFJlc3BvbnNlOjplcnJvcihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorUmVmPEZldGNoUmVzcG9uc2U+IEZldGNo
UmVzcG9uc2U6OmVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZSgqY29udGV4dCwgVHlwZTo6RXJyb3Is
IHsgfSwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6SW1tdXRhYmxl
KSwgUmVzb3VyY2VSZXNwb25zZSgpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hS
ZXNwb25zZShjb250ZXh0LCBUeXBlOjpFcnJvciwgeyB9LCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShG
ZXRjaEhlYWRlcnM6Okd1YXJkOjpJbW11dGFibGUpLCBSZXNvdXJjZVJlc3BvbnNlKCkpKTsKIH0K
IAotUmVmUHRyPEZldGNoUmVzcG9uc2U+IEZldGNoUmVzcG9uc2U6OnJlZGlyZWN0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgc3RhdHVzLCBF
eGNlcHRpb25Db2RlJiBlYykKK1JlZlB0cjxGZXRjaFJlc3BvbnNlPiBGZXRjaFJlc3BvbnNlOjpy
ZWRpcmVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHVy
bCwgaW50IHN0YXR1cywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgLy8gRklYTUU6IFRpZ2h0
ZW4gdGhlIFVSTCBwYXJzaW5nIGFsZ29yaXRobSBhY2NvcmRpbmcgaHR0cHM6Ly91cmwuc3BlYy53
aGF0d2cub3JnLyNjb25jZXB0LXVybC1wYXJzZXIuCi0gICAgVVJMIHJlcXVlc3RVUkwgPSBjb250
ZXh0LT5jb21wbGV0ZVVSTCh1cmwpOworICAgIFVSTCByZXF1ZXN0VVJMID0gY29udGV4dC5jb21w
bGV0ZVVSTCh1cmwpOwogICAgIGlmICghcmVxdWVzdFVSTC5pc1ZhbGlkKCkgfHwgIXJlcXVlc3RV
UkwudXNlcigpLmlzRW1wdHkoKSB8fCAhcmVxdWVzdFVSTC5wYXNzKCkuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIGVjID0gVHlwZUVycm9yOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTY1LDcg
KzY1LDcgQEAgUmVmUHRyPEZldGNoUmVzcG9uc2U+IEZldGNoUmVzcG9uc2U6OnJlZGlyZWN0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGMKICAgICAgICAgZWMgPSBUeXBlRXJyb3I7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBSZWZQdHI8RmV0Y2hSZXNwb25z
ZT4gcmVkaXJlY3RSZXNwb25zZSA9IGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZSgqY29udGV4
dCwgVHlwZTo6RGVmYXVsdCwgeyB9LCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRlcnM6
Okd1YXJkOjpJbW11dGFibGUpLCBSZXNvdXJjZVJlc3BvbnNlKCkpKTsKKyAgICBSZWZQdHI8RmV0
Y2hSZXNwb25zZT4gcmVkaXJlY3RSZXNwb25zZSA9IGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25z
ZShjb250ZXh0LCBUeXBlOjpEZWZhdWx0LCB7IH0sIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNo
SGVhZGVyczo6R3VhcmQ6OkltbXV0YWJsZSksIFJlc291cmNlUmVzcG9uc2UoKSkpOwogICAgIHJl
ZGlyZWN0UmVzcG9uc2UtPm1fcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoc3RhdHVzKTsKICAg
ICByZWRpcmVjdFJlc3BvbnNlLT5tX2hlYWRlcnMtPmZhc3RTZXQoSFRUUEhlYWRlck5hbWU6Okxv
Y2F0aW9uLCByZXF1ZXN0VVJMLnN0cmluZygpKTsKICAgICByZXR1cm4gcmVkaXJlY3RSZXNwb25z
ZTsKQEAgLTExNiwxMyArMTE2LDEzIEBAIEZldGNoUmVzcG9uc2U6OkZldGNoUmVzcG9uc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgVHlwZSB0eXBlLCBGZXRjaEJvCiB7CiB9CiAK
LVJlZlB0cjxGZXRjaFJlc3BvbnNlPiBGZXRjaFJlc3BvbnNlOjpjbG9uZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZlB0cjxGZXRjaFJlc3Bv
bnNlPiBGZXRjaFJlc3BvbnNlOjpjbG9uZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAobV9ib2R5LmlzRGlzdHVyYmVkKCkgfHwg
bV9pc0xvY2tlZCkgewogICAgICAgICBlYyA9IFR5cGVFcnJvcjsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQotICAgIFJlZlB0cjxGZXRjaFJlc3BvbnNlPiBjbG9uZWQgPSBhZG9wdFJl
ZigqbmV3IEZldGNoUmVzcG9uc2UoKmNvbnRleHQsIG1fdHlwZSwgRmV0Y2hCb2R5KG1fYm9keSks
IEZldGNoSGVhZGVyczo6Y3JlYXRlKGhlYWRlcnMoKSksIFJlc291cmNlUmVzcG9uc2UobV9yZXNw
b25zZSkpKTsKKyAgICBSZWZQdHI8RmV0Y2hSZXNwb25zZT4gY2xvbmVkID0gYWRvcHRSZWYoKm5l
dyBGZXRjaFJlc3BvbnNlKGNvbnRleHQsIG1fdHlwZSwgRmV0Y2hCb2R5KG1fYm9keSksIEZldGNo
SGVhZGVyczo6Y3JlYXRlKGhlYWRlcnMoKSksIFJlc291cmNlUmVzcG9uc2UobV9yZXNwb25zZSkp
KTsKICAgICBjbG9uZWQtPm1faXNSZWRpcmVjdGVkID0gbV9pc1JlZGlyZWN0ZWQ7CiAgICAgcmV0
dXJuIGNsb25lZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmgKaW5kZXggN2JkNjA1Y2VlNjJkNzc5NzQxZmE2MzZmYmE4OTNjNjE0NmJiYzM4Zi4uOGFm
Y2NiNDdiYzRmMWE3MzYwNzYyZTdkMTMzNTVlNDQ3OTQ1ZjFmYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTQ4LDEwICs0OCwxMCBAQCB0eXBl
ZGVmIGludCBFeGNlcHRpb25Db2RlOwogY2xhc3MgRmV0Y2hSZXNwb25zZSBmaW5hbCA6IHB1Ymxp
YyBGZXRjaEJvZHlPd25lciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxGZXRjaFJlc3BvbnNl
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBGZXRjaFJlc3BvbnNlKGNvbnRleHQsIFR5cGU6OkRlZmF1bHQsIHsgfSwgRmV0Y2hI
ZWFkZXJzOjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6UmVzcG9uc2UpLCBSZXNvdXJjZVJl
c3BvbnNlKCkpKTsgfQotICAgIHN0YXRpYyBSZWY8RmV0Y2hSZXNwb25zZT4gZXJyb3IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCopOwotICAgIHN0YXRpYyBSZWZQdHI8RmV0Y2hSZXNwb25zZT4gcmVk
aXJlY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYsIGludCwgRXhjZXB0
aW9uQ29kZSYpOworICAgIHN0YXRpYyBSZWY8RmV0Y2hSZXNwb25zZT4gZXJyb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpOworICAgIHN0YXRpYyBSZWZQdHI8RmV0Y2hSZXNwb25zZT4gcmVkaXJl
Y3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYsIGludCwgRXhjZXB0aW9u
Q29kZSYpOwogICAgIC8vIEZJWE1FOiBCaW5kaW5nIGdlbmVyYXRvciBzaG91bGQgbm90IHJlcXVp
cmUgYmVsb3cgbWV0aG9kIHRvIGhhbmRsZSBvcHRpb25hbCBzdGF0dXMgcGFyYW1ldGVyLgotICAg
IHN0YXRpYyBSZWZQdHI8RmV0Y2hSZXNwb25zZT4gcmVkaXJlY3QoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJl
dHVybiByZWRpcmVjdChjb250ZXh0LCB1cmwsIDMwMiwgZWMpOyB9CisgICAgc3RhdGljIFJlZlB0
cjxGZXRjaFJlc3BvbnNlPiByZWRpcmVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIHJlZGlyZWN0
KGNvbnRleHQsIHVybCwgMzAyLCBlYyk7IH0KIAogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGgoY29u
c3QgRGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGUmKTsKIApAQCAtNjMsNyArNjMsNyBAQCBwdWJs
aWM6CiAgICAgY29uc3QgU3RyaW5nJiBzdGF0dXNUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9yZXNw
b25zZS5odHRwU3RhdHVzVGV4dCgpOyB9CiAKICAgICBGZXRjaEhlYWRlcnMmIGhlYWRlcnMoKSB7
IHJldHVybiBtX2hlYWRlcnM7IH0KLSAgICBSZWZQdHI8RmV0Y2hSZXNwb25zZT4gY2xvbmUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWZQdHI8RmV0Y2hS
ZXNwb25zZT4gY2xvbmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEV4Y2VwdGlvbkNvZGUmKTsK
IAogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFR5cGUgeyBCYXNpYywgQ29ycywgRGVmYXVsdCwg
RXJyb3IsIE9wYXF1ZSwgT3BhcXVlUmVkaXJlY3QgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKaW5kZXggYjUwMmNhZmJkNzY1YTQwNmU5ZDE5OGU1YmQy
YmU3ZTYxOTVhNTIyNS4uMjRkM2E5MzBkZjQxYmFjMjEzZTY5NWJlZjIzODUxZjBiMzJlM2MzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKQEAgLTY3
LDEwICs2NywxNCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiB1
cGRhdGUoSlNDOjpFeGVjU3RhdGUmLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIEV4Y2VwdGlv
bkNvZGVXaXRoTWVzc2FnZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWR2YW5jZSh1bnNpZ25l
ZCBsb25nLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7Ci0gICAgLy8gRklYTUU6IFRy
eSB0byBtb2RpZnkgdGhlIGNvZGUgZ2VuZXJhdG9yIHNvIHRoaXMgb3ZlcmxvYWQgaXMgdW5uZWVk
ZWQuCisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBuZWVkIHRoYXQgbWV0aG9kICh0YWtp
bmcgYSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHBvaW50ZXIgYW5kIG5vdCBhIHJlZmVyZW5jZSkK
KyAgICAvLyBidXQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQgd2FudHMgdG8gY2FsbCBpdCB3aXRo
IGEgbnVsbCBjb250ZXh0LiAKICAgICB2aXJ0dWFsIHZvaWQgY29udGludWVGdW5jdGlvbihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3Nh
Z2UmKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gZGVsZXRlRnVuY3Rpb24o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpID0gMDsK
KyAgICAvLyBGSVhNRTogVHJ5IHRvIG1vZGlmeSB0aGUgY29kZSBnZW5lcmF0b3Igc28gdGhpcyBv
dmVybG9hZCBpcyB1bm5lZWRlZC4KKyAgICB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykgeyBj
b250aW51ZUZ1bmN0aW9uKCZjb250ZXh0LCBlYyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29udGlu
dWVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPElEQlJlcXVlc3Q+IGRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wg
aXNLZXlDdXJzb3IoKSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkZhY3RvcnkuaAppbmRleCA5OWQyOGY0MWJiMTZkODQxN2U5YjA0MzY2NWE5YzVh
Zjc3ZGFiOWRkLi40NGE1Y2MyOWYwYzE5M2FmN2RhZGI1YWJjNGUyODA0ZDI2NTBkNDQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oCkBAIC01MSwx
MyArNTEsMTMgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBnZXREYXRhYmFzZU5hbWVzIGlzIG5v
IGxvbmdlciBhIHdlYi1mYWNpbmcgQVBJLCBhbmQgc2hvdWxkIGJlIHJlbW92ZWQgZnJvbSBJREJG
YWN0b3J5LgogICAgIC8vIFRoZSBXZWIgSW5zcGVjdG9yIGN1cnJlbnRseSB1c2VzIHRoaXMgdG8g
ZW51bWVyYXRlIHRoZSBsaXN0IG9mIGRhdGFiYXNlcywgYnV0IGlzIG1vcmUgY29tcGxpY2F0ZWQg
YXMgYSByZXN1bHQuCiAgICAgLy8gV2Ugc2hvdWxkIHByb3ZpZGUgYSBzaW1wbGVyIEFQSSB0byB0
aGUgV2ViIEluc3BlY3RvciB0aGVuIHJlbW92ZSBnZXREYXRhYmFzZU5hbWVzLgotICAgIHZpcnR1
YWwgUmVmUHRyPElEQlJlcXVlc3Q+IGdldERhdGFiYXNlTmFtZXMoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVz
dD4gZ2V0RGF0YWJhc2VOYW1lcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRXhjZXB0aW9uQ29k
ZSYpID0gMDsKIAotICAgIHZpcnR1YWwgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IG9wZW4oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYp
ID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBvcGVuKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIGxvbmcgbG9uZyB2
ZXJzaW9uLCBFeGNlcHRpb25Db2RlJikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPElEQk9wZW5E
QlJlcXVlc3Q+IGRlbGV0ZURhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBT
dHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8SURC
T3BlbkRCUmVxdWVzdD4gb3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5n
JiBuYW1lLCBFeGNlcHRpb25Db2RlJikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPElEQk9wZW5E
QlJlcXVlc3Q+IG9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgdW5zaWduZWQgbG9uZyBsb25nIHZlcnNpb24sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAg
dmlydHVhbCBSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gZGVsZXRlRGF0YWJhc2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpID0gMDsK
IAotICAgIHZpcnR1YWwgc2hvcnQgY21wKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZmlyc3QsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiBzZWNvbmQsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpID0gMDsKKyAgICB2aXJ0dWFs
IHNob3J0IGNtcChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIGZpcnN0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgc2Vjb25kLCBF
eGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICBJREJGYWN0
b3J5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAppbmRl
eCA1MjVhMTVhYTMzOWZjM2RlZjJmMWQzN2QxODNhYzI0NDJlNzY4MjZhLi44NTEwZDRjMGJlODJj
Y2RlYjA1ZTIxZmI3Y2YxNmIxNGQ2ZmJjOTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4LmgKQEAgLTU0LDI3ICs1NCwyNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIHVuaXF1ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgbXVsdGlFbnRy
eSgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJz
b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpID0g
MDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBJREJLZXlSYW5nZSosIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpID0g
MDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRp
b25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4g
b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURCS2V5UmFuZ2UqLCBjb25zdCBT
dHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAwOwotICAgIHZp
cnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGly
ZWN0aW9uLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIFJl
ZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9u
Q29kZVdpdGhNZXNzYWdlJikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IGNv
dW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBJREJLZXlSYW5nZSosIEV4Y2VwdGlvbkNvZGVX
aXRoTWVzc2FnZSYpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtl
eSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAwOwotCi0gICAgdmlydHVhbCBSZWZQdHI8
SURCUmVxdWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0
aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+
IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIElEQktleVJhbmdlKiwgRXhj
ZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVl
c3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpID0gMDsKLSAg
ICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBJREJLZXlSYW5nZSosIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRp
b25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4g
b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGVX
aXRoTWVzc2FnZSYpID0gMDsKLQotICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IGdldChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRpb25Db2RlV2l0aE1l
c3NhZ2UmKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gZ2V0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNl
cHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1
ZXN0PiBnZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIElEQktleVJhbmdlKiwgRXhjZXB0
aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+
IGdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAwOworICAgIHZpcnR1YWwg
UmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEV4
Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1
ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJLZXlSYW5nZSosIEV4
Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1
ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7CisgICAg
dmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgSURCS2V5UmFuZ2UqLCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29k
ZVdpdGhNZXNzYWdlJikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5D
dXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlV2l0aE1lc3Nh
Z2UmKSA9IDA7CisKKyAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAwOworICAgIHZp
cnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJ
REJLZXlSYW5nZSosIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpID0gMDsKKyAgICB2aXJ0dWFs
IFJlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikg
PSAwOworCisgICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gb3BlbktleUN1cnNvcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAwOworICAg
IHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIElEQktleVJhbmdlKiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAwOwor
ICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlv
bkNvZGVXaXRoTWVzc2FnZSYpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBv
cGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJLZXlSYW5nZSosIGNvbnN0
IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7CisgICAg
dmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5n
JiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpID0gMDsKKworICAgIHZpcnR1
YWwgUmVmUHRyPElEQlJlcXVlc3Q+IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSURCS2V5
UmFuZ2UqLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7CisgICAgdmlydHVhbCBSZWZQ
dHI8SURCUmVxdWVzdD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7CisK
KyAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBnZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIElEQktleVJhbmdlKiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAwOworICAg
IHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IGdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhN
ZXNzYWdlJikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGlzTW9kZXJuKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCS2V5UmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
S2V5UmFuZ2UuY3BwCmluZGV4IDdlOTY0OGYzMTNlYTcwOTVhM2YxYzQwZjM2NmU1NmFlZDkyNTgy
ZDEuLjllMTk0NWRhZTQ3NDA5NmZjNWExODM4ZDhjMmJhZjE3Y2M4MDUzZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5jcHAKQEAgLTQ5LDE1
ICs0OSwxNSBAQCBJREJLZXlSYW5nZTo6SURCS2V5UmFuZ2UoUmVmUHRyPElEQktleT4mJiBsb3dl
ciwgUmVmUHRyPElEQktleT4mJiB1cHBlciwgTG93ZXJCbwogewogfQogCi1EZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSBJREJLZXlSYW5nZTo6bG93ZXJWYWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KSBjb25zdAorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgSURCS2V5UmFuZ2U6Omxv
d2VyVmFsdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKLSAgICBE
T01SZXF1ZXN0U3RhdGUgcmVxdWVzdFN0YXRlKGNvbnRleHQpOworICAgIERPTVJlcXVlc3RTdGF0
ZSByZXF1ZXN0U3RhdGUoJmNvbnRleHQpOwogICAgIHJldHVybiBpZGJLZXlUb1NjcmlwdFZhbHVl
KCZyZXF1ZXN0U3RhdGUsIG1fbG93ZXIpOwogfQogCi1EZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBJ
REJLZXlSYW5nZTo6dXBwZXJWYWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSBj
b25zdAorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgSURCS2V5UmFuZ2U6OnVwcGVyVmFsdWUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKLSAgICBET01SZXF1ZXN0U3Rh
dGUgcmVxdWVzdFN0YXRlKGNvbnRleHQpOworICAgIERPTVJlcXVlc3RTdGF0ZSByZXF1ZXN0U3Rh
dGUoJmNvbnRleHQpOwogICAgIHJldHVybiBpZGJLZXlUb1NjcmlwdFZhbHVlKCZyZXF1ZXN0U3Rh
dGUsIG1fdXBwZXIpOwogfQogCkBAIC03MSw5ICs3MSw5IEBAIFJlZlB0cjxJREJLZXlSYW5nZT4g
SURCS2V5UmFuZ2U6Om9ubHkoUmVmUHRyPElEQktleT4mJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVj
KQogICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShrZXkpKTsKIH0KIAotUmVmUHRyPElEQktleVJh
bmdlPiBJREJLZXlSYW5nZTo6b25seShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5VmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQorUmVmUHRyPElEQktleVJhbmdlPiBJREJLZXlSYW5nZTo6b25seShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5VmFsdWUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIERPTVJlcXVlc3RTdGF0ZSByZXF1ZXN0U3RhdGUo
Y29udGV4dCk7CisgICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0ZSgmY29udGV4dCk7CiAg
ICAgUmVmUHRyPElEQktleT4ga2V5ID0gc2NyaXB0VmFsdWVUb0lEQktleSgmcmVxdWVzdFN0YXRl
LCBrZXlWYWx1ZSk7CiAgICAgaWYgKCFrZXkgfHwgIWtleS0+aXNWYWxpZCgpKSB7CiAgICAgICAg
IGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRhdGFFcnJvcjsKQEAgLTgzLDkgKzgzLDkgQEAg
UmVmUHRyPElEQktleVJhbmdlPiBJREJLZXlSYW5nZTo6b25seShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBEZXAKICAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUoa2V5KSk7
CiB9CiAKLVJlZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6Omxvd2VyQm91bmQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IGJvdW5kVmFsdWUsIGJvb2wgb3BlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8SURCS2V5
UmFuZ2U+IElEQktleVJhbmdlOjpsb3dlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBib3VuZFZhbHVlLCBib29sIG9w
ZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIERPTVJlcXVlc3RTdGF0ZSByZXF1ZXN0U3Rh
dGUoY29udGV4dCk7CisgICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0ZSgmY29udGV4dCk7
CiAgICAgUmVmUHRyPElEQktleT4gYm91bmQgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KCZyZXF1ZXN0
U3RhdGUsIGJvdW5kVmFsdWUpOwogICAgIGlmICghYm91bmQgfHwgIWJvdW5kLT5pc1ZhbGlkKCkp
IHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6RGF0YUVycm9yOwpAQCAtOTUs
OSArOTUsOSBAQCBSZWZQdHI8SURCS2V5UmFuZ2U+IElEQktleVJhbmdlOjpsb3dlckJvdW5kKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbgogICAgIHJldHVybiBJREJLZXlSYW5n
ZTo6Y3JlYXRlKFdURk1vdmUoYm91bmQpLCBudWxscHRyLCBvcGVuID8gTG93ZXJCb3VuZE9wZW4g
OiBMb3dlckJvdW5kQ2xvc2VkLCBVcHBlckJvdW5kT3Blbik7CiB9CiAKLVJlZlB0cjxJREJLZXlS
YW5nZT4gSURCS2V5UmFuZ2U6OnVwcGVyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGJvdW5kVmFsdWUsIGJvb2wgb3Bl
biwgRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8SURCS2V5UmFuZ2U+IElEQktleVJhbmdlOjp1
cHBlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlJiBib3VuZFZhbHVlLCBib29sIG9wZW4sIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewotICAgIERPTVJlcXVlc3RTdGF0ZSByZXF1ZXN0U3RhdGUoY29udGV4dCk7CisgICAgRE9N
UmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0ZSgmY29udGV4dCk7CiAgICAgUmVmUHRyPElEQktleT4g
Ym91bmQgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KCZyZXF1ZXN0U3RhdGUsIGJvdW5kVmFsdWUpOwog
ICAgIGlmICghYm91bmQgfHwgIWJvdW5kLT5pc1ZhbGlkKCkpIHsKICAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6RGF0YUVycm9yOwpAQCAtMTA3LDkgKzEwNyw5IEBAIFJlZlB0cjxJ
REJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6OnVwcGVyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgY29uCiAgICAgcmV0dXJuIElEQktleVJhbmdlOjpjcmVhdGUobnVsbHB0ciwg
V1RGTW92ZShib3VuZCksIExvd2VyQm91bmRPcGVuLCBvcGVuID8gVXBwZXJCb3VuZE9wZW4gOiBV
cHBlckJvdW5kQ2xvc2VkKTsKIH0KIAotUmVmUHRyPElEQktleVJhbmdlPiBJREJLZXlSYW5nZTo6
Ym91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUmIGxvd2VyVmFsdWUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB1
cHBlclZhbHVlLCBib29sIGxvd2VyT3BlbiwgYm9vbCB1cHBlck9wZW4sIEV4Y2VwdGlvbkNvZGUm
IGVjKQorUmVmUHRyPElEQktleVJhbmdlPiBJREJLZXlSYW5nZTo6Ym91bmQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGxvd2Vy
VmFsdWUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB1cHBlclZhbHVlLCBib29sIGxv
d2VyT3BlbiwgYm9vbCB1cHBlck9wZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIERPTVJl
cXVlc3RTdGF0ZSByZXF1ZXN0U3RhdGUoY29udGV4dCk7CisgICAgRE9NUmVxdWVzdFN0YXRlIHJl
cXVlc3RTdGF0ZSgmY29udGV4dCk7CiAgICAgUmVmUHRyPElEQktleT4gbG93ZXIgPSBzY3JpcHRW
YWx1ZVRvSURCS2V5KCZyZXF1ZXN0U3RhdGUsIGxvd2VyVmFsdWUpOwogICAgIFJlZlB0cjxJREJL
ZXk+IHVwcGVyID0gc2NyaXB0VmFsdWVUb0lEQktleSgmcmVxdWVzdFN0YXRlLCB1cHBlclZhbHVl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5
UmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmgK
aW5kZXggNTlkMjMwMzNlM2NlNmM5ZTU5YWJlN2M3MjI4MTVkZDBjMmE2NzI2NS4uMWJkYTdmNzQ1
ZTI0ODVjZTU5NjUyYzZiODFkMTk1MzNiOWQwNTE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5oCkBAIC01OCwyMyArNTgsMjMgQEAgcHVibGlj
OgogICAgIElEQktleSogbG93ZXIoKSBjb25zdCB7IHJldHVybiBtX2xvd2VyLmdldCgpOyB9CiAg
ICAgSURCS2V5KiB1cHBlcigpIGNvbnN0IHsgcmV0dXJuIG1fdXBwZXIuZ2V0KCk7IH0KIAotICAg
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGxvd2VyVmFsdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCopIGNvbnN0OwotICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHVwcGVyVmFsdWUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCopIGNvbnN0OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGxv
d2VyVmFsdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIGNvbnN0OworICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlIHVwcGVyVmFsdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIGNvbnN0Owog
ICAgIGJvb2wgbG93ZXJPcGVuKCkgY29uc3QgeyByZXR1cm4gbV9sb3dlclR5cGUgPT0gTG93ZXJC
b3VuZE9wZW47IH0KICAgICBib29sIHVwcGVyT3BlbigpIGNvbnN0IHsgcmV0dXJuIG1fdXBwZXJU
eXBlID09IFVwcGVyQm91bmRPcGVuOyB9CiAKICAgICBzdGF0aWMgUmVmUHRyPElEQktleVJhbmdl
PiBvbmx5KFJlZlB0cjxJREJLZXk+JiYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBzdGF0
aWMgUmVmUHRyPElEQktleVJhbmdlPiBvbmx5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CisgICAgc3Rh
dGljIFJlZlB0cjxJREJLZXlSYW5nZT4gb25seShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAg
c3RhdGljIFJlZlB0cjxJREJLZXlSYW5nZT4gbG93ZXJCb3VuZChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgYm91bmQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKSB7IHJldHVybiBsb3dlckJvdW5kKGNvbnRleHQsIGJvdW5kLCBmYWxzZSwg
ZWMpOyB9Ci0gICAgc3RhdGljIFJlZlB0cjxJREJLZXlSYW5nZT4gbG93ZXJCb3VuZChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGJvdW5kLCBi
b29sIG9wZW4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgUmVmUHRyPElEQktleVJhbmdl
PiBsb3dlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiBib3VuZCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGxv
d2VyQm91bmQoY29udGV4dCwgYm91bmQsIGZhbHNlLCBlYyk7IH0KKyAgICBzdGF0aWMgUmVmUHRy
PElEQktleVJhbmdlPiBsb3dlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgYm91bmQsIGJvb2wgb3BlbiwgRXhjZXB0aW9uQ29kZSYp
OwogCi0gICAgc3RhdGljIFJlZlB0cjxJREJLZXlSYW5nZT4gdXBwZXJCb3VuZChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgYm91
bmQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiB1cHBlckJvdW5kKGNvbnRleHQsIGJvdW5k
LCBmYWxzZSwgZWMpOyB9Ci0gICAgc3RhdGljIFJlZlB0cjxJREJLZXlSYW5nZT4gdXBwZXJCb3Vu
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IGJvdW5kLCBib29sIG9wZW4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgUmVmUHRyPElE
QktleVJhbmdlPiB1cHBlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBib3VuZCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsg
cmV0dXJuIHVwcGVyQm91bmQoY29udGV4dCwgYm91bmQsIGZhbHNlLCBlYyk7IH0KKyAgICBzdGF0
aWMgUmVmUHRyPElEQktleVJhbmdlPiB1cHBlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgYm91bmQsIGJvb2wgb3BlbiwgRXhjZXB0
aW9uQ29kZSYpOwogCi0gICAgc3RhdGljIFJlZlB0cjxJREJLZXlSYW5nZT4gYm91bmQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IGxvd2VyLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdXBwZXIsIEV4Y2VwdGlvbkNv
ZGUmIGVjKSB7IHJldHVybiBib3VuZChjb250ZXh0LCBsb3dlciwgdXBwZXIsIGZhbHNlLCBmYWxz
ZSwgZWMpOyB9Ci0gICAgc3RhdGljIFJlZlB0cjxJREJLZXlSYW5nZT4gYm91bmQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGxv
d2VyLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdXBwZXIsIGJvb2wgbG93ZXJPcGVu
LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gYm91bmQoY29udGV4dCwgbG93ZXIsIHVwcGVy
LCBsb3dlck9wZW4sIGZhbHNlLCBlYyk7IH0KLSAgICBzdGF0aWMgUmVmUHRyPElEQktleVJhbmdl
PiBib3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUmIGxvd2VyLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdXBwZXIsIGJvb2wg
bG93ZXJPcGVuLCBib29sIHVwcGVyT3BlbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBS
ZWZQdHI8SURCS2V5UmFuZ2U+IGJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBsb3dlciwgY29uc3QgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUmIHVwcGVyLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gYm91bmQoY29u
dGV4dCwgbG93ZXIsIHVwcGVyLCBmYWxzZSwgZmFsc2UsIGVjKTsgfQorICAgIHN0YXRpYyBSZWZQ
dHI8SURCS2V5UmFuZ2U+IGJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBsb3dlciwgY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIHVwcGVyLCBib29sIGxvd2VyT3BlbiwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0
dXJuIGJvdW5kKGNvbnRleHQsIGxvd2VyLCB1cHBlciwgbG93ZXJPcGVuLCBmYWxzZSwgZWMpOyB9
CisgICAgc3RhdGljIFJlZlB0cjxJREJLZXlSYW5nZT4gYm91bmQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBsb3dlciwgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIHVwcGVyLCBib29sIGxvd2VyT3BlbiwgYm9vbCB1cHBlck9wZW4s
IEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNPbmx5S2V5KCkg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZS5oCmluZGV4IDJjNGI0ZTBkYmJjYmFkN2Q5NDcwMzdlMmJiMWM0NmU0NTk2ZmM3OGQu
LjAzZGVkNDJjMTQwZjljMDk5MzBjNmI1YWIyNGZmMGNjOTc0NjhkNmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaApAQCAtNjksMjgg
KzY5LDI4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IGFkZChK
U0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikg
PSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IHB1dChKU0M6OkV4ZWNTdGF0ZSYs
IEpTQzo6SlNWYWx1ZSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAwOwotICAgIHZpcnR1
YWwgUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxJREJS
ZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBJREJLZXlSYW5nZSos
IEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxJREJS
ZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7Ci0g
ICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgSURCS2V5UmFuZ2UqLCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9u
Q29kZVdpdGhNZXNzYWdlJikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IG9w
ZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlV2l0aE1l
c3NhZ2UmKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBnZXQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4
Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1
ZXN0PiBnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIElEQktleVJhbmdlKiwgRXhjZXB0aW9u
Q29kZVdpdGhNZXNzYWdlJikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IG9w
ZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2Fn
ZSYpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBJREJLZXlSYW5nZSosIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2Fn
ZSYpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBF
eGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8SURCUmVx
dWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSURCS2V5UmFuZ2UqLCBj
b25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAwOwor
ICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmlu
ZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7CisKKyAgICB2aXJ0
dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYp
ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBnZXQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIElEQktleVJhbmdlKiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAwOwog
ICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IGFkZChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6
SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAw
OwogICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IHB1dChKU0M6OkV4ZWNTdGF0ZSYsIEpT
Qzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikg
PSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IGRlbGV0ZUZ1bmN0aW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBJREJLZXlSYW5nZSosIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2Fn
ZSYpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBkZWxldGVGdW5jdGlvbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtl
eSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPElE
QlJlcXVlc3Q+IGNsZWFyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlV2l0
aE1lc3NhZ2UmKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gZGVsZXRlRnVu
Y3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIElEQktleVJhbmdlKiwgRXhjZXB0aW9uQ29k
ZVdpdGhNZXNzYWdlJikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IGRlbGV0
ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7CisgICAgdmlydHVh
bCBSZWZQdHI8SURCUmVxdWVzdD4gY2xlYXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEV4Y2Vw
dGlvbkNvZGVXaXRoTWVzc2FnZSYpID0gMDsKIAotICAgIHZpcnR1YWwgUmVmUHRyPElEQkluZGV4
PiBjcmVhdGVJbmRleChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgRXhjZXB0
aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPElEQkluZGV4PiBj
cmVhdGVJbmRleChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBJREJLZXlQYXRoJiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgRXhjZXB0aW9u
Q29kZVdpdGhNZXNzYWdlJikgPSAwOwogCiAgICAgdmlydHVhbCBSZWZQdHI8SURCSW5kZXg+IGlu
ZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlv
bkNvZGVXaXRoTWVzc2FnZSYpID0gMDsKIAotICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+
IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2Um
KSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIElEQktleVJhbmdlKiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgPSAw
OwotICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2Rl
V2l0aE1lc3NhZ2UmKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gY291bnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpID0gMDsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSA9IDA7CisgICAg
dmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVz
c2FnZSYpID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc01vZGVybigpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9wZW5EQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCT3BlbkRCUmVxdWVzdC5jcHAKaW5kZXggYWRmOGE2ODdmMmY1NzZjNDIzY2QxNTY1ZTgyNjBl
OWZkZDlkYzI1ZC4uODJjZTE3OTZiODg5ZmRiOGEzNzkxMWY4Zjk0ZDBlZmZmNjJlNzQ3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVx
dWVzdC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JREJP
cGVuREJSZXF1ZXN0OjpJREJPcGVuREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCitJREJPcGVuREJSZXF1ZXN0OjpJREJPcGVuREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJREJSZXF1ZXN0KGNvbnRleHQpCiB7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmgK
aW5kZXggYTEwMTU2YjYzMWYyMzMxNzM5YzU1YmVjODdjNzE4ZDkyODZhMTZhOS4uMDBhZGRjMDFk
YjFlZjA5NjFmOGY2MzcwMzQ3NTUzNjQxMTc5M2Q2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaApAQCAtMzgsNyArMzgsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCT3BlbkRCUmVxdWVzdCgpIHsgfQogCiBwcm90ZWN0
ZWQ6Ci0gICAgSURCT3BlbkRCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAg
SURCT3BlbkRCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlJlcXVlc3QuY3BwCmluZGV4IGM2YThiMWUxMDVmMTFhNzlmYjJlZDIxMjYxOTc2OGFlZDM0N2Ni
ODUuLjAxMmYzNjkxMmY1MzdjNjIzZTFiZDkyMmRlNjZjZGM0YjMzNzQ3ODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCkBAIC0zMCw4ICsz
MCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSURCUmVxdWVzdDo6SURCUmVxdWVzdChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotICAgIDogQWN0aXZlRE9NT2JqZWN0KGNv
bnRleHQpCitJREJSZXF1ZXN0OjpJREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpCisgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCiB7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAppbmRleCA5ZDcwNTZlZGM0
YTI1NDI4MzNkZTI2M2YzODc3YzgxNDJmMTk3NTU3Li41YWZiZjYxY2VlMTBmYTFjNTkzZjBkNGJj
MTEyZDAzOGM3NGQ5MjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCUmVxdWVzdC5oCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0
IFN0cmluZyYgcmVhZHlTdGF0ZSgpIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgotICAgIElEQlJl
cXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIElEQlJlcXVlc3QoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkN1cnNvckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkN1cnNvcklt
cGwuY3BwCmluZGV4IDg2NzlhNjIyMWFjOTY5YTQwMmU3ZDI0MmY4MDMxZDkxMjNlZTAyMTAuLjVj
NWU0ZDYyYjNhNjVhMjZmYTVlODY3YzE1MzBkMTA2OTc3OTg1ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDdXJzb3JJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ3Vyc29ySW1wbC5j
cHAKQEAgLTIyMCwxNCArMjIwLDkgQEAgdm9pZCBJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZVcKICAgICBjb250
aW51ZUZ1bmN0aW9uKElEQktleURhdGEoKSwgZWMpOwogfQogCi12b2lkIElEQkN1cnNvcjo6Y29u
dGludWVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5VmFsdWUsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYg
ZWMpCit2b2lkIElEQkN1cnNvcjo6Y29udGludWVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5VmFsdWUsIEV4
Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCiB7Ci0gICAgaWYgKCFjb250ZXh0KSB7Ci0gICAg
ICAgIGVjLmNvZGUgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBET01SZXF1ZXN0U3RhdGUgcmVxdWVzdFN0YXRl
KGNvbnRleHQpOworICAgIERPTVJlcXVlc3RTdGF0ZSByZXF1ZXN0U3RhdGUoJmNvbnRleHQpOwog
ICAgIFJlZlB0cjxJREJLZXk+IGtleTsKICAgICBpZiAoIWtleVZhbHVlLmpzVmFsdWUoKS5pc1Vu
ZGVmaW5lZCgpKQogICAgICAgICBrZXkgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KCZyZXF1ZXN0U3Rh
dGUsIGtleVZhbHVlKTsKQEAgLTI5MywxNSArMjg4LDEwIEBAIHZvaWQgSURCQ3Vyc29yOjp1bmNo
ZWNrZWRJdGVyYXRlQ3Vyc29yKGNvbnN0IElEQktleURhdGEmIGtleSwgdW5zaWduZWQgbG9uZyBj
b3VuCiAgICAgdHJhbnNhY3Rpb24oKS5pdGVyYXRlQ3Vyc29yKCp0aGlzLCBrZXksIGNvdW50KTsK
IH0KIAotUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQkN1cnNvcjo6ZGVsZXRlRnVuY3Rp
b24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZVdpdGhNZXNz
YWdlJiBlYykKK1JlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJDdXJzb3I6OmRlbGV0ZUZ1
bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGVXaXRo
TWVzc2FnZSYgZWMpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkN1cnNvcjo6ZGVsZXRlRnVu
Y3Rpb24iKTsKIAotICAgIGlmICghY29udGV4dCkgewotICAgICAgICBlYy5jb2RlID0gSURCRGF0
YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9yOwotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICB9Ci0KICAgICBpZiAoc291cmNlc0RlbGV0ZWQoKSkgewogICAgICAgICBlYy5jb2Rl
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9yOwogICAgICAgICBlYy5t
ZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnZGVsZXRlJyBvbiAnSURC
Q3Vyc29yJzogVGhlIGN1cnNvcidzIHNvdXJjZSBvciBlZmZlY3RpdmUgb2JqZWN0IHN0b3JlIGhh
cyBiZWVuIGRlbGV0ZWQuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCQ3Vyc29ySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQkN1cnNvckltcGwuaAppbmRleCBiZDVhN2I2ZWExZmNlZWY4MDk4
Zjk2MTk0NzY4NzNmZWFkNmFkNTMxLi5kMzVjOTE1MzAzNzE1OGNkM2UxMTBlNWE1ZTM2YjY2NDJk
OTQ0ZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvSURCQ3Vyc29ySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2NsaWVudC9JREJDdXJzb3JJbXBsLmgKQEAgLTU4LDggKzU4LDggQEAgcHVibGljOgogICAgIFJl
ZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiB1cGRhdGUoSlNDOjpFeGVjU3RhdGUmLCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIGZpbmFsOwogICAg
IHZvaWQgYWR2YW5jZSh1bnNpZ25lZCBsb25nLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBm
aW5hbDsKICAgICB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIGZpbmFsOwotICAgIHZvaWQgY29udGludWVGdW5j
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgZmluYWw7Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OklEQlJlcXVlc3Q+IGRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsKKyAgICB2b2lkIGNvbnRpbnVlRnVu
Y3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIGZpbmFsOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpJREJSZXF1ZXN0PiBkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgZmluYWw7CiAKICAgICB2b2lkIGNvbnRpbnVl
RnVuY3Rpb24oY29uc3QgSURCS2V5RGF0YSYsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
RmFjdG9yeUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50
L0lEQkZhY3RvcnlJbXBsLmNwcAppbmRleCAzZGIyNGQ2NjZkOWMxOWI2MDVhNjY2Njc4NWM1YWQ4
ZjMyNGU2ZDU1Li41M2JlMjJkYmMwZjhlNjIwNDk0M2U2MDdmZDZmOTNhYmU2NDk1NTYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCRmFjdG9y
eUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9J
REJGYWN0b3J5SW1wbC5jcHAKQEAgLTQzLDE4ICs0MywxOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogbmFtZXNwYWNlIElEQkNsaWVudCB7CiAKLXN0YXRpYyBib29sIHNob3VsZFRocm93U2VjdXJp
dHlFeGNlcHRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3N0YXRpYyBib29s
IHNob3VsZFRocm93U2VjdXJpdHlFeGNlcHRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkKIHsKLSAgICBBU1NFUlQoaXM8RG9jdW1lbnQ+KCpjb250ZXh0KSB8fCBjb250ZXh0LT5p
c1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAgIGlmIChpczxEb2N1bWVudD4oKmNvbnRleHQpKSB7
Ci0gICAgICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqY29udGV4
dCk7CisgICAgQVNTRVJUKGlzPERvY3VtZW50Pihjb250ZXh0KSB8fCBjb250ZXh0LmlzV29ya2Vy
R2xvYmFsU2NvcGUoKSk7CisgICAgaWYgKGlzPERvY3VtZW50Pihjb250ZXh0KSkgeworICAgICAg
ICBEb2N1bWVudCYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCk7CiAgICAg
ICAgIGlmICghZG9jdW1lbnQuZnJhbWUoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICBpZiAoIWRvY3VtZW50LnBhZ2UoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIAotICAgIGlmICghY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJh
c2UoY29udGV4dC0+dG9wT3JpZ2luKCkpKQorICAgIGlmICghY29udGV4dC5zZWN1cml0eU9yaWdp
bigpLT5jYW5BY2Nlc3NEYXRhYmFzZShjb250ZXh0LnRvcE9yaWdpbigpKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC03MCwxOSArNzAsMTkgQEAgSURCRmFj
dG9yeTo6SURCRmFjdG9yeShJREJDb25uZWN0aW9uVG9TZXJ2ZXImIGNvbm5lY3Rpb24pCiB7CiB9
CiAKLVJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJGYWN0b3J5OjpnZXREYXRhYmFzZU5h
bWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJikKK1JlZlB0cjxXZWJD
b3JlOjpJREJSZXF1ZXN0PiBJREJGYWN0b3J5OjpnZXREYXRhYmFzZU5hbWVzKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAotUmVmUHRyPFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q+IElEQkZhY3Rvcnk6Om9wZW4oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRp
b25Db2RlJiBlYykKK1JlZlB0cjxXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0PiBJREJGYWN0b3J5
OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkZhY3Rvcnk6
Om9wZW4iKTsKICAgICAKICAgICByZXR1cm4gb3BlbkludGVybmFsKGNvbnRleHQsIG5hbWUsIDAs
IGVjKS5yZWxlYXNlKCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0PiBJ
REJGYWN0b3J5OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYgbmFtZSwgdW5zaWduZWQgbG9uZyBsb25nIHZlcnNpb24sIEV4Y2VwdGlvbkNvZGUmIGVj
KQorUmVmUHRyPFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q+IElEQkZhY3Rvcnk6Om9wZW4oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCB1bnNpZ25l
ZCBsb25nIGxvbmcgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgTE9HKEluZGV4
ZWREQiwgIklEQkZhY3Rvcnk6Om9wZW4iKTsKICAgICAKQEAgLTk0LDcgKzk0LDcgQEAgUmVmUHRy
PFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q+IElEQkZhY3Rvcnk6Om9wZW4oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGUKICAgICByZXR1cm4gb3BlbkludGVybmFsKGNvbnRleHQsIG5hbWUs
IHZlcnNpb24sIGVjKS5yZWxlYXNlKCk7CiB9CiAKLVJlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJ
REJGYWN0b3J5OjpvcGVuSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCB1bnNpZ25lZCBsb25nIGxvbmcgdmVyc2lvbiwgRXhjZXB0aW9u
Q29kZSYgZWMpCitSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURCRmFjdG9yeTo6b3BlbkludGVy
bmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
dW5zaWduZWQgbG9uZyBsb25nIHZlcnNpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlm
IChuYW1lLmlzTnVsbCgpKSB7CiAgICAgICAgIGVjID0gVHlwZUVycm9yOwpAQCAtMTA2LDkgKzEw
Niw5IEBAIFJlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJGYWN0b3J5OjpvcGVuSW50ZXJuYWwo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIAotICAgIEFTU0VSVChjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpKTsKLSAgICBBU1NF
UlQoY29udGV4dC0+dG9wT3JpZ2luKCkpOwotICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBkYXRh
YmFzZUlkZW50aWZpZXIobmFtZSwgKmNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksICpjb250ZXh0
LT50b3BPcmlnaW4oKSk7CisgICAgQVNTRVJUKGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSk7Cisg
ICAgQVNTRVJUKGNvbnRleHQudG9wT3JpZ2luKCkpOworICAgIElEQkRhdGFiYXNlSWRlbnRpZmll
ciBkYXRhYmFzZUlkZW50aWZpZXIobmFtZSwgKmNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSwgKmNv
bnRleHQudG9wT3JpZ2luKCkpOwogICAgIGlmICghZGF0YWJhc2VJZGVudGlmaWVyLmlzVmFsaWQo
KSkgewogICAgICAgICBlYyA9IFR5cGVFcnJvcjsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0xMjAsNyArMTIwLDcgQEAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IElEQkZhY3Rvcnk6Om9w
ZW5JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXgKICAgICByZXR1cm4gYWRv
cHRSZWYoJnJlcXVlc3QubGVha1JlZigpKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OklEQk9wZW5E
QlJlcXVlc3Q+IElEQkZhY3Rvcnk6OmRlbGV0ZURhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQ
dHI8V2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdD4gSURCRmFjdG9yeTo6ZGVsZXRlRGF0YWJhc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRmFjdG9yeTo6ZGVsZXRl
RGF0YWJhc2UgLSAlcyIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CiAKQEAgLTEzNCw5ICsxMzQsOSBA
QCBSZWZQdHI8V2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdD4gSURCRmFjdG9yeTo6ZGVsZXRlRGF0
YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKLSAgICBBU1NFUlQoY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSk7Ci0gICAgQVNTRVJUKGNv
bnRleHQtPnRvcE9yaWdpbigpKTsKLSAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgZGF0YWJhc2VJ
ZGVudGlmaWVyKG5hbWUsICpjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCAqY29udGV4dC0+dG9w
T3JpZ2luKCkpOworICAgIEFTU0VSVChjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCkpOworICAgIEFT
U0VSVChjb250ZXh0LnRvcE9yaWdpbigpKTsKKyAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgZGF0
YWJhc2VJZGVudGlmaWVyKG5hbWUsICpjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCksICpjb250ZXh0
LnRvcE9yaWdpbigpKTsKICAgICBpZiAoIWRhdGFiYXNlSWRlbnRpZmllci5pc1ZhbGlkKCkpIHsK
ICAgICAgICAgZWMgPSBUeXBlRXJyb3I7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTQ4
LDkgKzE0OCw5IEBAIFJlZlB0cjxXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0PiBJREJGYWN0b3J5
OjpkZWxldGVEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCZyZXF1ZXN0LmxlYWtSZWYoKSk7CiB9CiAKLXNob3J0IElEQkZhY3Rvcnk6OmNtcChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
Zmlyc3RWYWx1ZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHNlY29uZFZhbHVlLCBF
eGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQorc2hvcnQgSURCRmFjdG9yeTo6Y21wKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
JiBmaXJzdFZhbHVlLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgc2Vjb25kVmFsdWUs
IEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCiB7Ci0gICAgRE9NUmVxdWVzdFN0YXRlIHJl
cXVlc3RTdGF0ZShjb250ZXh0KTsKKyAgICBET01SZXF1ZXN0U3RhdGUgcmVxdWVzdFN0YXRlKCZj
b250ZXh0KTsKICAgICBSZWZQdHI8SURCS2V5PiBmaXJzdCA9IHNjcmlwdFZhbHVlVG9JREJLZXko
JnJlcXVlc3RTdGF0ZSwgZmlyc3RWYWx1ZSk7CiAgICAgUmVmUHRyPElEQktleT4gc2Vjb25kID0g
c2NyaXB0VmFsdWVUb0lEQktleSgmcmVxdWVzdFN0YXRlLCBzZWNvbmRWYWx1ZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJGYWN0b3J5
SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkZhY3Rv
cnlJbXBsLmgKaW5kZXggOGZjODJlZDllN2ViOGRkN2NmM2Q3MGEyMGVkN2ZkNTNiY2E2YmM1YS4u
ODQwNzQyMWI1YjhiYTBlODgzYzBlYjdkYTIyNzg4ODY4ZGRmYTBiMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkZhY3RvcnlJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkZhY3RvcnlJbXBs
LmgKQEAgLTQwLDE4ICs0MCwxOCBAQCBjbGFzcyBJREJGYWN0b3J5IDogcHVibGljIFdlYkNvcmU6
OklEQkZhY3RvcnkgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SURCRmFjdG9yeT4gY3JlYXRl
KElEQkNvbm5lY3Rpb25Ub1NlcnZlciYpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVl
c3Q+IGdldERhdGFiYXNlTmFtZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNv
ZGUmKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gZ2V0RGF0YWJhc2VO
YW1lcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRXhjZXB0aW9uQ29kZSYpIGZpbmFsOwogCi0g
ICAgUmVmUHRyPFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q+IG9wZW4oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpIGZpbmFsOwotICAg
IFJlZlB0cjxXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0PiBvcGVuKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIGxvbmcgbG9uZyB2ZXJzaW9uLCBF
eGNlcHRpb25Db2RlJikgZmluYWw7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OklEQk9wZW5EQlJlcXVl
c3Q+IGRlbGV0ZURhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcm
IG5hbWUsIEV4Y2VwdGlvbkNvZGUmKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SURCT3Bl
bkRCUmVxdWVzdD4gb3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiBu
YW1lLCBFeGNlcHRpb25Db2RlJikgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OklEQk9wZW5E
QlJlcXVlc3Q+IG9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgdW5zaWduZWQgbG9uZyBsb25nIHZlcnNpb24sIEV4Y2VwdGlvbkNvZGUmKSBmaW5hbDsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdD4gZGVsZXRlRGF0YWJhc2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpIGZp
bmFsOwogCi0gICAgc2hvcnQgY21wKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZmlyc3QsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
JiBzZWNvbmQsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIGZpbmFsOworICAgIHNob3J0IGNt
cChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IGZpcnN0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgc2Vjb25kLCBFeGNlcHRpb25D
b2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBJREJGYWN0b3J5KElEQkNv
bm5lY3Rpb25Ub1NlcnZlciYpOwogICAgIAotICAgIFJlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBv
cGVuSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwg
dW5zaWduZWQgbG9uZyBsb25nIHZlcnNpb24sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWZQdHI8
SURCT3BlbkRCUmVxdWVzdD4gb3BlbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBj
b25zdCBTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIGxvbmcgbG9uZyB2ZXJzaW9uLCBFeGNlcHRpb25D
b2RlJik7CiAgICAgCiAgICAgUmVmPElEQkNvbm5lY3Rpb25Ub1NlcnZlcj4gbV9jb25uZWN0aW9u
VG9TZXJ2ZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L0lEQkluZGV4SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvSURCSW5kZXhJbXBsLmNwcAppbmRleCAzMWE1N2VjYTQ4YWY2OWI1MjhlZGZi
OWI4NTZkMGU1ZGNlNGYzMWZjLi4zZjZlOGRmNDJhNGRlNGFkMTJiM2FkYzFmY2EwN2VjMjBjYTIy
OTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCSW5kZXhJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvSURCSW5kZXhJbXBsLmNwcApAQCAtNDEsOCArNDEsOCBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogbmFtZXNwYWNlIElEQkNsaWVudCB7CiAKLUlEQkluZGV4OjpJREJJbmRleChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBJREJJbmRleEluZm8mIGluZm8sIElEQk9i
amVjdFN0b3JlJiBvYmplY3RTdG9yZSkKLSAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQor
SURCSW5kZXg6OklEQkluZGV4KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0
IElEQkluZGV4SW5mbyYgaW5mbywgSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlKQorICAgIDog
QWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwgbV9pbmZvKGluZm8pCiAgICAgLCBtX29i
amVjdFN0b3JlKG9iamVjdFN0b3JlKQogewpAQCAtOTgsNyArOTgsNyBAQCBib29sIElEQkluZGV4
OjptdWx0aUVudHJ5KCkgY29uc3QKICAgICByZXR1cm4gbV9pbmZvLm11bHRpRW50cnkoKTsKIH0K
IAotUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIElEQktleVJhbmdlKiByYW5nZSwgY29uc3QgU3Ry
aW5nJiBkaXJlY3Rpb25TdHJpbmcsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCitSZWZQ
dHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgSURCS2V5UmFuZ2UqIHJhbmdlLCBjb25zdCBTdHJpbmcmIGRp
cmVjdGlvblN0cmluZywgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKIHsKICAgICBMT0co
SW5kZXhlZERCLCAiSURCSW5kZXg6Om9wZW5DdXJzb3IiKTsKIApAQCAtMTI3LDEwICsxMjcsMTAg
QEAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQKICAgICAgICAgcmFuZ2VEYXRhLnVwcGVyS2V5ID0g
SURCS2V5RGF0YTo6bWF4aW11bSgpOwogCiAgICAgYXV0byBpbmZvID0gSURCQ3Vyc29ySW5mbzo6
aW5kZXhDdXJzb3IobV9vYmplY3RTdG9yZS5tb2Rlcm5UcmFuc2FjdGlvbigpLCBtX29iamVjdFN0
b3JlLmluZm8oKS5pZGVudGlmaWVyKCksIG1faW5mby5pZGVudGlmaWVyKCksIHJhbmdlRGF0YSwg
ZGlyZWN0aW9uLCBJbmRleGVkREI6OkN1cnNvclR5cGU6OktleUFuZFZhbHVlKTsKLSAgICByZXR1
cm4gbV9vYmplY3RTdG9yZS5tb2Rlcm5UcmFuc2FjdGlvbigpLnJlcXVlc3RPcGVuQ3Vyc29yKCpj
b250ZXh0LCAqdGhpcywgaW5mbyk7CisgICAgcmV0dXJuIG1fb2JqZWN0U3RvcmUubW9kZXJuVHJh
bnNhY3Rpb24oKS5yZXF1ZXN0T3BlbkN1cnNvcihjb250ZXh0LCAqdGhpcywgaW5mbyk7CiB9CiAK
LVJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbkN1cnNvcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
a2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBl
YykKK1JlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbkN1cnNvcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdl
JiBlYykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCSW5kZXg6Om9wZW5DdXJzb3IiKTsKICAg
ICBSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlID0gSURCS2V5UmFuZ2U6Om9ubHkoY29udGV4
dCwga2V5LCBlYy5jb2RlKTsKQEAgLTE0Miw0MCArMTQyLDI1IEBAIFJlZlB0cjxXZWJDb3JlOjpJ
REJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0CiAgICAgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwga2V5UmFuZ2UuZ2V0KCksIGRp
cmVjdGlvbiwgZWMpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCSW5kZXg6
OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGVXaXRo
TWVzc2FnZSYgZWMpCitSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCSW5kZXg6OmNvdW50
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2Fn
ZSYgZWMpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkluZGV4Ojpjb3VudCIpOwogCi0gICAg
aWYgKCFjb250ZXh0KSB7Ci0gICAgICAgIGVjLmNvZGUgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
SW52YWxpZFN0YXRlRXJyb3I7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAg
IHJldHVybiBkb0NvdW50KCpjb250ZXh0LCBJREJLZXlSYW5nZURhdGE6OmFsbEtleXMoKSwgZWMp
OworICAgIHJldHVybiBkb0NvdW50KGNvbnRleHQsIElEQktleVJhbmdlRGF0YTo6YWxsS2V5cygp
LCBlYyk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJJbmRleDo6Y291bnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgSURCS2V5UmFuZ2UqIHJhbmdlLCBFeGNl
cHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQorUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElE
QkluZGV4Ojpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJLZXlSYW5n
ZSogcmFuZ2UsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCiB7CiAgICAgTE9HKEluZGV4
ZWREQiwgIklEQkluZGV4Ojpjb3VudCIpOwogCi0gICAgaWYgKCFjb250ZXh0KSB7Ci0gICAgICAg
IGVjLmNvZGUgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7Ci0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHJldHVybiBkb0NvdW50KCpjb250ZXh0
LCByYW5nZSA/IElEQktleVJhbmdlRGF0YShyYW5nZSkgOiBJREJLZXlSYW5nZURhdGE6OmFsbEtl
eXMoKSwgZWMpOworICAgIHJldHVybiBkb0NvdW50KGNvbnRleHQsIHJhbmdlID8gSURCS2V5UmFu
Z2VEYXRhKHJhbmdlKSA6IElEQktleVJhbmdlRGF0YTo6YWxsS2V5cygpLCBlYyk7CiB9CiAKLVJl
ZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJJbmRleDo6Y291bnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhj
ZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKK1JlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJ
REJJbmRleDo6Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykK
IHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCSW5kZXg6OmNvdW50Iik7CiAKLSAgICBpZiAoIWNv
bnRleHQpIHsKLSAgICAgICAgZWMuY29kZSA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlk
U3RhdGVFcnJvcjsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgRE9NUmVx
dWVzdFN0YXRlIHJlcXVlc3RTdGF0ZShjb250ZXh0KTsKKyAgICBET01SZXF1ZXN0U3RhdGUgcmVx
dWVzdFN0YXRlKCZjb250ZXh0KTsKICAgICBSZWZQdHI8SURCS2V5PiBpZGJLZXkgPSBzY3JpcHRW
YWx1ZVRvSURCS2V5KCZyZXF1ZXN0U3RhdGUsIGtleSk7CiAgICAgaWYgKCFpZGJLZXkgfHwgaWRi
S2V5LT50eXBlKCkgPT0gS2V5VHlwZTo6SW52YWxpZCkgewogICAgICAgICBlYy5jb2RlID0gSURC
RGF0YWJhc2VFeGNlcHRpb246OkRhdGFFcnJvcjsKQEAgLTE4Myw3ICsxNjgsNyBAQCBSZWZQdHI8
V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCSW5kZXg6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBy
ZXR1cm4gZG9Db3VudCgqY29udGV4dCwgSURCS2V5UmFuZ2VEYXRhKGlkYktleS5nZXQoKSksIGVj
KTsKKyAgICByZXR1cm4gZG9Db3VudChjb250ZXh0LCBJREJLZXlSYW5nZURhdGEoaWRiS2V5Lmdl
dCgpKSwgZWMpOwogfQogCiBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCSW5kZXg6OmRv
Q291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgSURCS2V5UmFuZ2VE
YXRhJiByYW5nZSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKQEAgLTIwOSw3ICsxOTQs
NyBAQCBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCSW5kZXg6OmRvQ291bnQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgYwogICAgIHJldHVybiB0cmFuc2FjdGlvbi5yZXF1
ZXN0Q291bnQoY29udGV4dCwgKnRoaXMsIHJhbmdlKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OklE
QlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIElEQktleVJhbmdlKiByYW5nZSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb25TdHJp
bmcsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCitSZWZQdHI8V2ViQ29yZTo6SURCUmVx
dWVzdD4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgSURCS2V5UmFuZ2UqIHJhbmdlLCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvblN0cmluZywg
RXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURC
SW5kZXg6Om9wZW5LZXlDdXJzb3IiKTsKIApAQCAtMjMyLDEwICsyMTcsMTAgQEAgUmVmUHRyPFdl
YkNvcmU6OklEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnQKICAgICB9CiAKICAgICBhdXRvIGluZm8gPSBJREJDdXJzb3JJbmZvOjpp
bmRleEN1cnNvcihtX29iamVjdFN0b3JlLm1vZGVyblRyYW5zYWN0aW9uKCksIG1fb2JqZWN0U3Rv
cmUuaW5mbygpLmlkZW50aWZpZXIoKSwgbV9pbmZvLmlkZW50aWZpZXIoKSwgcmFuZ2UsIGRpcmVj
dGlvbiwgSW5kZXhlZERCOjpDdXJzb3JUeXBlOjpLZXlPbmx5KTsKLSAgICByZXR1cm4gbV9vYmpl
Y3RTdG9yZS5tb2Rlcm5UcmFuc2FjdGlvbigpLnJlcXVlc3RPcGVuQ3Vyc29yKCpjb250ZXh0LCAq
dGhpcywgaW5mbyk7CisgICAgcmV0dXJuIG1fb2JqZWN0U3RvcmUubW9kZXJuVHJhbnNhY3Rpb24o
KS5yZXF1ZXN0T3BlbkN1cnNvcihjb250ZXh0LCAqdGhpcywgaW5mbyk7CiB9CiAKLVJlZlB0cjxX
ZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBj
b25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKK1Jl
ZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbktleUN1cnNvcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
a2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBl
YykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IiKTsKICAg
ICBSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlID0gSURCS2V5UmFuZ2U6Om9ubHkoY29udGV4
dCwga2V5LCBlYy5jb2RlKTsKQEAgLTI0NiwyOCArMjMxLDE4IEBAIFJlZlB0cjxXZWJDb3JlOjpJ
REJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250CiAgICAgcmV0dXJuIG9wZW5LZXlDdXJzb3IoY29udGV4dCwga2V5UmFuZ2UuZ2V0KCks
IGRpcmVjdGlvbiwgZWMpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCSW5k
ZXg6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBJREJLZXlSYW5nZSogcmFu
Z2UsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCitSZWZQdHI8V2ViQ29yZTo6SURCUmVx
dWVzdD4gSURCSW5kZXg6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJL
ZXlSYW5nZSogcmFuZ2UsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCiB7CiAgICAgTE9H
KEluZGV4ZWREQiwgIklEQkluZGV4OjpnZXQiKTsKIAotICAgIGlmICghY29udGV4dCkgewotICAg
ICAgICBlYy5jb2RlID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9yOwot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICByZXR1cm4gZG9HZXQoKmNvbnRl
eHQsIElEQktleVJhbmdlRGF0YShyYW5nZSksIGVjKTsKKyAgICByZXR1cm4gZG9HZXQoY29udGV4
dCwgSURCS2V5UmFuZ2VEYXRhKHJhbmdlKSwgZWMpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6SURC
UmVxdWVzdD4gSURCSW5kZXg6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3Nh
Z2UmIGVjKQorUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQkluZGV4OjpnZXQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKIHsKICAgICBMT0coSW5kZXhlZERC
LCAiSURCSW5kZXg6OmdldCIpOwogCi0gICAgaWYgKCFjb250ZXh0KSB7Ci0gICAgICAgIGVjLmNv
ZGUgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7Ci0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIH0KLQotICAgIERPTVJlcXVlc3RTdGF0ZSByZXF1ZXN0U3RhdGUo
Y29udGV4dCk7CisgICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0ZSgmY29udGV4dCk7CiAg
ICAgUmVmUHRyPElEQktleT4gaWRiS2V5ID0gc2NyaXB0VmFsdWVUb0lEQktleSgmcmVxdWVzdFN0
YXRlLCBrZXkpOwogICAgIGlmICghaWRiS2V5IHx8IGlkYktleS0+dHlwZSgpID09IEtleVR5cGU6
OkludmFsaWQpIHsKICAgICAgICAgZWMuY29kZSA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEYXRh
RXJyb3I7CkBAIC0yNzUsNyArMjUwLDcgQEAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElE
QkluZGV4OjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIGRvR2V0KCpjb250ZXh0LCBJ
REJLZXlSYW5nZURhdGEoaWRiS2V5LmdldCgpKSwgZWMpOworICAgIHJldHVybiBkb0dldChjb250
ZXh0LCBJREJLZXlSYW5nZURhdGEoaWRiS2V5LmdldCgpKSwgZWMpOwogfQogCiBSZWZQdHI8V2Vi
Q29yZTo6SURCUmVxdWVzdD4gSURCSW5kZXg6OmRvR2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UsIEV4Y2VwdGlvbkNvZGVXaXRo
TWVzc2FnZSYgZWMpCkBAIC0zMDEsMjggKzI3NiwxOCBAQCBSZWZQdHI8V2ViQ29yZTo6SURCUmVx
dWVzdD4gSURCSW5kZXg6OmRvR2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNv
bgogICAgIHJldHVybiB0cmFuc2FjdGlvbi5yZXF1ZXN0R2V0VmFsdWUoY29udGV4dCwgKnRoaXMs
IHJhbmdlKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQkluZGV4OjpnZXRL
ZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgSURCS2V5UmFuZ2UqIHJhbmdlLCBF
eGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQorUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+
IElEQkluZGV4OjpnZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSURCS2V5
UmFuZ2UqIHJhbmdlLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQogewogICAgIExPRyhJ
bmRleGVkREIsICJJREJJbmRleDo6Z2V0S2V5Iik7CiAKLSAgICBpZiAoIWNvbnRleHQpIHsKLSAg
ICAgICAgZWMuY29kZSA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgcmV0dXJuIGRvR2V0S2V5KCpj
b250ZXh0LCBJREJLZXlSYW5nZURhdGEocmFuZ2UpLCBlYyk7CisgICAgcmV0dXJuIGRvR2V0S2V5
KGNvbnRleHQsIElEQktleVJhbmdlRGF0YShyYW5nZSksIGVjKTsKIH0KIAotUmVmUHRyPFdlYkNv
cmU6OklEQlJlcXVlc3Q+IElEQkluZGV4OjpnZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29k
ZVdpdGhNZXNzYWdlJiBlYykKK1JlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJJbmRleDo6
Z2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCiB7CiAgICAg
TE9HKEluZGV4ZWREQiwgIklEQkluZGV4OjpnZXRLZXkiKTsKIAotICAgIGlmICghY29udGV4dCkg
ewotICAgICAgICBlYy5jb2RlID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVy
cm9yOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBET01SZXF1ZXN0U3Rh
dGUgcmVxdWVzdFN0YXRlKGNvbnRleHQpOworICAgIERPTVJlcXVlc3RTdGF0ZSByZXF1ZXN0U3Rh
dGUoJmNvbnRleHQpOwogICAgIFJlZlB0cjxJREJLZXk+IGlkYktleSA9IHNjcmlwdFZhbHVlVG9J
REJLZXkoJnJlcXVlc3RTdGF0ZSwga2V5KTsKICAgICBpZiAoIWlkYktleSB8fCBpZGJLZXktPnR5
cGUoKSA9PSBLZXlUeXBlOjpJbnZhbGlkKSB7CiAgICAgICAgIGVjLmNvZGUgPSBJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6RGF0YUVycm9yOwpAQCAtMzMwLDcgKzI5NSw3IEBAIFJlZlB0cjxXZWJDb3Jl
OjpJREJSZXF1ZXN0PiBJREJJbmRleDo6Z2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBk
b0dldEtleSgqY29udGV4dCwgSURCS2V5UmFuZ2VEYXRhKGlkYktleS5nZXQoKSksIGVjKTsKKyAg
ICByZXR1cm4gZG9HZXRLZXkoY29udGV4dCwgSURCS2V5UmFuZ2VEYXRhKGlkYktleS5nZXQoKSks
IGVjKTsKIH0KIAogUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQkluZGV4Ojpkb0dldEtl
eShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBJREJLZXlSYW5nZURhdGEm
IHJhbmdlLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkluZGV4SW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkluZGV4SW1wbC5oCmluZGV4IGIw
MWNmOTlmNTY2MjhhZjNhZjgxNzhiZjIxNzEwNWE3MDEwOTI3NWIuLmZkMjQyNWU2ZmNmOTgyOTIz
MmRiZGFiZGJmMmExYmYwNmViM2I3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9JREJJbmRleEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCSW5kZXhJbXBsLmgKQEAgLTQzLDcgKzQzLDcgQEAg
Y2xhc3MgSURCT2JqZWN0U3RvcmU7CiAKIGNsYXNzIElEQkluZGV4IDogcHVibGljIFdlYkNvcmU6
OklEQkluZGV4LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBJREJJbmRl
eChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgSURCSW5kZXhJbmZvJiwgSURCT2JqZWN0
U3RvcmUmKTsKKyAgICBJREJJbmRleChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgSURC
SW5kZXhJbmZvJiwgSURCT2JqZWN0U3RvcmUmKTsKIAogICAgIHZpcnR1YWwgfklEQkluZGV4KCk7
CiAKQEAgLTU1LDI2ICs1NSwyNiBAQCBwdWJsaWM6CiAgICAgYm9vbCB1bmlxdWUoKSBjb25zdCBm
aW5hbDsKICAgICBib29sIG11bHRpRW50cnkoKSBjb25zdCBmaW5hbDsKIAotICAgIFJlZlB0cjxX
ZWJDb3JlOjpJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpIGZpbmFsIHsgcmV0dXJuIG9wZW5D
dXJzb3IoY29udGV4dCwgc3RhdGljX2Nhc3Q8SURCS2V5UmFuZ2UqPihudWxscHRyKSwgZWMpOyB9
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgSURCS2V5UmFuZ2UqIGtleVJhbmdlLCBFeGNlcHRpb25Db2Rl
V2l0aE1lc3NhZ2UmIGVjKSBmaW5hbCB7IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIGtleVJh
bmdlLCBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHQoKSwgZWMpOyB9Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OklEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhN
ZXNzYWdlJiBlYykgZmluYWwgeyByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBrZXksIElEQkN1
cnNvcjo6ZGlyZWN0aW9uTmV4dCgpLCBlYyk7IH0KLSAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVx
dWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURCS2V5UmFuZ2UqLCBj
b25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgZmluYWw7
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0
cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsKLQotICAg
IFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgZmluYWw7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OklEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBJREJLZXlSYW5nZSos
IEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpJ
REJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgZmluYWw7Ci0K
LSAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKSBmaW5h
bCB7IHJldHVybiBvcGVuS2V5Q3Vyc29yKGNvbnRleHQsIHN0YXRpY19jYXN0PElEQktleVJhbmdl
Kj4obnVsbHB0ciksIGVjKTsgfQotICAgIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBvcGVu
S2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIElEQktleVJhbmdlKiBr
ZXlSYW5nZSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykgZmluYWwgeyByZXR1cm4gb3Bl
bktleUN1cnNvcihjb250ZXh0LCBrZXlSYW5nZSwgSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0KCks
IGVjKTsgfQotICAgIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpIGZpbmFsIHsgcmV0dXJuIG9w
ZW5LZXlDdXJzb3IoY29udGV4dCwga2V5LCBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHQoKSwgZWMp
OyB9Ci0gICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIElEQktleVJhbmdlKiwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24s
IEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpJ
REJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhj
ZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgZmluYWw7Ci0KLSAgICBSZWZQdHI8V2ViQ29yZTo6SURC
UmVxdWVzdD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBJREJLZXlSYW5nZSosIEV4Y2Vw
dGlvbkNvZGVXaXRoTWVzc2FnZSYpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1
ZXN0PiBnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIGZpbmFsOwotICAgIFJlZlB0
cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBnZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIElE
QktleVJhbmdlKiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgZmluYWw7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OklEQlJlcXVlc3Q+IGdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdl
JikgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBl
YykgZmluYWwgeyByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBzdGF0aWNfY2FzdDxJREJLZXlS
YW5nZSo+KG51bGxwdHIpLCBlYyk7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4g
b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJLZXlSYW5nZSog
a2V5UmFuZ2UsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpIGZpbmFsIHsgcmV0dXJuIG9w
ZW5DdXJzb3IoY29udGV4dCwga2V5UmFuZ2UsIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpLCBl
Yyk7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
a2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKSBmaW5hbCB7IHJldHVybiBvcGVuQ3Vy
c29yKGNvbnRleHQsIGtleSwgSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0KCksIGVjKTsgfQorICAg
IFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBJREJLZXlSYW5nZSosIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25D
b2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4g
b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGVXaXRo
TWVzc2FnZSYpIGZpbmFsOworCisgICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IGNvdW50
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5h
bDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIElEQktleVJhbmdlKiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgZmluYWw7
CisgICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2Rl
V2l0aE1lc3NhZ2UmKSBmaW5hbDsKKworICAgIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBv
cGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEV4Y2VwdGlvbkNv
ZGVXaXRoTWVzc2FnZSYgZWMpIGZpbmFsIHsgcmV0dXJuIG9wZW5LZXlDdXJzb3IoY29udGV4dCwg
c3RhdGljX2Nhc3Q8SURCS2V5UmFuZ2UqPihudWxscHRyKSwgZWMpOyB9CisgICAgUmVmUHRyPFdl
YkNvcmU6OklEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgSURCS2V5UmFuZ2UqIGtleVJhbmdlLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2Um
IGVjKSBmaW5hbCB7IHJldHVybiBvcGVuS2V5Q3Vyc29yKGNvbnRleHQsIGtleVJhbmdlLCBJREJD
dXJzb3I6OmRpcmVjdGlvbk5leHQoKSwgZWMpOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OklEQlJl
cXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdl
JiBlYykgZmluYWwgeyByZXR1cm4gb3BlbktleUN1cnNvcihjb250ZXh0LCBrZXksIElEQkN1cnNv
cjo6ZGlyZWN0aW9uTmV4dCgpLCBlYyk7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVz
dD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSURCS2V5UmFuZ2UqLCBj
b25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgZmluYWw7
CisgICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIGNvbnN0
IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsKKwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIElEQktleVJhbmdlKiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgZmluYWw7CisgICAg
UmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
Y29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNz
YWdlJikgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IGdldEtleShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRpb25Db2RlV2l0aE1lc3Nh
Z2UmKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gZ2V0S2V5KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBF
eGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsKIAogICAgIGNvbnN0IElEQkluZGV4SW5m
byYgaW5mbygpIGNvbnN0IHsgcmV0dXJuIG1faW5mbzsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPYmplY3RTdG9yZUlt
cGwuY3BwCmluZGV4IDVhNjg4NTEwOTZhZjJlZTlhZDM3YjMxNDQ2YmMwZTgxYTYxNjY3MGMuLmZh
MGM4NzZkOTk1ZGIxMTFlYmM5OThlMWM4N2ZkM2MyZWM0YTlmOWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPYmplY3RTdG9yZUltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPYmplY3RT
dG9yZUltcGwuY3BwCkBAIC00NiwxMyArNDYsMTMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5h
bWVzcGFjZSBJREJDbGllbnQgewogCi1SZWY8SURCT2JqZWN0U3RvcmU+IElEQk9iamVjdFN0b3Jl
OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgSURCT2JqZWN0
U3RvcmVJbmZvJiBpbmZvLCBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCitSZWY8SURCT2Jq
ZWN0U3RvcmU+IElEQk9iamVjdFN0b3JlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvLCBJREJUcmFuc2FjdGlvbiYg
dHJhbnNhY3Rpb24pCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSURCT2JqZWN0U3RvcmUo
Y29udGV4dCwgaW5mbywgdHJhbnNhY3Rpb24pKTsKIH0KIAotSURCT2JqZWN0U3RvcmU6OklEQk9i
amVjdFN0b3JlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IElEQk9iamVj
dFN0b3JlSW5mbyYgaW5mbywgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQotICAgIDogQWN0
aXZlRE9NT2JqZWN0KGNvbnRleHQpCitJREJPYmplY3RTdG9yZTo6SURCT2JqZWN0U3RvcmUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBp
bmZvLCBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCisgICAgOiBBY3RpdmVET01PYmplY3Qo
JmNvbnRleHQpCiAgICAgLCBtX2luZm8oaW5mbykKICAgICAsIG1fb3JpZ2luYWxJbmZvKGluZm8p
CiAgICAgLCBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQpAQCAtMTE0LDIyICsxMTQsMjIgQEAg
Ym9vbCBJREJPYmplY3RTdG9yZTo6YXV0b0luY3JlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
aW5mby5hdXRvSW5jcmVtZW50KCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJ
REJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQorUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVl
c3Q+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCiB7CiAgICAgcmV0dXJuIG9wZW5D
dXJzb3IoY29udGV4dCwgc3RhdGljX2Nhc3Q8SURCS2V5UmFuZ2UqPihudWxscHRyKSwgZWMpOwog
fQogCi1SZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJz
b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgSURCS2V5UmFuZ2UqIGtleVJhbmdl
LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQorUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVl
c3Q+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIElEQktleVJhbmdlKiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBl
YykKIHsKICAgICByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBrZXlSYW5nZSwgSURCQ3Vyc29y
OjpkaXJlY3Rpb25OZXh0KCksIGVjKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+
IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGVXaXRo
TWVzc2FnZSYgZWMpCitSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6
Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKIHsK
ICAgICByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBrZXksIElEQkN1cnNvcjo6ZGlyZWN0aW9u
TmV4dCgpLCBlYyk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RT
dG9yZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBJREJLZXlS
YW5nZSogcmFuZ2UsIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uU3RyaW5nLCBFeGNlcHRpb25Db2Rl
V2l0aE1lc3NhZ2UmIGVjKQorUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0
b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIElEQktleVJh
bmdlKiByYW5nZSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb25TdHJpbmcsIEV4Y2VwdGlvbkNvZGVX
aXRoTWVzc2FnZSYgZWMpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpv
cGVuQ3Vyc29yIik7CiAKQEAgLTE1MCwxMSArMTUwLDExIEBAIFJlZlB0cjxXZWJDb3JlOjpJREJS
ZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byBpbmZvID0gSURCQ3Vyc29y
SW5mbzo6b2JqZWN0U3RvcmVDdXJzb3IobV90cmFuc2FjdGlvbi5nZXQoKSwgbV9pbmZvLmlkZW50
aWZpZXIoKSwgcmFuZ2UsIGRpcmVjdGlvbik7Ci0gICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3Qg
PSBtX3RyYW5zYWN0aW9uLT5yZXF1ZXN0T3BlbkN1cnNvcigqY29udGV4dCwgKnRoaXMsIGluZm8p
OworICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gbV90cmFuc2FjdGlvbi0+cmVxdWVzdE9w
ZW5DdXJzb3IoY29udGV4dCwgKnRoaXMsIGluZm8pOwogICAgIHJldHVybiBXVEZNb3ZlKHJlcXVl
c3QpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9w
ZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNv
ZGVXaXRoTWVzc2FnZSYgZWMpCitSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0
U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4
Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCiB7CiAgICAgUmVmUHRyPElEQktleVJhbmdlPiBr
ZXlSYW5nZSA9IElEQktleVJhbmdlOjpvbmx5KGNvbnRleHQsIGtleSwgZWMuY29kZSk7CiAgICAg
aWYgKGVjLmNvZGUpIHsKQEAgLTE2NSwxNSArMTY1LDEwIEBAIFJlZlB0cjxXZWJDb3JlOjpJREJS
ZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjCiAgICAgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwga2V5UmFuZ2UuZ2V0KCksIGRpcmVj
dGlvbiwgZWMpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3Rv
cmU6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQorUmVmUHRy
PFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhj
ZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCT2Jq
ZWN0U3RvcmU6OmdldCIpOwogCi0gICAgaWYgKCFjb250ZXh0KSB7Ci0gICAgICAgIGVjLmNvZGUg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7Ci0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIH0KLQogICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNBY3RpdmUoKSkg
ewogICAgICAgICBlYy5jb2RlID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9uSW5h
Y3RpdmVFcnJvcjsKICAgICAgICAgZWMubWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRv
IGV4ZWN1dGUgJ2dldCcgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhlIHRyYW5zYWN0aW9uIGlzIGlu
YWN0aXZlIG9yIGZpbmlzaGVkLiIpOwpAQCAtMTg2LDcgKzE4MSw3IEBAIFJlZlB0cjxXZWJDb3Jl
OjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIERPTVJlcXVl
c3RTdGF0ZSByZXF1ZXN0U3RhdGUoY29udGV4dCk7CisgICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVl
c3RTdGF0ZSgmY29udGV4dCk7CiAgICAgUmVmUHRyPElEQktleT4gaWRiS2V5ID0gc2NyaXB0VmFs
dWVUb0lEQktleSgmcmVxdWVzdFN0YXRlLCBrZXkpOwogICAgIGlmICghaWRiS2V5IHx8IGlkYktl
eS0+dHlwZSgpID09IEtleVR5cGU6OkludmFsaWQpIHsKICAgICAgICAgZWMuY29kZSA9IElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpEYXRhRXJyb3I7CkBAIC0xOTQsMTkgKzE4OSwxNCBAQCBSZWZQdHI8
V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmdldChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBS
ZWY8SURCUmVxdWVzdD4gcmVxdWVzdCA9IG1fdHJhbnNhY3Rpb24tPnJlcXVlc3RHZXRSZWNvcmQo
KmNvbnRleHQsICp0aGlzLCBpZGJLZXkuZ2V0KCkpOworICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1
ZXN0ID0gbV90cmFuc2FjdGlvbi0+cmVxdWVzdEdldFJlY29yZChjb250ZXh0LCAqdGhpcywgaWRi
S2V5LmdldCgpKTsKICAgICByZXR1cm4gV1RGTW92ZShyZXF1ZXN0KTsKIH0KIAotUmVmUHRyPFdl
YkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgSURCS2V5UmFuZ2UqIGtleVJhbmdlLCBFeGNlcHRpb25Db2RlV2l0aE1l
c3NhZ2UmIGVjKQorUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpn
ZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSURCS2V5UmFuZ2UqIGtleVJhbmdl
LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQogewogICAgIExPRyhJbmRleGVkREIsICJJ
REJPYmplY3RTdG9yZTo6Z2V0Iik7CiAKLSAgICBpZiAoIWNvbnRleHQpIHsKLSAgICAgICAgZWMu
Y29kZSA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCiAgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5pc0FjdGl2
ZSgpKSB7CiAgICAgICAgIGVjLmNvZGUgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VHJhbnNhY3Rp
b25JbmFjdGl2ZUVycm9yOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIyNCw3ICsyMTQs
NyBAQCBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmdldChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdCA9IG1fdHJhbnNhY3Rpb24tPnJlcXVl
c3RHZXRSZWNvcmQoKmNvbnRleHQsICp0aGlzLCBrZXlSYW5nZURhdGEpOworICAgIFJlZjxJREJS
ZXF1ZXN0PiByZXF1ZXN0ID0gbV90cmFuc2FjdGlvbi0+cmVxdWVzdEdldFJlY29yZChjb250ZXh0
LCAqdGhpcywga2V5UmFuZ2VEYXRhKTsKICAgICByZXR1cm4gV1RGTW92ZShyZXF1ZXN0KTsKIH0K
IApAQCAtMzU4LDEyICszNDgsMTIgQEAgUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3Jl
OjpwdXRPckFkZChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZQogICAgIHJldHVy
biBhZG9wdFJlZihyZXF1ZXN0LmxlYWtSZWYoKSk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpJREJS
ZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgSURCS2V5UmFuZ2UqIGtleVJhbmdlLCBFeGNlcHRpb25Db2RlV2l0aE1l
c3NhZ2UmIGVjKQorUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpk
ZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJLZXlSYW5n
ZSoga2V5UmFuZ2UsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCiB7CiAgICAgcmV0dXJu
IGRvRGVsZXRlKGNvbnRleHQsIGtleVJhbmdlLCBlYyk7CiB9CiAKLVJlZlB0cjxJREJSZXF1ZXN0
PiBJREJPYmplY3RTdG9yZTo6ZG9EZWxldGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgSURCS2V5UmFuZ2UqIGtleVJhbmdlLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQor
UmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpkb0RlbGV0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBJREJLZXlSYW5nZSoga2V5UmFuZ2UsIEV4Y2VwdGlvbkNvZGVX
aXRoTWVzc2FnZSYgZWMpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpk
ZWxldGVGdW5jdGlvbiIpOwogCkBAIC0zOTcsMTggKzM4NywxOCBAQCBSZWZQdHI8SURCUmVxdWVz
dD4gSURCT2JqZWN0U3RvcmU6OmRvRGVsZXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIElEQgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBSZWY8SURCUmVx
dWVzdD4gcmVxdWVzdCA9IG1fdHJhbnNhY3Rpb24tPnJlcXVlc3REZWxldGVSZWNvcmQoKmNvbnRl
eHQsICp0aGlzLCBrZXlSYW5nZURhdGEpOworICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0g
bV90cmFuc2FjdGlvbi0+cmVxdWVzdERlbGV0ZVJlY29yZChjb250ZXh0LCAqdGhpcywga2V5UmFu
Z2VEYXRhKTsKICAgICByZXR1cm4gV1RGTW92ZShyZXF1ZXN0KTsKIH0KIAotUmVmUHRyPFdlYkNv
cmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5
LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQorUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVl
c3Q+IElEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25D
b2RlV2l0aE1lc3NhZ2UmIGVjKQogewogICAgIHJldHVybiBtb2Rlcm5EZWxldGUoY29udGV4dCwg
a2V5LmpzVmFsdWUoKSwgZWMpOwogfQogCi1SZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3Rv
cmU6Om1vZGVybkRlbGV0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBKU0M6OkpT
VmFsdWUga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQorUmVmUHRyPElEQlJlcXVl
c3Q+IElEQk9iamVjdFN0b3JlOjptb2Rlcm5EZWxldGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgSlNDOjpKU1ZhbHVlIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykK
IHsKLSAgICBET01SZXF1ZXN0U3RhdGUgcmVxdWVzdFN0YXRlKGNvbnRleHQpOworICAgIERPTVJl
cXVlc3RTdGF0ZSByZXF1ZXN0U3RhdGUoJmNvbnRleHQpOwogICAgIFJlZlB0cjxJREJLZXk+IGlk
YktleSA9IHNjcmlwdFZhbHVlVG9JREJLZXkoJnJlcXVlc3RTdGF0ZSwga2V5KTsKICAgICBpZiAo
IWlkYktleSB8fCBpZGJLZXktPnR5cGUoKSA9PSBLZXlUeXBlOjpJbnZhbGlkKSB7CiAgICAgICAg
IGVjLmNvZGUgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6RGF0YUVycm9yOwpAQCAtNDE5LDcgKzQw
OSw3IEBAIFJlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6bW9kZXJuRGVsZXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgcmV0dXJuIGRvRGVsZXRlKGNvbnRl
eHQsICZJREJLZXlSYW5nZTo6Y3JlYXRlKGlkYktleS5nZXQoKSkuZ2V0KCksIGVjKTsKIH0KIAot
UmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjbGVhcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQor
UmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjbGVhcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RTdG9yZTo6Y2xlYXIiKTsKIApAQCAtNDQ2
LDE5ICs0MzYsMTQgQEAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3Jl
OjpjbGVhcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXgKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCi0gICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBtX3RyYW5zYWN0
aW9uLT5yZXF1ZXN0Q2xlYXJPYmplY3RTdG9yZSgqY29udGV4dCwgKnRoaXMpOworICAgIFJlZjxJ
REJSZXF1ZXN0PiByZXF1ZXN0ID0gbV90cmFuc2FjdGlvbi0+cmVxdWVzdENsZWFyT2JqZWN0U3Rv
cmUoY29udGV4dCwgKnRoaXMpOwogICAgIHJldHVybiBhZG9wdFJlZihyZXF1ZXN0LmxlYWtSZWYo
KSk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmNyZWF0
ZUluZGV4KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRy
eSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKK1JlZlB0cjxXZWJDb3JlOjpJREJJbmRl
eD4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVl
LCBib29sIG11bHRpRW50cnksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCiB7CiAgICAg
TE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCAlcyIsIG5hbWUudXRm
OCgpLmRhdGEoKSk7CiAKLSAgICBpZiAoIWNvbnRleHQpIHsKLSAgICAgICAgZWMuY29kZSA9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgfQotCiAgICAgaWYgKG1fZGVsZXRlZCkgewogICAgICAgICBlYy5jb2RlID0g
SURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9yOwogICAgICAgICBlYy5tZXNz
YWdlID0gQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnY3JlYXRlSW5kZXgnIG9uICdJ
REJPYmplY3RTdG9yZSc6IFRoZSBvYmplY3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRlZC4iKTsKQEAg
LTU0NCw3ICs1MjksNyBAQCBSZWZQdHI8V2ViQ29yZTo6SURCSW5kZXg+IElEQk9iamVjdFN0b3Jl
OjppbmRleChjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgRXhjZXB0aQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIGluZGV4ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJJ
bmRleD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqaW5mbywgKnRoaXMpOworICAgIGF1dG8g
aW5kZXggPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkluZGV4Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCAqaW5mbywgKnRoaXMpOwogICAgIFJlZlB0cjxJREJJbmRleD4gcmVmSW5kZXggPSBpbmRl
eC5nZXQoKTsKICAgICBtX3JlZmVyZW5jZWRJbmRleGVzLnNldChpbmRleE5hbWUsIFdURk1vdmUo
aW5kZXgpKTsKIApAQCAtNTk3LDI4ICs1ODIsMTggQEAgdm9pZCBJREJPYmplY3RTdG9yZTo6ZGVs
ZXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGUK
ICAgICBtX3RyYW5zYWN0aW9uLT5kZWxldGVJbmRleChtX2luZm8uaWRlbnRpZmllcigpLCBuYW1l
KTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjb3Vu
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlV2l0aE1lc3Nh
Z2UmIGVjKQorUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjb3Vu
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBFeGNlcHRpb25Db2RlV2l0aE1lc3Nh
Z2UmIGVjKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RTdG9yZTo6Y291bnQiKTsK
IAotICAgIGlmICghY29udGV4dCkgewotICAgICAgICBlYy5jb2RlID0gSURCRGF0YWJhc2VFeGNl
cHRpb246OkludmFsaWRTdGF0ZUVycm9yOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9
Ci0KLSAgICByZXR1cm4gZG9Db3VudCgqY29udGV4dCwgSURCS2V5UmFuZ2VEYXRhOjphbGxLZXlz
KCksIGVjKTsKKyAgICByZXR1cm4gZG9Db3VudChjb250ZXh0LCBJREJLZXlSYW5nZURhdGE6OmFs
bEtleXMoKSwgZWMpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0
U3RvcmU6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCitS
ZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmNvdW50KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBr
ZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwg
IklEQk9iamVjdFN0b3JlOjpjb3VudCIpOwogCi0gICAgaWYgKCFjb250ZXh0KSB7Ci0gICAgICAg
IGVjLmNvZGUgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7Ci0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIERPTVJlcXVlc3RTdGF0ZSByZXF1ZXN0
U3RhdGUoY29udGV4dCk7CisgICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0ZSgmY29udGV4
dCk7CiAgICAgUmVmUHRyPElEQktleT4gaWRiS2V5ID0gc2NyaXB0VmFsdWVUb0lEQktleSgmcmVx
dWVzdFN0YXRlLCBrZXkpOwogICAgIGlmICghaWRiS2V5IHx8IGlkYktleS0+dHlwZSgpID09IEtl
eVR5cGU6OkludmFsaWQpIHsKICAgICAgICAgZWMuY29kZSA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpEYXRhRXJyb3I7CkBAIC02MjYsMTkgKzYwMSwxNCBAQCBSZWZQdHI8V2ViQ29yZTo6SURCUmVx
dWVzdD4gSURCT2JqZWN0U3RvcmU6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gZG9Db3VudCgq
Y29udGV4dCwgSURCS2V5UmFuZ2VEYXRhKGlkYktleS5nZXQoKSksIGVjKTsKKyAgICByZXR1cm4g
ZG9Db3VudChjb250ZXh0LCBJREJLZXlSYW5nZURhdGEoaWRiS2V5LmdldCgpKSwgZWMpOwogfQog
Ci1SZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmNvdW50KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIElEQktleVJhbmdlKiByYW5nZSwgRXhjZXB0aW9u
Q29kZVdpdGhNZXNzYWdlJiBlYykKK1JlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmpl
Y3RTdG9yZTo6Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSURCS2V5UmFu
Z2UqIHJhbmdlLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQogewogICAgIExPRyhJbmRl
eGVkREIsICJJREJPYmplY3RTdG9yZTo6Y291bnQiKTsKIAotICAgIGlmICghY29udGV4dCkgewot
ICAgICAgICBlYy5jb2RlID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9y
OwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICByZXR1cm4gZG9Db3VudCgq
Y29udGV4dCwgcmFuZ2UgPyBJREJLZXlSYW5nZURhdGEocmFuZ2UpIDogSURCS2V5UmFuZ2VEYXRh
OjphbGxLZXlzKCksIGVjKTsKKyAgICByZXR1cm4gZG9Db3VudChjb250ZXh0LCByYW5nZSA/IElE
QktleVJhbmdlRGF0YShyYW5nZSkgOiBJREJLZXlSYW5nZURhdGE6OmFsbEtleXMoKSwgZWMpOwog
fQogCiBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmRvQ291bnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBy
YW5nZSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPYmplY3RTdG9yZUltcGwuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPYmplY3RTdG9yZUltcGwu
aAppbmRleCBjZTQxN2QxYWI0NzZhYTU2OTcwZWY2MTRhYzY5MDAxNzY2YTMwNWNiLi4zMDZiMTUw
MmQ0NjY4YzY4ZjI0Y2JhNzJiOWMyZjY4ZTUwOGU2YWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9iamVjdFN0b3JlSW1w
bC5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIElEQlRyYW5zYWN0aW9uOwogCiBjbGFzcyBJREJP
YmplY3RTdG9yZSA6IHB1YmxpYyBXZWJDb3JlOjpJREJPYmplY3RTdG9yZSwgcHVibGljIEFjdGl2
ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJREJPYmplY3RTdG9yZT4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mLCBJ
REJUcmFuc2FjdGlvbiYpOworICAgIHN0YXRpYyBSZWY8SURCT2JqZWN0U3RvcmU+IGNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiwgSURCVHJh
bnNhY3Rpb24mKTsKIAogICAgIH5JREJPYmplY3RTdG9yZSgpIGZpbmFsOwogCkBAIC02MSwyNyAr
NjEsMjcgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IGFkZChK
U0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikg
ZmluYWw7CiAgICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IHB1dChKU0M6OkV4ZWNTdGF0
ZSYsIEpTQzo6SlNWYWx1ZSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgZmluYWw7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJD
b3JlOjpJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBJREJL
ZXlSYW5nZSosIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIGZpbmFsOwotICAgIFJlZlB0cjxX
ZWJDb3JlOjpJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3Nh
Z2UmKSBmaW5hbDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gb3BlbkN1cnNvcihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURCS2V5UmFuZ2UqLCBjb25zdCBTdHJpbmcmIGRpcmVj
dGlvbiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgZmluYWw7Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OklEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBF
eGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6SURC
UmVxdWVzdD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBJ
REJLZXlSYW5nZSosIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIGZpbmFsOworICAgIFJlZlB0
cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSURCS2V5UmFu
Z2UqLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikg
ZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIElEQktleVJhbmdlKiwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24s
IEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJ
REJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0
aW9uQ29kZVdpdGhNZXNzYWdlJikgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVl
c3Q+IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgZmluYWw7CisgICAgUmVmUHRy
PFdlYkNvcmU6OklEQlJlcXVlc3Q+IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSURCS2V5
UmFuZ2UqLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsKICAgICBSZWZQdHI8V2Vi
Q29yZTo6SURCUmVxdWVzdD4gYWRkKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBKU0M6
OkpTVmFsdWUga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsKICAgICBSZWZQ
dHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gcHV0KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVl
LCBKU0M6OkpTVmFsdWUga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIElEQktleVJhbmdlKiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgZmlu
YWw7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IGRlbGV0ZUZ1bmN0aW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBF
eGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6SURC
UmVxdWVzdD4gY2xlYXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGVXaXRo
TWVzc2FnZSYpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpJREJJbmRleD4gY3JlYXRlSW5k
ZXgoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURC
S2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIEV4Y2VwdGlvbkNvZGVXaXRo
TWVzc2FnZSYpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBkZWxldGVG
dW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRpb25D
b2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4g
ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIGZpbmFsOworICAg
IFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBjbGVhcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6
OklEQkluZGV4PiBjcmVhdGVJbmRleChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRy
eSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgZmluYWw7CiAgICAgUmVmUHRyPFdlYkNvcmU6
OklEQkluZGV4PiBpbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGVXaXRoTWVz
c2FnZSYpIGZpbmFsOwogICAgIHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBF
eGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBmaW5hbDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6SURC
UmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGVXaXRo
TWVzc2FnZSYpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBjb3VudChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRpb25Db2RlV2l0aE1l
c3NhZ2UmKSBmaW5hbDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gY291bnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXks
IEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJ
REJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRXhjZXB0aW9uQ29kZVdp
dGhNZXNzYWdlJikgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IGNvdW50
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJLZXlSYW5nZSosIEV4Y2VwdGlvbkNvZGVXaXRo
TWVzc2FnZSYpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBjb3VudChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtl
eSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgZmluYWw7CiAKICAgICBSZWZQdHI8SURCUmVx
dWVzdD4gcHV0Rm9yQ3Vyc29yVXBkYXRlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBK
U0M6OkpTVmFsdWUga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKTsKLSAgICBSZWZQdHI8
SURCUmVxdWVzdD4gbW9kZXJuRGVsZXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBKU0M6OkpT
VmFsdWUga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKTsKKyAgICBSZWZQdHI8SURCUmVx
dWVzdD4gbW9kZXJuRGVsZXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBKU0M6OkpTVmFsdWUg
a2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKTsKIAogICAgIHZvaWQgbWFya0FzRGVsZXRl
ZCgpOwogICAgIGJvb2wgaXNEZWxldGVkKCkgY29uc3QgeyByZXR1cm4gbV9kZWxldGVkOyB9CkBA
IC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHZpc2l0UmVmZXJlbmNlZEluZGV4ZXMo
SlNDOjpTbG90VmlzaXRvciYpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIElEQk9iamVjdFN0b3Jl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mLCBJREJU
cmFuc2FjdGlvbiYpOworICAgIElEQk9iamVjdFN0b3JlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mLCBJREJUcmFuc2FjdGlvbiYpOwogCiAgICAgZW51
bSBjbGFzcyBJbmxpbmVLZXlDaGVjayB7CiAgICAgICAgIFBlcmZvcm0sCkBAIC0xMDgsNyArMTA4
LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBwdXRPckFkZChKU0M6OkV4
ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgUmVmUHRyPElEQktleT4sIEluZGV4ZWREQjo6T2JqZWN0
U3RvcmVPdmVyd3JpdGVNb2RlLCBJbmxpbmVLZXlDaGVjaywgRXhjZXB0aW9uQ29kZVdpdGhNZXNz
YWdlJik7CiAgICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IGRvQ291bnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIEV4Y2VwdGlvbkNvZGVXaXRo
TWVzc2FnZSYpOwotICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBkb0RlbGV0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBJREJLZXlSYW5nZSoga2V5UmFuZ2UsIEV4Y2VwdGlvbkNvZGVX
aXRoTWVzc2FnZSYgZWMpOworICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBkb0RlbGV0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2Um
KTsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVjdAogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9i
amVjdE5hbWUoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPcGVuREJSZXF1ZXN0SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT3BlbkRCUmVxdWVzdEltcGwuY3BwCmlu
ZGV4IGMxOWI3MzAyYjI4Yzc1ZGJmYWEwODBmODMwOTM5ZDc5NzA5MjMyZjIuLjZjZjQwZmExNmNk
NzZlZDY4ZDZkNjg0NTFjNTdlMGZlODNlMDRlYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPcGVuREJSZXF1ZXN0SW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9wZW5EQlJlcXVlc3RJ
bXBsLmNwcApAQCAtMzksMTkgKzM5LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3Bh
Y2UgSURCQ2xpZW50IHsKIAotUmVmPElEQk9wZW5EQlJlcXVlc3Q+IElEQk9wZW5EQlJlcXVlc3Q6
OmNyZWF0ZURlbGV0ZVJlcXVlc3QoSURCQ29ubmVjdGlvblRvU2VydmVyJiBjb25uZWN0aW9uLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZp
ZXImIGRhdGFiYXNlSWRlbnRpZmllcikKK1JlZjxJREJPcGVuREJSZXF1ZXN0PiBJREJPcGVuREJS
ZXF1ZXN0OjpjcmVhdGVEZWxldGVSZXF1ZXN0KElEQkNvbm5lY3Rpb25Ub1NlcnZlciYgY29ubmVj
dGlvbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgSURCRGF0YWJhc2VJ
ZGVudGlmaWVyJiBkYXRhYmFzZUlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKGRhdGFiYXNlSWRl
bnRpZmllci5pc1ZhbGlkKCkpOwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElEQk9wZW5EQlJl
cXVlc3QoY29ubmVjdGlvbiwgY29udGV4dCwgZGF0YWJhc2VJZGVudGlmaWVyLCAwLCBJbmRleGVk
REI6OlJlcXVlc3RUeXBlOjpEZWxldGUpKTsKIH0KIAotUmVmPElEQk9wZW5EQlJlcXVlc3Q+IElE
Qk9wZW5EQlJlcXVlc3Q6OmNyZWF0ZU9wZW5SZXF1ZXN0KElEQkNvbm5lY3Rpb25Ub1NlcnZlciYg
Y29ubmVjdGlvbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgSURCRGF0
YWJhc2VJZGVudGlmaWVyJiBkYXRhYmFzZUlkZW50aWZpZXIsIHVpbnQ2NF90IHZlcnNpb24pCitS
ZWY8SURCT3BlbkRCUmVxdWVzdD4gSURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlT3BlblJlcXVlc3Qo
SURCQ29ubmVjdGlvblRvU2VydmVyJiBjb25uZWN0aW9uLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGRhdGFiYXNlSWRlbnRpZmll
ciwgdWludDY0X3QgdmVyc2lvbikKIHsKICAgICBBU1NFUlQoZGF0YWJhc2VJZGVudGlmaWVyLmlz
VmFsaWQoKSk7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSURCT3BlbkRCUmVxdWVzdChjb25u
ZWN0aW9uLCBjb250ZXh0LCBkYXRhYmFzZUlkZW50aWZpZXIsIHZlcnNpb24sIEluZGV4ZWREQjo6
UmVxdWVzdFR5cGU6Ok9wZW4pKTsKIH0KICAgICAKLUlEQk9wZW5EQlJlcXVlc3Q6OklEQk9wZW5E
QlJlcXVlc3QoSURCQ29ubmVjdGlvblRvU2VydmVyJiBjb25uZWN0aW9uLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGRhdGFiYXNl
SWRlbnRpZmllciwgdWludDY0X3QgdmVyc2lvbiwgSW5kZXhlZERCOjpSZXF1ZXN0VHlwZSByZXF1
ZXN0VHlwZSkKK0lEQk9wZW5EQlJlcXVlc3Q6OklEQk9wZW5EQlJlcXVlc3QoSURCQ29ubmVjdGlv
blRvU2VydmVyJiBjb25uZWN0aW9uLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBj
b25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGRhdGFiYXNlSWRlbnRpZmllciwgdWludDY0X3Qg
dmVyc2lvbiwgSW5kZXhlZERCOjpSZXF1ZXN0VHlwZSByZXF1ZXN0VHlwZSkKICAgICA6IElEQlJl
cXVlc3QoY29ubmVjdGlvbiwgY29udGV4dCkKICAgICAsIG1fZGF0YWJhc2VJZGVudGlmaWVyKGRh
dGFiYXNlSWRlbnRpZmllcikKICAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9wZW5EQlJlcXVlc3RJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT3BlbkRC
UmVxdWVzdEltcGwuaAppbmRleCAzMzZjNTQ3YjE0NjZjOTVmMzBiYjVkYWVhNGU1M2Y1Zjg2OTVh
ZmIyLi5kYTgwNGMxMGQ4MWQ4ZTgwNzJiNmJkZTJkYTgwZmE4YjVmZTMyMzNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT3BlbkRCUmVxdWVz
dEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
T3BlbkRCUmVxdWVzdEltcGwuaApAQCAtNDIsOCArNDIsOCBAQCBjbGFzcyBJREJDb25uZWN0aW9u
VG9TZXJ2ZXI7CiAKIGNsYXNzIElEQk9wZW5EQlJlcXVlc3QgOiBwdWJsaWMgSURCUmVxdWVzdCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJREJPcGVuREJSZXF1ZXN0PiBjcmVhdGVEZWxldGVS
ZXF1ZXN0KElEQkNvbm5lY3Rpb25Ub1NlcnZlciYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKLSAgICBzdGF0aWMgUmVmPElEQk9wZW5EQlJl
cXVlc3Q+IGNyZWF0ZU9wZW5SZXF1ZXN0KElEQkNvbm5lY3Rpb25Ub1NlcnZlciYsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImLCB1aW50NjRfdCB2
ZXJzaW9uKTsKKyAgICBzdGF0aWMgUmVmPElEQk9wZW5EQlJlcXVlc3Q+IGNyZWF0ZURlbGV0ZVJl
cXVlc3QoSURCQ29ubmVjdGlvblRvU2VydmVyJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNv
bnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOworICAgIHN0YXRpYyBSZWY8SURCT3BlbkRCUmVx
dWVzdD4gY3JlYXRlT3BlblJlcXVlc3QoSURCQ29ubmVjdGlvblRvU2VydmVyJiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYsIHVpbnQ2NF90IHZl
cnNpb24pOwogCiAgICAgfklEQk9wZW5EQlJlcXVlc3QoKSBmaW5hbDsKICAgICAKQEAgLTYwLDcg
KzYwLDcgQEAgcHVibGljOgogICAgIGJvb2wgZGlzcGF0Y2hFdmVudChFdmVudCYpIGZpbmFsOwog
CiBwcml2YXRlOgotICAgIElEQk9wZW5EQlJlcXVlc3QoSURCQ29ubmVjdGlvblRvU2VydmVyJiwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYsIHVp
bnQ2NF90IHZlcnNpb24sIEluZGV4ZWREQjo6UmVxdWVzdFR5cGUpOworICAgIElEQk9wZW5EQlJl
cXVlc3QoSURCQ29ubmVjdGlvblRvU2VydmVyJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNv
bnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYsIHVpbnQ2NF90IHZlcnNpb24sIEluZGV4ZWREQjo6
UmVxdWVzdFR5cGUpOwogCiAgICAgdm9pZCBvbkVycm9yKGNvbnN0IElEQlJlc3VsdERhdGEmKTsK
ICAgICB2b2lkIG9uU3VjY2Vzcyhjb25zdCBJREJSZXN1bHREYXRhJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVlc3RJbXBs
LmNwcAppbmRleCBiNzRlMTdhYzFhODUyMmJlODNiZjlhZGRiMDY3NzMyYzAzNjVjNTkzLi5kMDJh
NzQyYjEwNDE0NWE3ZjEzYzA3ODJlOThkNjdkMThiZWUzYWI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5j
cHAKQEAgLTY0LDcgKzY0LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlJlcXVlc3Q6OmNyZWF0ZUdl
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJJbmRleCYKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBJREJSZXF1ZXN0KGNvbnRleHQsIGluZGV4LCByZXF1ZXN0ZWRSZWNvcmRU
eXBlLCB0cmFuc2FjdGlvbikpOwogfQogCi1JREJSZXF1ZXN0OjpJREJSZXF1ZXN0KElEQkNvbm5l
Y3Rpb25Ub1NlcnZlciYgY29ubmVjdGlvbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKK0lEQlJlcXVlc3Q6OklEQlJlcXVlc3QoSURCQ29ubmVjdGlvblRvU2VydmVyJiBjb25uZWN0
aW9uLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAgIDogSURCT3BlbkRCUmVx
dWVzdChjb250ZXh0KQogICAgICwgbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCiAgICAgLCBtX3Jl
c291cmNlSWRlbnRpZmllcihjb25uZWN0aW9uKQpAQCAtNzMsNyArNzMsNyBAQCBJREJSZXF1ZXN0
OjpJREJSZXF1ZXN0KElEQkNvbm5lY3Rpb25Ub1NlcnZlciYgY29ubmVjdGlvbiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dAogfQogCiBJREJSZXF1ZXN0OjpJREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIElEQk9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSwgSURCVHJhbnNh
Y3Rpb24mIHRyYW5zYWN0aW9uKQotICAgIDogSURCT3BlbkRCUmVxdWVzdCgmY29udGV4dCkKKyAg
ICA6IElEQk9wZW5EQlJlcXVlc3QoY29udGV4dCkKICAgICAsIG1fdHJhbnNhY3Rpb24oJnRyYW5z
YWN0aW9uKQogICAgICwgbV9jb25uZWN0aW9uKHRyYW5zYWN0aW9uLnNlcnZlckNvbm5lY3Rpb24o
KSkKICAgICAsIG1fcmVzb3VyY2VJZGVudGlmaWVyKHRyYW5zYWN0aW9uLnNlcnZlckNvbm5lY3Rp
b24oKSkKQEAgLTgzLDcgKzgzLDcgQEAgSURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJPYmplY3RTdG9yZSYgb2JqZWN0U3QKIH0KIAogSURC
UmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJD
dXJzb3ImIGN1cnNvciwgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQotICAgIDogSURCT3Bl
bkRCUmVxdWVzdCgmY29udGV4dCkKKyAgICA6IElEQk9wZW5EQlJlcXVlc3QoY29udGV4dCkKICAg
ICAsIG1fdHJhbnNhY3Rpb24oJnRyYW5zYWN0aW9uKQogICAgICwgbV9jb25uZWN0aW9uKHRyYW5z
YWN0aW9uLnNlcnZlckNvbm5lY3Rpb24oKSkKICAgICAsIG1fcmVzb3VyY2VJZGVudGlmaWVyKHRy
YW5zYWN0aW9uLnNlcnZlckNvbm5lY3Rpb24oKSkKQEAgLTk2LDcgKzk2LDcgQEAgSURCUmVxdWVz
dDo6SURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJDdXJzb3Im
IGN1cnNvciwgSURCVHIKIH0KIAogSURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBJREJJbmRleCYgaW5kZXgsIElEQlRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbikKLSAgICA6IElEQk9wZW5EQlJlcXVlc3QoJmNvbnRleHQpCisgICAgOiBJREJPcGVu
REJSZXF1ZXN0KGNvbnRleHQpCiAgICAgLCBtX3RyYW5zYWN0aW9uKCZ0cmFuc2FjdGlvbikKICAg
ICAsIG1fY29ubmVjdGlvbih0cmFuc2FjdGlvbi5zZXJ2ZXJDb25uZWN0aW9uKCkpCiAgICAgLCBt
X3Jlc291cmNlSWRlbnRpZmllcih0cmFuc2FjdGlvbi5zZXJ2ZXJDb25uZWN0aW9uKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVz
dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1
ZXN0SW1wbC5oCmluZGV4IDIwODMwMjliNWQ5ZmM3Y2MwMGQxYWQ0NzA2YjlmODQzZmI0NzIzMDYu
LjU1NTkxM2NiYThjN2YzZGViMzY4YjRjY2JiNDI4NWY1NGRhODNjNTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1w
bC5oCkBAIC0xMDQsNyArMTA0LDcgQEAgcHVibGljOgogICAgIEluZGV4ZWREQjo6UmVxdWVzdFR5
cGUgcmVxdWVzdFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBlOyB9CiAKIHByb3Rl
Y3RlZDoKLSAgICBJREJSZXF1ZXN0KElEQkNvbm5lY3Rpb25Ub1NlcnZlciYsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqKTsKKyAgICBJREJSZXF1ZXN0KElEQkNvbm5lY3Rpb25Ub1NlcnZlciYsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKICAgICBJREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBJREJPYmplY3RTdG9yZSYsIElEQlRyYW5zYWN0aW9uJik7CiAgICAgSURCUmVxdWVz
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSURCQ3Vyc29yJiwgSURCVHJhbnNhY3Rpb24mKTsK
ICAgICBJREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJJbmRleCYsIElEQlRy
YW5zYWN0aW9uJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuY3BwCmluZGV4IDNkMTUxYjg2NGJk
OWU4YzUyMTA3ZWZmMTcyZmNhNDc3OTM1NzlhNGMuLmY2NGNjZjllOGQyZDRiMWMyNGE3MTlmYzQx
NjdkYTk0MGY0MjI0ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuY3BwCkBAIC0xNjIsNyAr
MTYyLDcgQEAgUmVmUHRyPFdlYkNvcmU6OklEQk9iamVjdFN0b3JlPiBJREJUcmFuc2FjdGlvbjo6
b2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBvYmplY3QKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCi0gICAgYXV0byBvYmplY3RTdG9yZSA9IElEQk9iamVjdFN0b3JlOjpjcmVhdGUo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqaW5mbywgKnRoaXMpOworICAgIGF1dG8gb2JqZWN0
U3RvcmUgPSBJREJPYmplY3RTdG9yZTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
ICppbmZvLCAqdGhpcyk7CiAgICAgbV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVzLnNldChvYmplY3RT
dG9yZU5hbWUsICZvYmplY3RTdG9yZS5nZXQoKSk7CiAKICAgICByZXR1cm4gYWRvcHRSZWYoJm9i
amVjdFN0b3JlLmxlYWtSZWYoKSk7CkBAIC00NzMsNyArNDczLDcgQEAgUmVmPElEQk9iamVjdFN0
b3JlPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCT2JqZWN0U3Rv
cmVJbmZvJgogICAgIEFTU0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7CiAgICAgQVNTRVJUKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKLSAgICBSZWY8SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0
b3JlID0gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGlu
Zm8sICp0aGlzKTsKKyAgICBSZWY8SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlID0gSURCT2Jq
ZWN0U3RvcmU6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBpbmZvLCAqdGhpcyk7
CiAgICAgbV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVzLnNldChpbmZvLm5hbWUoKSwgJm9iamVjdFN0
b3JlLmdldCgpKTsKIAogICAgIGF1dG8gb3BlcmF0aW9uID0gY3JlYXRlVHJhbnNhY3Rpb25PcGVy
YXRpb24oKnRoaXMsICZJREJUcmFuc2FjdGlvbjo6ZGlkQ3JlYXRlT2JqZWN0U3RvcmVPblNlcnZl
ciwgJklEQlRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZU9uU2VydmVyLCBpbmZvKTsKQEAg
LTUwOSw3ICs1MDksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCSW5kZXg+IElEQlRyYW5zYWN0aW9u
OjpjcmVhdGVJbmRleChJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcgogICAgIGF1dG8gb3BlcmF0
aW9uID0gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oKnRoaXMsICZJREJUcmFuc2FjdGlvbjo6
ZGlkQ3JlYXRlSW5kZXhPblNlcnZlciwgJklEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleE9uU2Vy
dmVyLCBpbmZvKTsKICAgICBzY2hlZHVsZU9wZXJhdGlvbihXVEZNb3ZlKG9wZXJhdGlvbikpOwog
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SURCSW5kZXg+KHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgaW5mbywgb2JqZWN0U3RvcmUpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PElEQkluZGV4Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBpbmZvLCBvYmplY3RTdG9yZSk7
CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4T25TZXJ2ZXIoVHJhbnNhY3Rp
b25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9ET01VUkxNZWRpYVNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL0RPTVVSTE1lZGlhU291
cmNlLmNwcAppbmRleCAyMDUxMjc0ODQyZjkyZmE4OGQwMTA4NGI5ZmJmZjYxOGY4MDdlZDk3Li5l
ZTI0YzJiZWM3ZWUyNDJiY2ViYmY5MDJhNzBmNDBmMDQ4NGUwZDQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL0RPTVVSTE1lZGlhU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL0RPTVVSTE1lZGlhU291cmNlLmNw
cApAQCAtMzksMTIgKzM5LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU3RyaW5nIERP
TVVSTE1lZGlhU291cmNlOjpjcmVhdGVPYmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWVkaWFTb3VyY2UqIHNvdXJjZSkKK1N0cmluZyBET01V
UkxNZWRpYVNvdXJjZTo6Y3JlYXRlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1lZGlhU291cmNlKiBzb3VyY2UpCiB7CiAgICAgLy8gU2lu
Y2UgV2ViV29ya2VycyBjYW5ub3Qgb2J0YWluIE1lZGlhU291cmNlIG9iamVjdHMsIHdlIHNob3Vs
ZCBiZSBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAot
ICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB8fCAhc291cmNlKQorICAgIGlmICghc291
cmNlKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgcmV0dXJuIERPTVVSTDo6Y3JlYXRl
UHVibGljVVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHNvdXJjZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL0RPTVVSTE1lZGlhU291cmNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL0RPTVVSTE1lZGlhU291cmNlLmgK
aW5kZXggMWVjY2Q0Yjc1NDlmOGEyZmJlOTY5YjhjMjE0NzEyNjIxMmY5NDZhNS4uM2M5YTQyMzRh
NGMzNDM2ZGY4YTk0MDMzNTNhNDRiY2EwOTBiMDQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9ET01VUkxNZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvRE9NVVJMTWVkaWFTb3VyY2UuaApAQCAtNDIsNyAr
NDIsNyBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBjbGFzcyBET01VUkxNZWRp
YVNvdXJjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFN0cmluZyBjcmVhdGVPYmplY3RVUkwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIE1lZGlhU291cmNlKik7CisgICAgc3RhdGljIFN0cmluZyBj
cmVhdGVPYmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIE1lZGlhU291cmNlKik7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL0RPTVVSTE1lZGlhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vRE9NVVJMTWVkaWFTdHJlYW0uY3BwCmluZGV4IDBlZWVkOWM5
ZjdmNzdkNTU1ZGNhM2JjYjViZmJhM2RmZmQ2ODBjZWEuLmJkM2Y3YzY1ZmQzYzQ0OWE1MzkxMzJk
ZmViYjViNjliMWU0NjQ3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vRE9NVVJMTWVkaWFTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vRE9NVVJMTWVkaWFTdHJlYW0uY3BwCkBAIC00MCwxMiArNDAsMTIgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TdHJpbmcgRE9NVVJMTWVkaWFTdHJlYW06OmNyZWF0
ZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBNZWRpYVN0cmVhbSogc3RyZWFtKQorU3RyaW5nIERPTVVSTE1lZGlhU3RyZWFtOjpjcmVhdGVP
YmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
TWVkaWFTdHJlYW0qIHN0cmVhbSkKIHsKICAgICAvLyBTaW5jZSBXZWJXb3JrZXJzIGNhbm5vdCBv
YnRhaW4gU3RyZWFtIG9iamVjdHMsIHdlIHNob3VsZCBiZSBvbiB0aGUgbWFpbiB0aHJlYWQuCiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCB8fCAhc3RyZWFtKQorICAgIGlmICghc3RyZWFtKQogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAgICAgcmV0dXJuIERPTVVSTDo6Y3JlYXRlUHVibGljVVJMKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIHN0cmVhbSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL0RPTVVSTE1lZGlhU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL0RPTVVSTE1lZGlhU3RyZWFtLmgKaW5kZXggM2UyZDhjOTA1N2Q1MDkzYjczZjMx
Zjk0OTVkYzUxYzJlYTgyYTFhMy4uMGFmYWMwZGU0MWFjYzQyYTVjNGUyYzljYjI1ZWRhYzU0NmFj
YTJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9ET01V
UkxNZWRpYVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
RE9NVVJMTWVkaWFTdHJlYW0uaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OwogCiBjbGFzcyBET01VUkxNZWRpYVN0cmVhbSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFN0cmluZyBjcmVhdGVPYmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1lZGlh
U3RyZWFtKik7CisgICAgc3RhdGljIFN0cmluZyBjcmVhdGVPYmplY3RVUkwoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIE1lZGlhU3RyZWFtKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0hUTUxNZWRp
YUVsZW1lbnRNZWRpYVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL0hUTUxNZWRpYUVsZW1lbnRNZWRpYVN0cmVhbS5jcHAKaW5kZXggOWY5ZmRiMTVkZmIwYzNl
ZDAzNzYwZDIxNWNiMDA4NGQyMWIwNjVkOC4uMzM5MjllMjIzYWY0ZTA3ZDY5Y2UwNWI3ZGI2ZDE2
YjU4YWYxMWNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9IVE1MTWVkaWFFbGVtZW50TWVkaWFTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vSFRNTE1lZGlhRWxlbWVudE1lZGlhU3RyZWFtLmNwcApAQCAtMzgs
OSArMzgsOSBAQCBNZWRpYVN0cmVhbSogSFRNTE1lZGlhRWxlbWVudE1lZGlhU3RyZWFtOjpzcmNP
YmplY3QoSFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZQogICAgIHJldHVybiBtZWRpYUVsZW1l
bnQuc3JjT2JqZWN0KCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudE1lZGlhU3RyZWFtOjpz
ZXRTcmNPYmplY3QoSFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50LCBNZWRpYVN0cmVhbSog
bWVkaWFTdHJlYW0pCit2b2lkIEhUTUxNZWRpYUVsZW1lbnRNZWRpYVN0cmVhbTo6c2V0U3JjT2Jq
ZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEhUTUxNZWRpYUVsZW1lbnQmIG1l
ZGlhRWxlbWVudCwgTWVkaWFTdHJlYW0qIG1lZGlhU3RyZWFtKQogewotICAgIG1lZGlhRWxlbWVu
dC5zZXRTcmNPYmplY3QobWVkaWFTdHJlYW0pOworICAgIG1lZGlhRWxlbWVudC5zZXRTcmNPYmpl
Y3QoY29udGV4dCwgbWVkaWFTdHJlYW0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0hUTUxNZWRpYUVs
ZW1lbnRNZWRpYVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9I
VE1MTWVkaWFFbGVtZW50TWVkaWFTdHJlYW0uaAppbmRleCA1NDRjMGZjMTU5MTI4NTIxOWMzZDk5
MTcwOTNiYmQ0MDE3NGY4YzY1Li5iNzRkMTZjODM2Njc3MGQxOGY5MmNiNzc0NTE1MTE0OWNiNTIx
ODUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0hUTUxN
ZWRpYUVsZW1lbnRNZWRpYVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vSFRNTE1lZGlhRWxlbWVudE1lZGlhU3RyZWFtLmgKQEAgLTI4LDE3ICsyOCwxNiBA
QAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgRU5BQkxFKFZJREVPKQogCi0jaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1M
TWVkaWFFbGVtZW50OwogY2xhc3MgTWVkaWFTdHJlYW07CitjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OwogCiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50TWVkaWFTdHJlYW0gewogcHVibGljOgog
ICAgIHN0YXRpYyBNZWRpYVN0cmVhbSogc3JjT2JqZWN0KEhUTUxNZWRpYUVsZW1lbnQmKTsKLSAg
ICBzdGF0aWMgdm9pZCBzZXRTcmNPYmplY3QoSFRNTE1lZGlhRWxlbWVudCYsIE1lZGlhU3RyZWFt
Kik7CisgICAgc3RhdGljIHZvaWQgc2V0U3JjT2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBIVE1MTWVkaWFFbGVtZW50JiwgTWVkaWFTdHJlYW0qKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
SFRNTE1lZGlhRWxlbWVudE1lZGlhU3RyZWFtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vSFRNTE1lZGlhRWxlbWVudE1lZGlhU3RyZWFtLmlkbAppbmRleCBiOGZjZDhi
NGEwMTAxNWJlYzE4YzdhZjgyYTk1YjZjNjQ1ODMxYWIyLi45MDJkZDUzNTU1MmI2MTMxOTA3NTkx
YmVmMjBjZWZlOTcyODdmOTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL0hUTUxNZWRpYUVsZW1lbnRNZWRpYVN0cmVhbS5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9IVE1MTWVkaWFFbGVtZW50TWVkaWFTdHJlYW0uaWRs
CkBAIC0yOCw2ICsyOCw2IEBACiBdIHBhcnRpYWwgaW50ZXJmYWNlIEhUTUxNZWRpYUVsZW1lbnQK
IHsKICNpZiAoIWRlZmluZWQoTEFOR1VBR0VfR09CSkVDVCkgfHwgIUxBTkdVQUdFX0dPQkpFQ1Qp
ICYmICghZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgfHwgIUxBTkdVQUdFX09CSkVDVElW
RV9DKQotICAgIGF0dHJpYnV0ZSBNZWRpYVN0cmVhbT8gc3JjT2JqZWN0OworICAgIFtTZXR0ZXJD
YWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBhdHRyaWJ1dGUgTWVkaWFTdHJlYW0/IHNy
Y09iamVjdDsKICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKaW5kZXggMjczODA1Njk4ZDgyODVlODk5MzEw
ZjhkOTBhY2EzYWU1M2M5MDllMi4uNjU3OGRhNDQ5MDExMjdhNTQzZTYxZTY3YWQxMjRmZjQxN2Y4
NDU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbi5jcHAKQEAgLTU5LDggKzU5LDggQEAgTm90aWZpY2F0aW9uOjpOb3RpZmlj
YXRpb24oKQogfQogCiAjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotTm90aWZpY2F0
aW9uOjpOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5
LCBjb25zdCBTdHJpbmcmIGljb25VUkksIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IEV4Y2VwdGlvbkNvZGUmIGVjLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJvdmlk
ZXIpCi0gICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKK05vdGlmaWNhdGlvbjo6Tm90aWZp
Y2F0aW9uKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3Ry
aW5nJiBpY29uVVJJLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBFeGNlcHRpb25D
b2RlJiBlYywgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKQorICAgIDog
QWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwgbV90aXRsZSh0aXRsZSkKICAgICAsIG1f
Ym9keShib2R5KQogICAgICwgbV9zdGF0ZShJZGxlKQpAQCAtOTgsNyArOTgsNyBAQCBOb3RpZmlj
YXRpb246On5Ob3RpZmljYXRpb24oKQogfQogCiAjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJ
T05TKQotUmVmPE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uOjpjcmVhdGUoY29uc3QgU3RyaW5n
JiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkksIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBQYXNzUmVmUHRy
PE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpIAorUmVmPE5vdGlmaWNhdGlvbj4gTm90aWZp
Y2F0aW9uOjpjcmVhdGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBj
b25zdCBTdHJpbmcmIGljb25VUkksIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEV4
Y2VwdGlvbkNvZGUmIGVjLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIp
IAogeyAKICAgICBhdXRvIG5vdGlmaWNhdGlvbiA9IGFkb3B0UmVmKCpuZXcgTm90aWZpY2F0aW9u
KHRpdGxlLCBib2R5LCBpY29uVVJJLCBjb250ZXh0LCBlYywgcHJvdmlkZXIpKTsKICAgICBub3Rp
ZmljYXRpb24uZ2V0KCkuc3VzcGVuZElmTmVlZGVkKCk7CkBAIC0yMjEsMTAgKzIyMSwxMCBAQCB2
b2lkIE5vdGlmaWNhdGlvbjo6dGFza1RpbWVyRmlyZWQoKQogCiAKICNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykKLWNvbnN0IFN0cmluZyBOb3RpZmljYXRpb246OnBlcm1pc3Npb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKK2NvbnN0IFN0cmluZyBOb3RpZmljYXRpb246OnBlcm1p
c3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBBU1NFUlQoZG93
bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KS5wYWdlKCkpOwotICAgIHJldHVybiBwZXJtaXNzaW9u
U3RyaW5nKE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmZyb20oZG93bmNhc3Q8RG9jdW1lbnQ+KCpj
b250ZXh0KS5wYWdlKCkpLT5jbGllbnQoKS0+Y2hlY2tQZXJtaXNzaW9uKGNvbnRleHQpKTsKKyAg
ICBBU1NFUlQoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLnBhZ2UoKSk7CisgICAgcmV0dXJu
IHBlcm1pc3Npb25TdHJpbmcoTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShkb3duY2FzdDxE
b2N1bWVudD4oY29udGV4dCkucGFnZSgpKS0+Y2xpZW50KCktPmNoZWNrUGVybWlzc2lvbigmY29u
dGV4dCkpOwogfQogCiBjb25zdCBTdHJpbmcgTm90aWZpY2F0aW9uOjpwZXJtaXNzaW9uU3RyaW5n
KE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbiBwZXJtaXNzaW9uKQpAQCAtMjQyLDEwICsy
NDIsMTAgQEAgY29uc3QgU3RyaW5nIE5vdGlmaWNhdGlvbjo6cGVybWlzc2lvblN0cmluZyhOb3Rp
ZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb24gcGVybWkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9
CiAKLXZvaWQgTm90aWZpY2F0aW9uOjpyZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFj
az4gY2FsbGJhY2spCit2b2lkIE5vdGlmaWNhdGlvbjo6cmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2s+IGNhbGxiYWNrKQogewotICAgIEFTU0VSVChkb3duY2FzdDxEb2N1bWVudD4o
KmNvbnRleHQpLnBhZ2UoKSk7Ci0gICAgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShkb3du
Y2FzdDxEb2N1bWVudD4oKmNvbnRleHQpLnBhZ2UoKSktPmNsaWVudCgpLT5yZXF1ZXN0UGVybWlz
c2lvbihjb250ZXh0LCBjYWxsYmFjayk7CisgICAgQVNTRVJUKGRvd25jYXN0PERvY3VtZW50Pihj
b250ZXh0KS5wYWdlKCkpOworICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmZyb20oZG93bmNh
c3Q8RG9jdW1lbnQ+KGNvbnRleHQpLnBhZ2UoKSktPmNsaWVudCgpLT5yZXF1ZXN0UGVybWlzc2lv
bigmY29udGV4dCwgY2FsbGJhY2spOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAppbmRleCBlNzZiZDI1NzJm
MjA5N2JkYjdiNjRmYjJmOTMzYTFkMGE5OGFjZTllLi4wMWYyNzA1NDY5MmFlOTVkOTg2MTk1Y2Iw
ZWMyYzIwM2FlYjM4NzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCkBAIC02Niw3ICs2Niw3IEBAIGNsYXNzIE5vdGlmaWNh
dGlvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbj4sIHB1YmxpYyBBY3Rp
dmVET01PYmplCiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgTm90aWZpY2F0aW9uKCk7CiAj
aWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotICAgIHN0YXRpYyBSZWY8Tm90aWZpY2F0
aW9uPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25z
dCBTdHJpbmcmIGljb25VUkksIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2Rl
JiwgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKTsKKyAgICBzdGF0aWMg
UmVmPE5vdGlmaWNhdGlvbj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmlu
ZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJJLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
RXhjZXB0aW9uQ29kZSYsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcik7
CiAjZW5kaWYKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBzdGF0aWMgUmVmPE5vdGlm
aWNhdGlvbj4gY3JlYXRlKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgRGlj
dGlvbmFyeSYgb3B0aW9ucyk7CkBAIC0xMjIsMTQgKzEyMiwxNCBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBmaW5hbGl6ZSgpOwogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBwZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqKTsKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nIHBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25zdCBTdHJpbmcgcGVybWlz
c2lvblN0cmluZyhOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb24pOwotICAgIHN0YXRpYyB2
b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
PE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaz4gPSBudWxscHRyKTsKKyAgICBzdGF0aWMg
dm9pZCByZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUGFzc1JlZlB0
cjxOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s+ID0gbnVsbHB0cik7CiAjZW5kaWYKIAog
cHJpdmF0ZToKICNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0gICAgTm90aWZpY2F0
aW9uKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5n
JiBpY29uVVJJLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYsIFBhc3NS
ZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPik7CisgICAgTm90aWZpY2F0aW9uKGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJJLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgRXhjZXB0aW9uQ29kZSYsIFBhc3NSZWZQdHI8Tm90aWZpY2F0
aW9uQ2VudGVyPik7CiAjZW5kaWYKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBOb3Rp
ZmljYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbkNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uQ2VudGVyLmNwcAppbmRleCA2NGZmMDY0M2JiNjA1OTg5NzQ5Yjk5OGU5ZjkxZTRk
MzkzNzg0Y2E5Li5mMDFmZmJiODAxNjdkY2E1NmQ4ZDY2NzAyYjQxMzlmMmEwOTNmMTI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
Q2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uQ2VudGVyLmNwcApAQCAtNTksMTEgKzU5LDExIEBAIE5vdGlmaWNhdGlvbkNlbnRl
cjo6Tm90aWZpY2F0aW9uQ2VudGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE5v
dGlmaWNhCiAKIFJlZlB0cjxOb3RpZmljYXRpb24+IE5vdGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRl
Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgaWNvblVSSSwgY29uc3QgU3RyaW5nJiB0aXRsZSwg
Y29uc3QgU3RyaW5nJiBib2R5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAoIW1fY2xp
ZW50KSB7CisgICAgaWYgKCFtX2NsaWVudCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7
CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KLSAgICByZXR1cm4gTm90aWZpY2F0aW9uOjpjcmVhdGUodGl0bGUsIGJvZHksIGlj
b25VUkksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZWMsIHRoaXMpOworICAgIHJldHVybiBO
b3RpZmljYXRpb246OmNyZWF0ZSh0aXRsZSwgYm9keSwgaWNvblVSSSwgKnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgZWMsIHRoaXMpOwogfQogCiBpbnQgTm90aWZpY2F0aW9uQ2VudGVyOjpjaGVj
a1Blcm1pc3Npb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9T
dG9yYWdlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VJbmZv
LmNwcAppbmRleCA2Mjc1ZWY5ZDViZjVkMTY3ODc4YzAwYWQ1NDdlMzJjODFiNGVlOGNjLi41OTBl
NDBiM2JlZDYzMmVhYmM2NzgyMmIyMDcyOTFjMmQwYWE5NTUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VJbmZvLmNwcApAQCAtNTIsNyArNTIsNyBAQCBTdG9yYWdl
SW5mbzo6flN0b3JhZ2VJbmZvKCkKIHsKIH0KIAotdm9pZCBTdG9yYWdlSW5mbzo6cXVlcnlVc2Fn
ZUFuZFF1b3RhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IGludCBzdG9yYWdlVHlwZSwgUGFzc1JlZlB0cjxTdG9yYWdlVXNhZ2VDYWxsYmFjaz4gc3VjY2Vz
c0NhbGxiYWNrLCBQYXNzUmVmUHRyPFN0b3JhZ2VFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNr
KQordm9pZCBTdG9yYWdlSW5mbzo6cXVlcnlVc2FnZUFuZFF1b3RhKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGludCBzdG9yYWdlVHlwZSwgUGFzc1JlZlB0
cjxTdG9yYWdlVXNhZ2VDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPFN0b3Jh
Z2VFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogewogICAgIC8vIERpc3BhdGNoaW5nIHRo
ZSByZXF1ZXN0IHRvIFN0b3JhZ2VRdW90YSwgYXMgdGhpcyBpbnRlcmZhY2UgaXMgZGVwcmVjYXRl
ZCBpbiBmYXZvciBvZiBTdG9yYWdlUXVvdGEuCiAgICAgU3RvcmFnZVF1b3RhKiBzdG9yYWdlUXVv
dGEgPSBnZXRTdG9yYWdlUXVvdGEoc3RvcmFnZVR5cGUpOwpAQCAtNjQsNyArNjQsNyBAQCB2b2lk
IFN0b3JhZ2VJbmZvOjpxdWVyeVVzYWdlQW5kUXVvdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udAogICAgIHN0b3JhZ2VRdW90YS0+cXVlcnlVc2FnZUFuZFF1b3Rh
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7
CiB9CiAKLXZvaWQgU3RvcmFnZUluZm86OnJlcXVlc3RRdW90YShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBpbnQgc3RvcmFnZVR5cGUsIHVuc2lnbmVkIGxv
bmcgbG9uZyBuZXdRdW90YUluQnl0ZXMsIFBhc3NSZWZQdHI8U3RvcmFnZVF1b3RhQ2FsbGJhY2s+
IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxTdG9yYWdlRXJyb3JDYWxsYmFjaz4gZXJyb3JD
YWxsYmFjaykKK3ZvaWQgU3RvcmFnZUluZm86OnJlcXVlc3RRdW90YShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBpbnQgc3RvcmFnZVR5cGUsIHVuc2lnbmVk
IGxvbmcgbG9uZyBuZXdRdW90YUluQnl0ZXMsIFBhc3NSZWZQdHI8U3RvcmFnZVF1b3RhQ2FsbGJh
Y2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxTdG9yYWdlRXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjaykKIHsKICAgICAvLyBEaXNwYXRjaGluZyB0aGUgcmVxdWVzdCB0byBTdG9yYWdl
UXVvdGEsIGFzIHRoaXMgaW50ZXJmYWNlIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgU3RvcmFn
ZVF1b3RhLgogICAgIFN0b3JhZ2VRdW90YSogc3RvcmFnZVF1b3RhID0gZ2V0U3RvcmFnZVF1b3Rh
KHN0b3JhZ2VUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEv
U3RvcmFnZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvU3RvcmFnZUluZm8u
aAppbmRleCA3YzUyNjNjMzAxZGIxZGNlYWNjYjNiY2QzMWNmZDM2ZjRlYTU0ODA4Li40MmRhM2Yy
Y2NhY2RkYTk2MTMzYjZlZTE1ZmY0ZmQzZDY4ODYyM2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9xdW90YS9TdG9yYWdlSW5mby5oCkBAIC01Nyw5ICs1Nyw5IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZUluZm8oKSk7CiAgICAgfQogCi0gICAgdm9p
ZCBxdWVyeVVzYWdlQW5kUXVvdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGludCBzdG9yYWdl
VHlwZSwgUGFzc1JlZlB0cjxTdG9yYWdlVXNhZ2VDYWxsYmFjaz4sIFBhc3NSZWZQdHI8U3RvcmFn
ZUVycm9yQ2FsbGJhY2s+KTsKKyAgICB2b2lkIHF1ZXJ5VXNhZ2VBbmRRdW90YShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgaW50IHN0b3JhZ2VUeXBlLCBQYXNzUmVmUHRyPFN0b3JhZ2VVc2FnZUNh
bGxiYWNrPiwgUGFzc1JlZlB0cjxTdG9yYWdlRXJyb3JDYWxsYmFjaz4pOwogCi0gICAgdm9pZCBy
ZXF1ZXN0UXVvdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGludCBzdG9yYWdlVHlwZSwgdW5z
aWduZWQgbG9uZyBsb25nIG5ld1F1b3RhSW5CeXRlcywgUGFzc1JlZlB0cjxTdG9yYWdlUXVvdGFD
YWxsYmFjaz4sIFBhc3NSZWZQdHI8U3RvcmFnZUVycm9yQ2FsbGJhY2s+KTsKKyAgICB2b2lkIHJl
cXVlc3RRdW90YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgaW50IHN0b3JhZ2VUeXBlLCB1bnNp
Z25lZCBsb25nIGxvbmcgbmV3UXVvdGFJbkJ5dGVzLCBQYXNzUmVmUHRyPFN0b3JhZ2VRdW90YUNh
bGxiYWNrPiwgUGFzc1JlZlB0cjxTdG9yYWdlRXJyb3JDYWxsYmFjaz4pOwogCiAgICAgflN0b3Jh
Z2VJbmZvKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvU3Rv
cmFnZVF1b3RhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VRdW90YS5o
CmluZGV4IDViOWQzOWEyZWUzOGU1YmUwMWJjNWNhZWNiYmM1NzM1MzA4MWU4MDkuLmNjZmRlODFl
NGUzOWQ0MGZiZDhmYTU4MjZhM2ExZTFlMzhlNjJjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcXVvdGEvU3RvcmFnZVF1b3RhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9xdW90YS9TdG9yYWdlUXVvdGEuaApAQCAtNTUsOSArNTUsOSBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VRdW90YSh0eXBlKSk7CiAgICAgfQogCi0g
ICAgdm9pZCBxdWVyeVVzYWdlQW5kUXVvdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NS
ZWZQdHI8U3RvcmFnZVVzYWdlQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFN0b3JhZ2VFcnJvckNhbGxi
YWNrPik7CisgICAgdm9pZCBxdWVyeVVzYWdlQW5kUXVvdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIFBhc3NSZWZQdHI8U3RvcmFnZVVzYWdlQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFN0b3JhZ2VF
cnJvckNhbGxiYWNrPik7CiAKLSAgICB2b2lkIHJlcXVlc3RRdW90YShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgdW5zaWduZWQgbG9uZyBsb25nIG5ld1F1b3RhSW5CeXRlcywgUGFzc1JlZlB0cjxT
dG9yYWdlUXVvdGFDYWxsYmFjaz4sIFBhc3NSZWZQdHI8U3RvcmFnZUVycm9yQ2FsbGJhY2s+KTsK
KyAgICB2b2lkIHJlcXVlc3RRdW90YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgdW5zaWduZWQg
bG9uZyBsb25nIG5ld1F1b3RhSW5CeXRlcywgUGFzc1JlZlB0cjxTdG9yYWdlUXVvdGFDYWxsYmFj
az4sIFBhc3NSZWZQdHI8U3RvcmFnZUVycm9yQ2FsbGJhY2s+KTsKIAogICAgIH5TdG9yYWdlUXVv
dGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmpl
Y3RTdG9yZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVj
dFN0b3JlQ3VzdG9tLmNwcAppbmRleCBmYTY4M2NhMDhiOGU3ZGVhN2E3MWVjNjA4NTBlNDRkYjNj
OGJlOTQzLi4zMjUxZmYyZmJhMGRiMTYyYzNlMTdjZDQzMDVjMjVlOGZjZTUwMjBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9t
LmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIEpTVmFsdWUgSlNJREJPYmplY3RTdG9yZTo6Y3JlYXRl
SW5kZXgoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICB9CiAKICAgICBFeGNlcHRpb25Db2RlV2l0aE1l
c3NhZ2UgZWM7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0
KCksIHdyYXBwZWQoKS5jcmVhdGVJbmRleChjb250ZXh0LCBuYW1lLCBrZXlQYXRoLCB1bmlxdWUs
IG11bHRpRW50cnksIGVjKS5nZXQoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKCZzdGF0
ZSwgZ2xvYmFsT2JqZWN0KCksIHdyYXBwZWQoKS5jcmVhdGVJbmRleCgqY29udGV4dCwgbmFtZSwg
a2V5UGF0aCwgdW5pcXVlLCBtdWx0aUVudHJ5LCBlYykuZ2V0KCkpOwogICAgIHNldERPTUV4Y2Vw
dGlvbigmc3RhdGUsIGVjKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA5NTMwNGZh
ODhiN2FlMjk1MDRmMGNiMjgzNjNhZDA5MTI5Nzc3ODk3Li5hMDA4MDM3NTUyN2NkNDhiMGQ5Mjg2
YjdhNmYwODIzZmRiNGY2NWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzI4Niw3ICszMjg2LDcgQEAgc3ViIEdlbmVy
YXRlQ2FsbFdpdGgKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8qIHNjcmlw
dENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpO1xuIik7CiAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBpZiAoIXNjcmlwdENvbnRleHQpXG4iKTsKICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4iIC4gKCRyZXR1cm5WYWx1ZSA/ICIgIiAu
ICRyZXR1cm5WYWx1ZSA6ICIiKSAuICI7XG4iKTsKLSAgICAgICAgcHVzaChAY2FsbFdpdGhBcmdz
LCAic2NyaXB0Q29udGV4dCIpOworICAgICAgICBwdXNoKEBjYWxsV2l0aEFyZ3MsICIqc2NyaXB0
Q29udGV4dCIpOwogICAgIH0KICAgICBpZiAoJGZ1bmN0aW9uIGFuZCAkY29kZUdlbmVyYXRvci0+
RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkY2FsbFdpdGgsICJTY3JpcHRBcmd1bWVudHMiKSkg
ewogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUmVmUHRyPEluc3BlY3Rvcjo6U2Ny
aXB0QXJndW1lbnRzPiBzY3JpcHRBcmd1bWVudHMoSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1
bWVudHMoc3RhdGUsICIgLiBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30gLiAiKSk7XG4iKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEludGVyZmFjZS5jcHAKaW5kZXggMWE3YjBmOTcwNTA2NTdlZTdkZDFmYjczZTRmYjNjZDMx
YzZkMGRkYy4uMjFhZTNjNmMzMjUxNjE1NTdjNTUwN2U3MTVhZWQ5MDNmNDBmODBhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVy
ZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEludGVyZmFjZS5jcHAKQEAgLTc5Nyw3ICs3OTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhv
ZDIoRQogICAgIFRlc3RPYmoqIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5h
cmd1bWVudCgxKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgSlNWYWx1
ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpn
ZXRQdHIoaW1wbC5pbXBsZW1lbnRzTWV0aG9kMihzY3JpcHRDb250ZXh0LCBzdHJBcmcsIG9iakFy
ZywgZWMpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5pbXBsZW1lbnRzTWV0aG9kMigqc2NyaXB0
Q29udGV4dCwgc3RyQXJnLCBvYmpBcmcsIGVjKSkpOwogCiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0
YXRlLCBlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtODYzLDcg
Kzg2Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJv
dG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QyCiAgICAgVGVzdE9iaiogb2JqQXJnID0g
SlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDEpKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihXZWJDb3JlOjpUZXN0U3VwcGxlbWVu
dGFsOjpzdXBwbGVtZW50YWxNZXRob2QyKGltcGwsIHNjcmlwdENvbnRleHQsIHN0ckFyZywgb2Jq
QXJnLCBlYykpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpz
dXBwbGVtZW50YWxNZXRob2QyKGltcGwsICpzY3JpcHRDb250ZXh0LCBzdHJBcmcsIG9iakFyZywg
ZWMpKSk7CiAKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGUwYjIxNzg3OTY2MjM5NmZmNTM4
ZmEzNDY4ZDExOTU4NTcxNmFiNGQuLmUyMDVjNTIwNjc0NjAyY2JlMTBiNWVjZjg4ZWYwNzgyMzhj
YzQ2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0xNDc4LDcgKzE0NzgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0
YXRlLCBFbgogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xv
YmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
dHRyaWJ1dGUoc2NyaXB0Q29udGV4dCkpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3Rh
dGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKCpzY3JpcHRDb250ZXh0KSkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIApAQCAtMTUxNCw3ICsxNTE0LDcgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVS
YWlzZXMoRXhlY1N0YXRlKiBzdGEKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKHNjcmlwdENvbnRleHQsIGVjKSkpOworICAgIEpT
VmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdU
Rjo6Z2V0UHRyKGltcGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMo
KnNjcmlwdENvbnRleHQsIGVjKSkpOwogICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE1MzMsNyArMTUzMyw3
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0
YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC53aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKCpzdGF0ZSwgc2NyaXB0
Q29udGV4dCkpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoKnN0YXRlLCAqc2NyaXB0Q29udGV4dCkpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKQEAgLTE1NTIsNyArMTU1Miw3
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoCiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0
YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC53aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKCpzdGF0ZSwg
c2NyaXB0Q29udGV4dCwgZWMpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC53aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKCpzdGF0ZSwgKnNjcmlw
dENvbnRleHQsIGVjKSkpOwogICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE1NzEsNyArMTU3MSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVXaXRoU3BhY2VzQXR0cmliCiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC53aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSgqc3RhdGUsIHNj
cmlwdENvbnRleHQpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSgqc3RhdGUsICpzY3JpcHRD
b250ZXh0KSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIApAQCAt
MjY5Nyw3ICsyNjk3LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlMKICAgICBhdXRvKiBzY3Jp
cHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENv
bnRleHQpCiAgICAgICAgIHJldHVybjsKLSAgICBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QXR0cmlidXRlKHNjcmlwdENvbnRleHQsIG5hdGl2ZVZhbHVlKTsKKyAgICBpbXBsLnNl
dFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKCpzY3JpcHRDb250ZXh0LCBuYXRp
dmVWYWx1ZSk7CiB9CiAKIApAQCAtMjczNCw3ICsyNzM0LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpX
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIHN0YXRl
LCBFbmMKICAgICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybjsKLSAgICBpbXBsLnNl
dFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKHNjcmlwdENvbnRleHQs
IG5hdGl2ZVZhbHVlKTsKKyAgICBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0
cmlidXRlUmFpc2VzKCpzY3JpcHRDb250ZXh0LCBuYXRpdmVWYWx1ZSk7CiB9CiAKIApAQCAtMjc1
NCw3ICsyNzU0LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3QKICAgICBhdXRvKiBzY3JpcHRD
b250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENvbnRl
eHQpCiAgICAgICAgIHJldHVybjsKLSAgICBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoKnN0YXRlLCBzY3JpcHRDb250ZXh0LCBuYXRpdmVW
YWx1ZSk7CisgICAgaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlQXR0cmlidXRlKCpzdGF0ZSwgKnNjcmlwdENvbnRleHQsIG5hdGl2ZVZhbHVlKTsKIH0KIAog
CkBAIC0yNzc0LDcgKzI3NzQsNyBAQCB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YQogICAgIGF1dG8q
IHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2Ny
aXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJuOwotICAgIGltcGwuc2V0V2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygqc3RhdGUsIHNjcmlwdENv
bnRleHQsIG5hdGl2ZVZhbHVlKTsKKyAgICBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoKnN0YXRlLCAqc2NyaXB0Q29udGV4dCwg
bmF0aXZlVmFsdWUpOwogfQogCiAKQEAgLTI3OTQsNyArMjc5NCw3IEBAIHZvaWQgc2V0SlNUZXN0
T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRy
aWJ1dGUoRXhlCiAgICAgYXV0byogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQogICAgICAgICByZXR1cm47Ci0gICAgaW1w
bC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0
dHJpYnV0ZSgqc3RhdGUsIHNjcmlwdENvbnRleHQsIG5hdGl2ZVZhbHVlKTsKKyAgICBpbXBsLnNl
dFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmli
dXRlKCpzdGF0ZSwgKnNjcmlwdENvbnRleHQsIG5hdGl2ZVZhbHVlKTsKIH0KIAogCkBAIC0zNzA0
LDcgKzM3MDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAgIGF1dG8qIHNjcmlwdENv
bnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4
dCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBp
bXBsLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0KHNjcmlwdENvbnRleHQpOworICAgIGltcGwu
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKnNjcmlwdENvbnRleHQpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTM3MTksNyArMzcxOSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25X
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4CiAgICAgYXV0byogc2NyaXB0Q29udGV4dCA9IGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGltcGwud2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZSgqc3RhdGUsIHNjcmlwdENvbnRleHQpOwor
ICAgIGltcGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZSgqc3RhdGUs
ICpzY3JpcHRDb250ZXh0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCkBAIC0zNzM1LDcgKzM3MzUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleAog
ICAgIGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0
ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAg
IGlmICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24oKnN0YXRlLCBzY3JpcHRDb250ZXh0LCBlYykp
KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVPYmpFeGNlcHRpb24oKnN0YXRlLCAqc2NyaXB0Q29udGV4dCwgZWMpKSk7CiAKICAg
ICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKQEAgLTM3NTQsNyArMzc1NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4CiAgICAgYXV0byogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwud2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXMoKnN0YXRlLCBzY3JpcHRDb250ZXh0KSkp
OworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIFdURjo6Z2V0UHRyKGltcGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZVdpdGhTcGFjZXMoKnN0YXRlLCAqc2NyaXB0Q29udGV4dCkpKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlclN5bmMuY3BwCmluZGV4IGFlYzQwZjk5
OWM3M2ViZWE1NmZhZmNjNzY2M2ZhZTYyODMxZDdhOWQuLjUxZmY0MTM0OGZjZDQ5OGMwMjU4NDU4
ZTQxNDYwZmI4MWFjOTU5YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZVJlYWRlclN5bmMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlclN5
bmMuY3BwCkBAIC00NCw3ICs0NCw3IEBAIEZpbGVSZWFkZXJTeW5jOjpGaWxlUmVhZGVyU3luYygp
CiB7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gRmlsZVJlYWRlclN5bmM6OnJlYWRBc0FycmF5
QnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEJs
b2IqIGJsb2IsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPEFycmF5QnVmZmVyPiBGaWxlUmVh
ZGVyU3luYzo6cmVhZEFzQXJyYXlCdWZmZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgQmxvYiogYmxvYiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
aWYgKCFibG9iKSB7CiAgICAgICAgIGVjID0gTk9UX0ZPVU5EX0VSUjsKQEAgLTU3LDcgKzU3LDcg
QEAgUmVmUHRyPEFycmF5QnVmZmVyPiBGaWxlUmVhZGVyU3luYzo6cmVhZEFzQXJyYXlCdWZmZXIo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2MKICAgICByZXR1cm4gbG9hZGVyLmFycmF5QnVmZmVy
UmVzdWx0KCk7CiB9CiAKLVN0cmluZyBGaWxlUmVhZGVyU3luYzo6cmVhZEFzQmluYXJ5U3RyaW5n
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEJsb2IqIGJs
b2IsIEV4Y2VwdGlvbkNvZGUmIGVjKQorU3RyaW5nIEZpbGVSZWFkZXJTeW5jOjpyZWFkQXNCaW5h
cnlTdHJpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
QmxvYiogYmxvYiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFibG9iKSB7CiAgICAg
ICAgIGVjID0gTk9UX0ZPVU5EX0VSUjsKQEAgLTY5LDcgKzY5LDcgQEAgU3RyaW5nIEZpbGVSZWFk
ZXJTeW5jOjpyZWFkQXNCaW5hcnlTdHJpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW8KICAgICByZXR1cm4gbG9hZGVyLnN0cmluZ1Jlc3VsdCgpOwogfQogCi1TdHJpbmcg
RmlsZVJlYWRlclN5bmM6OnJlYWRBc1RleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgQmxvYiogYmxvYiwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgRXhj
ZXB0aW9uQ29kZSYgZWMpCitTdHJpbmcgRmlsZVJlYWRlclN5bmM6OnJlYWRBc1RleHQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgQmxvYiogYmxvYiwgY29u
c3QgU3RyaW5nJiBlbmNvZGluZywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFibG9i
KSB7CiAgICAgICAgIGVjID0gTk9UX0ZPVU5EX0VSUjsKQEAgLTgyLDcgKzgyLDcgQEAgU3RyaW5n
IEZpbGVSZWFkZXJTeW5jOjpyZWFkQXNUZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQKICAgICByZXR1cm4gbG9hZGVyLnN0cmluZ1Jlc3VsdCgpOwogfQog
Ci1TdHJpbmcgRmlsZVJlYWRlclN5bmM6OnJlYWRBc0RhdGFVUkwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgQmxvYiogYmxvYiwgRXhjZXB0aW9uQ29kZSYg
ZWMpCitTdHJpbmcgRmlsZVJlYWRlclN5bmM6OnJlYWRBc0RhdGFVUkwoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgQmxvYiogYmxvYiwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CiAgICAgaWYgKCFibG9iKSB7CiAgICAgICAgIGVjID0gTk9UX0ZPVU5EX0VSUjsK
QEAgLTk1LDkgKzk1LDkgQEAgU3RyaW5nIEZpbGVSZWFkZXJTeW5jOjpyZWFkQXNEYXRhVVJMKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnQKICAgICByZXR1cm4gbG9h
ZGVyLnN0cmluZ1Jlc3VsdCgpOwogfQogCi12b2lkIEZpbGVSZWFkZXJTeW5jOjpzdGFydExvYWRp
bmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRmlsZVJl
YWRlckxvYWRlciYgbG9hZGVyLCBCbG9iKiBibG9iLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQg
RmlsZVJlYWRlclN5bmM6OnN0YXJ0TG9hZGluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBGaWxlUmVhZGVyTG9hZGVyJiBsb2FkZXIsIEJsb2IqIGJsb2Is
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGxvYWRlci5zdGFydChzY3JpcHRFeGVjdXRpb25D
b250ZXh0LCBibG9iKTsKKyAgICBsb2FkZXIuc3RhcnQoJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IGJsb2IpOwogICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6RXJyb3JDb2RlVG9FeGNlcHRpb25Db2Rl
KGxvYWRlci5lcnJvckNvZGUoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZVJlYWRlclN5bmMuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRl
clN5bmMuaAppbmRleCBiYTM1ZTY5MTBkMWNjMDNjOWQ4Zjk3ZTRiZDYxYmRhYjQ3ZjhkM2U4Li42
N2ZlNGEzZWFiZGQzMDg5YjQzOTY3NmRjNDI0Y2JlZGNhZmU0Mjc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlUmVhZGVyU3luYy5oCkBAIC01NiwxOSArNTYsMTkgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB+RmlsZVJlYWRlclN5bmMoKSB7IH0KIAotICAgIFJlZlB0cjxKU0M6OkFycmF5
QnVmZmVyPiByZWFkQXNBcnJheUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxvYios
IEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBTdHJpbmcgcmVhZEFzQmluYXJ5U3RyaW5nKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBCbG9iKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFN0cmluZyByZWFk
QXNUZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEJs
b2IqIGJsb2IsIEV4Y2VwdGlvbkNvZGUmIGVjKQorICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVy
PiByZWFkQXNBcnJheUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgQmxvYiosIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICBTdHJpbmcgcmVhZEFzQmluYXJ5U3RyaW5nKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBCbG9iKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFN0cmluZyByZWFkQXNUZXh0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEJsb2IqIGJs
b2IsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHJlYWRBc1RleHQo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgYmxvYiwgIiIsIGVjKTsKKyAgICAgICAgcmV0dXJuIHJl
YWRBc1RleHQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgYmxvYiwgZW1wdHlTdHJpbmcoKSwgZWMp
OwogICAgIH0KLSAgICBTdHJpbmcgcmVhZEFzVGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
QmxvYiosIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBTdHJp
bmcgcmVhZEFzRGF0YVVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxvYiosIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICBTdHJpbmcgcmVhZEFzVGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
QmxvYiosIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBTdHJp
bmcgcmVhZEFzRGF0YVVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgQmxvYiosIEV4Y2VwdGlv
bkNvZGUmKTsKIAogcHJpdmF0ZToKICAgICBGaWxlUmVhZGVyU3luYygpOwogCi0gICAgdm9pZCBz
dGFydExvYWRpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEZpbGVSZWFkZXJMb2FkZXImLCBC
bG9iKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc3RhcnRMb2FkaW5nKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBGaWxlUmVhZGVyTG9hZGVyJiwgQmxvYiosIEV4Y2VwdGlvbkNvZGUmKTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRE9NVVJMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAppbmRleCAx
YWE1NWE4Mzk5NmRmNTIwOTFlMTM4NTQ5NzMyYzMwNDk4NDUyMDNhLi42MTFiN2E4MjNhZjI4N2Y2
ODU3ZGI3YjgyNmFhZjNhYjI3ZWMzZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0RPTVVSTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCkBAIC05MCwz
NyArOTAsMzQgQEAgdm9pZCBET01VUkw6OnNldEhyZWYoY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogICAgICAgICBlYyA9IFR5cGVFcnJvcjsKIH0KIAotU3RyaW5nIERPTVVS
TDo6Y3JlYXRlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIEJsb2IqIGJsb2IpCitTdHJpbmcgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgQmxvYiogYmxvYikK
IHsKLSAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgfHwgIWJsb2IpCisgICAgaWYgKCFi
bG9iKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgcmV0dXJuIGNyZWF0ZVB1YmxpY1VS
TChzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBibG9iKTsKIH0KIAotU3RyaW5nIERPTVVSTDo6Y3Jl
YXRlUHVibGljVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIFVSTFJlZ2lzdHJhYmxlKiByZWdpc3RyYWJsZSkKK1N0cmluZyBET01VUkw6OmNyZWF0ZVB1
YmxpY1VSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBV
UkxSZWdpc3RyYWJsZSogcmVnaXN0cmFibGUpCiB7Ci0gICAgVVJMIHB1YmxpY1VSTCA9IEJsb2JV
Ukw6OmNyZWF0ZVB1YmxpY1VSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdp
bigpKTsKKyAgICBVUkwgcHVibGljVVJMID0gQmxvYlVSTDo6Y3JlYXRlUHVibGljVVJMKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgaWYgKHB1YmxpY1VSTC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPnB1YmxpY1VSTE1hbmFnZXIoKS5yZWdpc3RlclVSTChzY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBwdWJsaWNVUkwsIHJlZ2lzdHJhYmxlKTsKKyAgICBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LnB1YmxpY1VSTE1hbmFnZXIoKS5yZWdpc3RlclVSTChzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LnNlY3VyaXR5T3JpZ2luKCksIHB1YmxpY1VSTCwgcmVnaXN0cmFi
bGUpOwogCiAgICAgcmV0dXJuIHB1YmxpY1VSTC5zdHJpbmcoKTsKIH0KIAotdm9pZCBET01VUkw6
OnJldm9rZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKK3ZvaWQgRE9NVVJMOjpyZXZva2VPYmpl
Y3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7Ci0gICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0
KQotICAgICAgICByZXR1cm47Ci0KICAgICBVUkwgdXJsKFVSTCgpLCB1cmxTdHJpbmcpOwogICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElP
TklORykKLSAgICByZXF1ZXN0LnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPnRvcE9yaWdpbigpLT5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpKTsKKyAg
ICByZXF1ZXN0LnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQudG9wT3JpZ2luKCktPmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkpOwogI2VuZGlmCi0gICAg
TWVtb3J5Q2FjaGU6OnJlbW92ZVJlcXVlc3RGcm9tU2Vzc2lvbkNhY2hlcygqc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgcmVxdWVzdCk7CisgICAgTWVtb3J5Q2FjaGU6OnJlbW92ZVJlcXVlc3RGcm9t
U2Vzc2lvbkNhY2hlcyhzY3JpcHRFeGVjdXRpb25Db250ZXh0LCByZXF1ZXN0KTsKIAotICAgIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQtPnB1YmxpY1VSTE1hbmFnZXIoKS5yZXZva2UodXJsKTsKKyAg
ICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LnB1YmxpY1VSTE1hbmFnZXIoKS5yZXZva2UodXJsKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9ET01VUkwuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgKaW5kZXggYmMzMDg0
OTZhZTZlNDlhMzFjNzc1NjEwNjEyYTgyMmI4NTY2NTIxZi4uMzgyY2RiYmE5N2Y3ZDU1MjUzODIw
ZDUyZDAyNjlkNDU3YmJhMDg1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01V
UkwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCkBAIC01MSwxMCArNTEsMTAg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0SHJlZihjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgdm9p
ZCBzZXRIcmVmKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIHN0YXRpYyBT
dHJpbmcgY3JlYXRlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbG9iKik7Ci0g
ICAgc3RhdGljIHZvaWQgcmV2b2tlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgQmxvYiopOworICAgIHN0YXRpYyB2b2lkIHJldm9rZU9iamVjdFVS
TChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJik7CiAKLSAgICBzdGF0aWMg
U3RyaW5nIGNyZWF0ZVB1YmxpY1VSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVVJMUmVnaXN0
cmFibGUqKTsKKyAgICBzdGF0aWMgU3RyaW5nIGNyZWF0ZVB1YmxpY1VSTChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgVVJMUmVnaXN0cmFibGUqKTsKIAogcHJpdmF0ZToKICAgICBET01VUkwoY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgYmFzZSwgRXhjZXB0aW9uQ29kZSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggM2E1M2RlN2FlZDYxNjU0
OWE4MTZiY2QxM2Q0OGMyZmRkOTA4MmQ1NC4uMWU4MmJjOTU5ZmJkNzI5MjM5ODA1YTczMzY4NjI1
MGUxNDkwNDA1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBA
IC05MDYsNyArOTA2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRTcmMoY29uc3QgU3Ry
aW5nJiB1cmwpCiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpzZXRTcmNPYmplY3QoTWVkaWFTdHJlYW0qIG1lZGlhU3RyZWFtKQordm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpzZXRTcmNPYmplY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgTWVkaWFTdHJlYW0qIG1lZGlhU3RyZWFtKQogewogICAgIC8vIEZJWE1FOiBTZXR0aW5nIHRo
ZSBzcmNPYmplY3QgYXR0cmlidXRlIG1heSBjYXVzZSBvdGhlciBjaGFuZ2VzIHRvIHRoZSBtZWRp
YSBlbGVtZW50J3MgaW50ZXJuYWwgc3RhdGU6CiAgICAgLy8gU3BlY2lmaWNhbGx5LCBpZiBzcmNP
YmplY3QgaXMgc3BlY2lmaWVkLCB0aGUgVUEgbXVzdCB1c2UgaXQgYXMgdGhlIHNvdXJjZSBvZiBt
ZWRpYSwgZXZlbiBpZiB0aGUgc3JjCkBAIC05MTYsNyArOTE2LDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpzZXRTcmNPYmplY3QoTWVkaWFTdHJlYW0qIG1lZGlhU3RyZWFtKQogICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ4OTYKIAogICAgIG1fbWVk
aWFTdHJlYW1TcmNPYmplY3QgPSBtZWRpYVN0cmVhbTsKLSAgICBzZXRTcmMoRE9NVVJMOjpjcmVh
dGVQdWJsaWNVUkwoQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1l
ZGlhU3RyZWFtKSk7CisgICAgc2V0U3JjKERPTVVSTDo6Y3JlYXRlUHVibGljVVJMKGNvbnRleHQs
IG1lZGlhU3RyZWFtKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaAppbmRleCA3YzBiZGMwMzMwM2VjZWYzOGJiNTY2MzQ4MjUxMTBlMTBjZDBkNDRiLi40
YTRkMGM1MGExYTRhNmNlZmI0NzljYzcyNzdkOTU0ZTRlMjViYjNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtOTYsNiArOTYsNyBAQCB0eXBlZGVmIFZlY3RvcjxD
dWVJbnRlcnZhbD4gQ3VlTGlzdDsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiBjbGFzcyBN
ZWRpYVN0cmVhbTsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAjZW5kaWYKIAogY2xh
c3MgSFRNTE1lZGlhRWxlbWVudApAQCAtMTU2LDcgKzE1Nyw3IEBAIHB1YmxpYzoKIAogI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCiAgICAgTWVkaWFTdHJlYW0qIHNyY09iamVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1fbWVkaWFTdHJlYW1TcmNPYmplY3QuZ2V0KCk7IH0KLSAgICB2b2lkIHNldFNyY09i
amVjdChNZWRpYVN0cmVhbSopOworICAgIHZvaWQgc2V0U3JjT2JqZWN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBNZWRpYVN0cmVhbSopOwogI2VuZGlmCiAKIC8vIG5ldHdvcmsgc3RhdGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
Y3BwCmluZGV4IDRlOGMxODA2MTQwZGZjMDAyMWM4ZDkwYTY3MmIyOGJjNWZkMWEzMDEuLmQyOWI1
MjcyY2FmNWFlYmFlY2FhOTEwMzI5MmIxNWUzMTBiMmRhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApAQCAtMjA1LDcg
KzIwNSwxMyBAQCB2b2lkIEV4ZWN1dGFibGVXaXRoRGF0YWJhc2U6OnN0YXJ0KElEQkZhY3Rvcnkq
IGlkYkZhY3RvcnksIFNlY3VyaXR5T3JpZ2luKiwgY29ucwogewogICAgIFJlZjxPcGVuRGF0YWJh
c2VDYWxsYmFjaz4gY2FsbGJhY2sgPSBPcGVuRGF0YWJhc2VDYWxsYmFjazo6Y3JlYXRlKHRoaXMp
OwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxJREJPcGVuREJSZXF1ZXN0
PiBpZGJPcGVuREJSZXF1ZXN0ID0gaWRiRmFjdG9yeS0+b3Blbihjb250ZXh0KCksIGRhdGFiYXNl
TmFtZSwgZWMpOworCisgICAgaWYgKCFjb250ZXh0KCkpIHsKKyAgICAgICAgcmVxdWVzdENhbGxi
YWNrKCkuc2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBvcGVuIGRhdGFiYXNlLiIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IGlkYk9wZW5EQlJl
cXVlc3QgPSBpZGJGYWN0b3J5LT5vcGVuKCpjb250ZXh0KCksIGRhdGFiYXNlTmFtZSwgZWMpOwog
ICAgIGlmIChlYykgewogICAgICAgICByZXF1ZXN0Q2FsbGJhY2soKS5zZW5kRmFpbHVyZSgiQ291
bGQgbm90IG9wZW4gZGF0YWJhc2UuIik7CiAgICAgICAgIHJldHVybjsKQEAgLTUxMyw3ICs1MTks
NyBAQCB2b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YWJhc2VOYW1lcyhF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbgogICAgICAgICByZXR1cm47CiAKICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8SURCUmVxdWVzdD4gaWRiUmVxdWVzdCA9IGlk
YkZhY3RvcnktPmdldERhdGFiYXNlTmFtZXMoZG9jdW1lbnQsIGVjKTsKKyAgICBSZWZQdHI8SURC
UmVxdWVzdD4gaWRiUmVxdWVzdCA9IGlkYkZhY3RvcnktPmdldERhdGFiYXNlTmFtZXMoKmRvY3Vt
ZW50LCBlYyk7CiAgICAgaWYgKCFpZGJSZXF1ZXN0IHx8IGVjKSB7CiAgICAgICAgIHJlcXVlc3RD
YWxsYmFjay0+c2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBvYnRhaW4gZGF0YWJhc2UgbmFtZXMuIik7
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCmluZGV4IDJlNDM5OGQ1MTEx
Y2EyOWZmODZjZjNkNGM5ODhlMTE0MGFjYzcyY2IuLmIzNGYzNTliNjFhYzZmYzNlODY3YWY2ZTZl
ODY0N2Q3YzI1MjAyY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApAQCAtMTYxLDggKzE2MSwx
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEVsZW1lbnQqIGZyYW1lRWxlbWVudCgp
IGNvbnN0OwogCiAgICAgICAgIHZvaWQgZm9jdXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogPSBu
dWxscHRyKTsKKyAgICAgICAgdm9pZCBmb2N1cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSB7IGZvY3VzKCZjb250ZXh0KTsgfQogICAgICAgICB2b2lkIGJsdXIoKTsKICAgICAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjbG9zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiA9IG51bGxw
dHIpOworICAgICAgICB2b2lkIGNsb3NlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IHsgY2xvc2UoJmNvbnRleHQpOyB9CiAgICAgICAgIHZvaWQgcHJpbnQoKTsKICAgICAgICAgdm9p
ZCBzdG9wKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmgKaW5kZXggYWUzN2ZjMzg3ODhmYzdjNzMzZDdj
OGZhMzZjZTE4NGM4NTNlZTg2YS4uNWFlNTBiZTYzYTI5YTM4NjI5OTM1Y2E2YWU1NTg1MmIzZjhi
ZDU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmgKQEAgLTUxLDYgKzUxLDEwIEBAIHB1YmxpYzoKICAg
ICB2b2lkIGZvcndhcmQoKTsKICAgICB2b2lkIGdvKGludCBkaXN0YW5jZSk7CiAKKyAgICB2b2lk
IGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeyBiYWNrKCZjb250ZXh0KTsg
fQorICAgIHZvaWQgZm9yd2FyZChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7IGZv
cndhcmQoJmNvbnRleHQpOyB9CisgICAgdm9pZCBnbyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBpbnQgZGlzdGFuY2UpIHsgZ28oJmNvbnRleHQsIGRpc3RhbmNlKTsgfQorCiAgICAg
dm9pZCBiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICB2b2lkIGZvcndhcmQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAgIHZvaWQgZ28oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGludCBkaXN0YW5jZSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>