<?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>197648</bug_id>
          
          <creation_ts>2019-05-06 22:06:44 -0700</creation_ts>
          <short_desc>Storage Access API: Make two changes requested by developers and complete refactoring and cleanup</short_desc>
          <delta_ts>2019-06-05 10:46:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=197670</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ehsan</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1533771</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-05-06 22:06:44 -0700</bug_when>
    <thetext>Developers have requested two minor changes to the Storage Access API which I believe will also make our implementation closer to Mozillas:
1) Only consume the user gesture when the user explicitly denies access, i.e. when the user is prompted and says &quot;Don&apos;t allow.&quot;
2) Make document.hasStorageAccess() return true when the feature is off – in the case of Safari, when ITP is off.

In addition to this, we have refactoring and cleanup to do. Namely:
1) Make use of WebCore::RegistrableDomain all the way.
2) Remove a such of dead code in WebKit::NetworkProcess since the call now go through NetworkConnectionToWebProcess.
3) Fix some weird naming.
4) Introduce boolean enums for state handling.
5) Break out the Storage Access API functionality into a supplement of Document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1533772</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-05-06 22:07:10 -0700</bug_when>
    <thetext>&lt;rdar://problem/50527493&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1533780</commentid>
    <comment_count>2</comment_count>
      <attachid>369233</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-05-06 22:32:31 -0700</bug_when>
    <thetext>Created attachment 369233
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1533781</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-06 22:35:26 -0700</bug_when>
    <thetext>Attachment 369233 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:488:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/page/ChromeClient.h:489:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 2 in 39 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1533783</commentid>
    <comment_count>4</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-05-06 22:35:55 -0700</bug_when>
    <thetext>The style error is because the whole class ChromeClient is marked WEBCORE_EXPORT. There are several inline function in there since before, including the ones I touch here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1533962</commentid>
    <comment_count>5</comment_count>
      <attachid>369299</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-05-07 10:03:48 -0700</bug_when>
    <thetext>Created attachment 369299
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1533964</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-07 10:06:24 -0700</bug_when>
    <thetext>Attachment 369299 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:489:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/page/ChromeClient.h:490:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 2 in 39 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1533968</commentid>
    <comment_count>7</comment_count>
      <attachid>369300</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-05-07 10:34:25 -0700</bug_when>
    <thetext>Created attachment 369300
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1533971</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-07 10:38:00 -0700</bug_when>
    <thetext>Attachment 369300 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:489:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/page/ChromeClient.h:490:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 2 in 40 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1534011</commentid>
    <comment_count>9</comment_count>
      <attachid>369300</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-05-07 11:54:27 -0700</bug_when>
    <thetext>Comment on attachment 369300
Patch

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

r=me with changes.

&gt; Source/WebCore/dom/DocumentStorageAccess.cpp:60
&gt; +    return &quot;DocumentStorageAccess&quot;_s;

I do not think this should have a _s prefix since this returns a const char*.

&gt; Source/WebCore/dom/DocumentStorageAccess.cpp:109
&gt; +        page-&gt;chrome().client().hasStorageAccess(WTFMove(subFrameDomain), WTFMove(topFrameDomain), frameID.value(), pageID.value(), [documentReference = makeWeakPtr(*this), promise = WTFMove(promise)] (bool hasAccess) {

documentReference -&gt; weakThis ?

&gt; LayoutTests/http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-expected.txt:8
&gt; +Some tests failed.

This looks bad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1534025</commentid>
    <comment_count>10</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-05-07 12:13:10 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #9)
&gt; Comment on attachment 369300 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=369300&amp;action=review
&gt; 
&gt; r=me with changes.
&gt; 
&gt; &gt; Source/WebCore/dom/DocumentStorageAccess.cpp:60
&gt; &gt; +    return &quot;DocumentStorageAccess&quot;_s;
&gt; 
&gt; I do not think this should have a _s prefix since this returns a const char*.

Will fix.

&gt; &gt; Source/WebCore/dom/DocumentStorageAccess.cpp:109
&gt; &gt; +        page-&gt;chrome().client().hasStorageAccess(WTFMove(subFrameDomain), WTFMove(topFrameDomain), frameID.value(), pageID.value(), [documentReference = makeWeakPtr(*this), promise = WTFMove(promise)] (bool hasAccess) {
&gt; 
&gt; documentReference -&gt; weakThis ?

Will fix.

&gt; &gt; LayoutTests/http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-expected.txt:8
&gt; &gt; +Some tests failed.
&gt; 
&gt; This looks bad.

Yeah, this is me leaving it behind. I filed https://bugs.webkit.org/show_bug.cgi?id=197670 to track the work to enable this test.

Thanks for the review, Chris!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1534026</commentid>
    <comment_count>11</comment_count>
      <attachid>369310</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-05-07 12:14:25 -0700</bug_when>
    <thetext>Created attachment 369310
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1534053</commentid>
    <comment_count>12</comment_count>
      <attachid>369310</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-07 12:55:37 -0700</bug_when>
    <thetext>Comment on attachment 369310
Patch for landing

Clearing flags on attachment: 369310

Committed r245025: &lt;https://trac.webkit.org/changeset/245025&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1534054</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-07 12:55:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542076</commentid>
    <comment_count>14</comment_count>
    <who name="Ehsan Akhgari [:ehsan]">ehsan</who>
    <bug_when>2019-06-05 10:46:41 -0700</bug_when>
    <thetext>I filed https://bugzilla.mozilla.org/show_bug.cgi?id=1557097 to adopt a behaviour similar to (1) in Gecko.  I believe (2) is what we do already.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>369233</attachid>
            <date>2019-05-06 22:32:31 -0700</date>
            <delta_ts>2019-05-07 10:03:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197648-20190506223231.patch</filename>
            <type>text/plain</type>
            <size>156570</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1MDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDQyNGM5ZWM3MGU5YzBh
NTYwNjg3MjFmNTc4OTZhZWIyNzc0YWE5Ny4uNzU3NjBhZTI5YzRlZTE2NjQ5MjdmNDU2MzA5ZWVl
YTRmOTk2ZWE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE5LTA1LTA2ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3JhZ2UgQWNjZXNz
IEFQSTogTWFrZSB0d28gY2hhbmdlcyByZXF1ZXN0ZWQgYnkgZGV2ZWxvcGVycyBhbmQgY29tcGxl
dGUgcmVmYWN0b3JpbmcgYW5kIGNsZWFudXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5NzY0OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTA1Mjc0
OTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGV2
ZWxvcGVycyBoYXZlIHJlcXVlc3RlZCB0d28gbWlub3IgY2hhbmdlcyB0byB0aGUgU3RvcmFnZSBB
Y2Nlc3MgQVBJOgorICAgICAgICAtIE9ubHkgY29uc3VtZSB0aGUgdXNlciBnZXN0dXJlIHdoZW4g
dGhlIHVzZXIgZXhwbGljaXRseSBkZW5pZXMgYWNjZXNzLgorICAgICAgICAtIE1ha2UgZG9jdW1l
bnQuaGFzU3RvcmFnZUFjY2VzcygpIHJldHVybiB0cnVlIGluc3RlYWQgb2YgZmFsc2Ugd2hlbiB0
aGUgZmVhdHVyZSBpcyBvZmYuCisKKyAgICAgICAgSW4gYWRkaXRpb24gdG8gdGhpcywgd2UgaGF2
ZSByZWZhY3RvcmluZyBhbmQgY2xlYW51cCB0byBkby4gTmFtZWx5OgorICAgICAgICAtIE1ha2Ug
dXNlIG9mIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGFsbCB0aGUgd2F5LgorICAgICAgICAt
IFJlbW92ZSBkZWFkIGNvZGUgaW4gV2ViS2l0OjpOZXR3b3JrUHJvY2VzcyBzaW5jZSB0aGUgY2Fs
bCBub3cgZ28gdGhyb3VnaCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy4KKyAgICAgICAg
LSBGaXggc29tZSB3ZWlyZCBuYW1pbmcuCisgICAgICAgIC0gSW50cm9kdWNlIGJvb2xlYW4gZW51
bXMgZm9yIHN0YXRlIGhhbmRsaW5nLgorICAgICAgICAtIEJyZWFrIG91dCB0aGUgU3RvcmFnZSBB
Y2Nlc3MgQVBJIGZ1bmN0aW9uYWxpdHkgaW50byBhIHN1cHBsZW1lbnQgb2YgV2ViQ29yZTo6RG9j
dW1lbnQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGVzdHM6IGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9kZW55LXdpdGgtcHJvbXB0LWRvZXMtbm90
LXByZXNlcnZlLWdlc3R1cmUuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zdG9yYWdl
QWNjZXNzL2Rlbnktd2l0aG91dC1wcm9tcHQtcHJlc2VydmVzLWdlc3R1cmUuaHRtbAorICAgICAg
ICAgICAgICAgaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2dyYW50LXdpdGgtcHJvbXB0LXByZXNl
cnZlcy1nZXN0dXJlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vz
cy9oYXMtc3RvcmFnZS1hY2Nlc3MtdHJ1ZS1pZi1mZWF0dXJlLW9mZi5odG1sCisKKyAgICAgICAg
KiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6Cisg
ICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6aGFzU3RvcmFnZUFjY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmVuYWJsZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y29uc3VtZVRlbXBvcmFyeVRpbWVVc2VyR2Vz
dHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aGFzRnJhbWVTcGVj
aWZpY1N0b3JhZ2VBY2Nlc3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnNldEhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRVc2Vy
R3JhbnRzU3RvcmFnZUFjY2Vzc092ZXJyaWRlKTogRGVsZXRlZC4KKyAgICAgICAgICAgIEFsbCBv
ZiB0aGlzIGhhcyBiZWVuIG1vdmVkIHRvIHRoZSBzdXBwbGVtZW50IFdlYkNvcmU6OkRvY3VtZW50
U3RvcmFnZUFjY2Vzcy4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAgICAg
VGhlIFN0b3JhZ2UgQWNjZXNzIEFQSSBoYXMgYmVlbiBtb3ZlZCB0byBEb2N1bWVudFN0b3JhZ2VB
Y2Nlc3MuaWRsLgorICAgICAgICAqIGRvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3RvcmFnZUFjY2Vzczo6ZnJvbSk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnN1cHBsZW1lbnROYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3RvcmFnZUFjY2Vzczo6aGFzU3RvcmFnZUFjY2Vzcyk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdl
QWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3RvcmFnZUFjY2Vzczo6ZW5hYmxl
VGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3Rv
cmFnZUFjY2Vzczo6Y29uc3VtZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6Omhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNj
ZXNzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3RvcmFnZUFjY2Vzczo6c2V0
SGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFN0
b3JhZ2VBY2Nlc3MuaDogQWRkZWQuCisgICAgICAgICogZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vz
cy5pZGw6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRV
c2VyR3JhbnRzU3RvcmFnZUFjY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgICAgICBUaGlzIHdhcyBk
ZWFkIGNvZGUuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTktMDUtMDYgIEphbWVzIFNhdmFnZSAgPGphbWVzLnNh
dmFnZUBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wcm92ZSBjb29yZGluYXRpb24gZm9yIGNyZWF0
aW5nIFVJV2luZG93IGluc3RhbmNlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzVjMzczZDA4OGZlN2IyZDE4Mzhl
NzY4YThhZWFlMDlkYTRlZTRkZi4uYmQ2MmZjYzUwNGE1MGMwMWRkNDdkODZhYzcxM2ZhOGJmMWIx
YTNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDcgQEAKKzIwMTktMDUtMDYgIEpvaG4gV2lsYW5k
ZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcmFnZSBBY2Nlc3MgQVBJOiBN
YWtlIHR3byBjaGFuZ2VzIHJlcXVlc3RlZCBieSBkZXZlbG9wZXJzIGFuZCBjb21wbGV0ZSByZWZh
Y3RvcmluZyBhbmQgY2xlYW51cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk3NjQ4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MDUyNzQ5Mz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEZXZlbG9wZXJz
IGhhdmUgcmVxdWVzdGVkIHR3byBtaW5vciBjaGFuZ2VzIHRvIHRoZSBTdG9yYWdlIEFjY2VzcyBB
UEk6CisgICAgICAgIC0gT25seSBjb25zdW1lIHRoZSB1c2VyIGdlc3R1cmUgd2hlbiB0aGUgdXNl
ciBleHBsaWNpdGx5IGRlbmllcyBhY2Nlc3MuCisgICAgICAgIC0gTWFrZSBkb2N1bWVudC5oYXNT
dG9yYWdlQWNjZXNzKCkgcmV0dXJuIHRydWUgaW5zdGVhZCBvZiBmYWxzZSB3aGVuIHRoZSBmZWF0
dXJlIGlzIG9mZi4KKworICAgICAgICBJbiBhZGRpdGlvbiB0byB0aGlzLCB3ZSBoYXZlIHJlZmFj
dG9yaW5nIGFuZCBjbGVhbnVwIHRvIGRvLiBOYW1lbHk6CisgICAgICAgIC0gTWFrZSB1c2Ugb2Yg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gYWxsIHRoZSB3YXkuCisgICAgICAgIC0gUmVtb3Zl
IGRlYWQgY29kZSBpbiBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzIHNpbmNlIHRoZSBjYWxsIG5vdyBn
byB0aHJvdWdoIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLgorICAgICAgICAtIEZpeCBz
b21lIHdlaXJkIG5hbWluZy4KKyAgICAgICAgLSBJbnRyb2R1Y2UgYm9vbGVhbiBlbnVtcyBmb3Ig
c3RhdGUgaGFuZGxpbmcuCisgICAgICAgIC0gQnJlYWsgb3V0IHRoZSBTdG9yYWdlIEFjY2VzcyBB
UEkgZnVuY3Rpb25hbGl0eSBpbnRvIGEgc3VwcGxlbWVudCBvZiBXZWJDb3JlOjpEb2N1bWVudC4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwcyk6CisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3Rv
cmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFj
Y2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNVc2VyR3JhbnRlZFN0b3JhZ2VBY2Nl
c3NUaHJvdWdoUHJvbXB0IGNvbnN0KToKKyAgICAgICAgICAgIFRoZXNlIGNoYW5nZXMgYXJlIGR1
ZSB0byB0aGUgbmV3IGVudW1zIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIGFuZAor
ICAgICAgICAgICAgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlcXVlc3RTdG9y
YWdlQWNjZXNzVW5kZXJPcGVuZXIpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50
ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmU6Omhhc1VzZXJHcmFudGVkU3RvcmFnZUFjY2Vzc1Rocm91Z2hQcm9tcHQpOgorICAgICAgICAg
ICAgVGhlc2UgY2hhbmdlcyBhcmUgZHVlIHRvIHRoZSBuZXcgZW51bXMgV2ViQ29yZTo6U3RvcmFn
ZUFjY2Vzc1dhc0dyYW50ZWQgYW5kCisgICAgICAgICAgICBXZWJDb3JlOjpTdG9yYWdlQWNjZXNz
UHJvbXB0V2FzU2hvd24uCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAgICAg
VGhlc2UgY2hhbmdlcyBhcmUgZHVlIHRvIHRoZSBuZXcgZW51bXMgV2ViQ29yZTo6U3RvcmFnZUFj
Y2Vzc1dhc0dyYW50ZWQgYW5kCisgICAgICAgICAgICBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJv
bXB0V2FzU2hvd24uCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNhbGxH
cmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKToKKyAgICAgICAgICAgIFRoZXNlIGNoYW5nZXMgYXJl
IGR1ZSB0byB0aGUgbmV3IGVudW1zIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIGFu
ZAorICAgICAgICAgICAgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9y
YWdlQWNjZXNzR3JhbnRlZCk6IERlbGV0ZWQuCisgICAgICAgICAgICBUaGlzIGZ1bmN0aW9uIGlz
IG5vdyBubyBsb25nZXIgZXhwb3NlZCBhbmQgaXRzIGZ1bmN0aW9uYWxpdHkgY291bGQgYmUgZm9s
ZGVkIGludG8KKyAgICAgICAgICAgIHRoZSBleGlzdGluZyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKCkgd2hpY2ggaXMgbW9yZQorICAgICAgICAg
ICAgY2xlYXJseSBuYW1lZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3MpOgorICAgICAgICAgICAgVGhlc2UgY2hhbmdlcyBhcmUgZHVlIHRvIHRoZSBuZXcgZW51bXMg
V2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgYW5kCisgICAgICAgICAgICBXZWJDb3Jl
OjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24uCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aGFzU3RvcmFnZUFjY2Vzcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vz
c0dyYW50ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Z3Jh
bnRTdG9yYWdlQWNjZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAgICAgVGhlc2Ug
ZnVuY3Rpb25zIHdlcmUgbGVmdCBiZWhpbmQgaW4gdGhlIG1vdmUgb2YgSVRQIHRvIHRoZSBuZXR3
b3JrIHByb2Nlc3MuCisgICAgICAgICAgICBUaGlzIGNvbW11bmljYXRpb24gZ29lcyB0aHJvdWdo
IFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mgc2luY2UgYSB3aGlsZSBiYWNr
LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICAgICBJbnN0cnVjdGlvbnMgZm9yIGRl
cml2ZWQgSVBDIGNvZGUgb24gaG93IHRvIGluY2x1ZGUgdGhlIG5ldyBlbnVtcworICAgICAgICAg
ICAgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgYW5kIFdlYkNvcmU6OlN0b3JhZ2VB
Y2Nlc3NQcm9tcHRXYXNTaG93bi4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6
aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6aGFzU3RvcmFnZUFjY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Z3JhbnRTdG9yYWdlQWNj
ZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVt
b3ZlQWxsU3RvcmFnZUFjY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgICAgICBUaGVzZSBmdW5jdGlv
bnMgd2VyZSBsZWZ0IGJlaGluZCBpbiB0aGUgbW92ZSBvZiBJVFAgdG8gdGhlIG5ldHdvcmsgcHJv
Y2Vzcy4KKyAgICAgICAgICAgIFRoaXMgY29tbXVuaWNhdGlvbiBnb2VzIHRocm91Z2ggV2ViS2l0
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBzaW5jZSBhIHdoaWxlIGJhY2suCisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Z3JhbnRTdG9yYWdlQWNj
ZXNzKTogRGVsZXRlZC4KKyAgICAgICAgICAgIFRoZXNlIGZ1bmN0aW9ucyB3ZXJlIGxlZnQgYmVo
aW5kIGluIHRoZSBtb3ZlIG9mIElUUCB0byB0aGUgbmV0d29yayBwcm9jZXNzLgorICAgICAgICAg
ICAgVGhpcyBjb21tdW5pY2F0aW9uIGdvZXMgdGhyb3VnaCBXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzIHNpbmNlIGEgd2hpbGUgYmFjay4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hy
b21lQ2xpZW50OjpoYXNTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21l
Q2xpZW50OjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgICAgICBUaGVzZSBjaGFuZ2Vz
IGFyZSBkdWUgdG8gdGhlIG5ldyBlbnVtcyBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRl
ZCBhbmQKKyAgICAgICAgICAgIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bi4g
VGhleSBhbHNvIHJlY2VpdmUgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4KKyAgICAgICAgICAg
IG9iamVjdHMgaW5zdGVhZCBvZiBTdHJpbmdzIG5vdy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFzU3RvcmFnZUFj
Y2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToK
KyAgICAgICAgICAgIFRoZXNlIGNoYW5nZXMgYXJlIGR1ZSB0byB0aGUgbmV3IGVudW1zIFdlYkNv
cmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIGFuZAorICAgICAgICAgICAgV2ViQ29yZTo6U3Rv
cmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLiBUaGV5IGFsc28gcmVjZWl2ZSBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbgorICAgICAgICAgICAgb2JqZWN0cyBpbnN0ZWFkIG9mIFN0cmluZ3Mgbm93
LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisKIDIwMTktMDUtMDYg
IEphbWVzIFNhdmFnZSAgPGphbWVzLnNhdmFnZUBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wcm92
ZSBjb29yZGluYXRpb24gZm9yIGNyZWF0aW5nIFVJV2luZG93IGluc3RhbmNlcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGMzNTEzM2Uw
Y2NiNzJkMzQ0MzQzNGM0ZTE5ZTcxMGZmNDQ5NTcxYjYuLmVmMjg0ZjVjNmZhOGM2MTc0NjdiMzkx
ZjAxNzYzY2EyZWM3ODVmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMt
aW5wdXQueGNmaWxlbGlzdApAQCAtNTYyLDYgKzU2Miw3IEBAICQoUFJPSkVDVF9ESVIpL2RvbS9E
b2N1bWVudEFuZEVsZW1lbnRFdmVudEhhbmRsZXJzLmlkbAogJChQUk9KRUNUX0RJUikvZG9tL0Rv
Y3VtZW50RnJhZ21lbnQuaWRsCiAkKFBST0pFQ1RfRElSKS9kb20vRG9jdW1lbnRGdWxsc2NyZWVu
LmlkbAogJChQUk9KRUNUX0RJUikvZG9tL0RvY3VtZW50T3JTaGFkb3dSb290LmlkbAorJChQUk9K
RUNUX0RJUikvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5pZGwKICQoUFJPSkVDVF9ESVIpL2Rv
bS9Eb2N1bWVudFRvdWNoLmlkbAogJChQUk9KRUNUX0RJUikvZG9tL0RvY3VtZW50VHlwZS5pZGwK
ICQoUFJPSkVDVF9ESVIpL2RvbS9FbGVtZW50LmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCAxYThjOTMyYTM2M2RjYjIwMzQ2MmQy
YzNkZjRlZWM4ZGFhZmQ2ZWFmLi44YmQ3ZjlkMzhhZDhkZWQxZjc2MWNjYjQ0MzRjYTRiYjAxNTIw
OTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxl
bGlzdApAQCAtNDczLDYgKzQ3Myw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTRG9jdW1lbnRGdWxsc2NyZWVuLmNwcAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudEZ1bGxzY3JlZW4uaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudE9yU2hhZG93
Um9vdC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
RG9jdW1lbnRPclNoYWRvd1Jvb3QuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNEb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50VGlt
ZWxpbmUuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0RvY3VtZW50VGltZWxpbmUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNEb2N1bWVudFRpbWVsaW5lT3B0aW9ucy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCmluZGV4IDA0MzNmYWI4ODc0YTUwMTkzNjc2ODg0MDE2Y2ViZjE2ZDU4ODBlMDQu
LmY0NTZiNDU4YzE5NDg4ZWI2MjhkYzM5YmQzOWE0NDI0NjA1NjYyYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQpAQCAtNTg0LDYgKzU4NCw3IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwK
ICAgICAkKFdlYkNvcmUpL2RvbS9Eb2N1bWVudEZ1bGxzY3JlZW4uaWRsIFwKICAgICAkKFdlYkNv
cmUpL2RvbS9Eb2N1bWVudEZyYWdtZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vRG9jdW1l
bnRPclNoYWRvd1Jvb3QuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2RvbS9Eb2N1bWVudFN0b3JhZ2VB
Y2Nlc3MuaWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9Eb2N1bWVudFR5cGUuaWRsIFwKICAgICAk
KFdlYkNvcmUpL2RvbS9FbGVtZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vRXJyb3JFdmVu
dC5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBiYTYwOTdlOWI3NDcwODBlYzgxMDk1ZmMwYzBmODI4
OGIwNjE2ODMxLi5iY2VjYmE5MDg5NzY2ZjkwZjk1MGMyMTc4M2FmNjJlMTE4ZmZiNmNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dApAQCAtODQ0LDYgKzg0NCw3IEBAIGRvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAog
ZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKIGRvbS9Eb2N1bWVudFBhcnNlci5jcHAK
IGRvbS9Eb2N1bWVudFNoYXJlZE9iamVjdFBvb2wuY3BwCitkb20vRG9jdW1lbnRTdG9yYWdlQWNj
ZXNzLmNwcAogZG9tL0RvY3VtZW50VG91Y2guY3BwIEBuby11bmlmeQogZG9tL0RvY3VtZW50VHlw
ZS5jcHAKIGRvbS9FbGVtZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBkY2RjODc0YTdiOTc3ZmFhODZlZDI0NzQ2NjEw
ZGI1ODhiMWVmOTMuLjY4MGQ2NDQ2ZjU5NGM1ZjViY2UwMjUwMGYwYWM1MTUxZmY3NzU5YTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTE5NzUsNiArMTk3NSw3IEBACiAJCTZCMzQ4MDk0MEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRp
dmVJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIE5hdGl2ZUltYWdlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkI0RTg2MTMyMjFCNzEzRjAwMjJG
Mzg5IC8qIFJlZ2lzdHJhYmxlRG9tYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2QjRFODYxMjIyMUI3MTNGMDAyMkYzODkgLyogUmVnaXN0cmFibGVE
b21haW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk2QjY5M0EyRTFDNTFBODJFMDBCMDNCRUYgLyogUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCNjkzQTJEMUM1MUE4
MkUwMEIwM0JFRiAvKiBSZXNvdXJjZUxvYWRPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTZCREI1REMyMjI3QkQzQjgwMDkxOTc3MCAv
KiBEb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDZCREI1REMwMjI3QkQzQjgwMDkxOTc3MCAvKiBEb2N1bWVudFN0b3Jh
Z2VBY2Nlc3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk2QzRDOTZERjFBRDQ0ODM1MDAzNjNGNjQgLyogSlNSZWFkYWJsZUJ5dGVTdHJlYW1Db250
cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
QzRDOTZEQjFBRDQ0ODM1MDAzNjNGNjQgLyogSlNSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVy
LmggKi87IH07CiAJCTZDNEM5NkRGMUFENDQ4MzUwMDM2NTY3MiAvKiBKU1JlYWRhYmxlU3RyZWFt
QllPQlJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZDNEM5NkRCMUFENDQ4MzUwMDM2NTY3MiAvKiBKU1JlYWRhYmxlU3RyZWFtQllPQlJlcXVl
c3QuaCAqLzsgfTsKIAkJNkM0Qzk2REYxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJl
YW1EZWZhdWx0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkM0Qzk2REIxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1E
ZWZhdWx0Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC05MDM3LDYgKzkwMzgsOSBAQAogCQk2QjRFODYxMjIyMUI3MTNGMDAyMkYz
ODkgLyogUmVnaXN0cmFibGVEb21haW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaXN0cmFibGVEb21h
aW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkI2OTNBMkQxQzUxQTgyRTAwQjAz
QkVGIC8qIFJlc291cmNlTG9hZE9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlc291cmNlTG9hZE9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTZCNjkzQTMzMUM1MUE5NUQwMEIwM0JFRiAvKiBSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZUxvYWRPYnNlcnZl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZCREI1REMwMjI3QkQzQjgwMDkx
OTc3MCAvKiBEb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRT
dG9yYWdlQWNjZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZCREI1REMxMjI3
QkQzQjgwMDkxOTc3MCAvKiBEb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNkJEQjVEQzUyMjdDQTBFQjAwOTE5NzcwIC8qIERvY3VtZW50U3RvcmFnZUFjY2Vzcy5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNkM0Qzk2REExQUQ0NDgzNTAwMzYzRjY0IC8qIEpTUmVhZGFibGVCeXRlU3RyZWFt
Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Jl
YWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2QzRDOTZEQTFBRDQ0ODM1MDAzNjU2NzIgLyogSlNSZWFkYWJsZVN0cmVhbUJZT0JSZXF1
ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUmVhZGFibGVT
dHJlYW1CWU9CUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZDNEM5
NkRBMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSZWFkYWJsZVN0cmVh
bURlZmF1bHRDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1
OTIxLDEwICsyNTkyNSwxMCBAQAogCQkJCUNERTNBODU1MTdGNjAyMDQwMEM1QkUyMCAvKiBBdWRp
b1RyYWNrUHJpdmF0ZUFWRk9iakMubW0gKi8sCiAJCQkJQ0Q1NEE3NjAxODBGOUY3MDAwQjA3NkM5
IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcCAqLywKIAkJCQlDRDU0
QTc2MTE4MEY5RjcwMDBCMDc2QzkgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMuaCAqLywKLQkJCQlDREVDQTg5OTFFREY0NDdEMDBEQ0IwOEIgLyogQVZBc3NldFRyYWNrVXRp
bGl0aWVzLmggKi8sCi0JCQkJQ0RFQ0E4OTgxRURGNDQ3RDAwRENCMDhCIC8qIEFWQXNzZXRUcmFj
a1V0aWxpdGllcy5tbSAqLywKIAkJCQkwN0M4QUQxMjFEMDczRDYzMDA4N0M1Q0UgLyogQVZBc3Nl
dE1JTUVUeXBlQ2FjaGUuaCAqLywKIAkJCQkwN0M4QUQxMTFEMDczRDYzMDA4N0M1Q0UgLyogQVZB
c3NldE1JTUVUeXBlQ2FjaGUubW0gKi8sCisJCQkJQ0RFQ0E4OTkxRURGNDQ3RDAwRENCMDhCIC8q
IEFWQXNzZXRUcmFja1V0aWxpdGllcy5oICovLAorCQkJCUNERUNBODk4MUVERjQ0N0QwMERDQjA4
QiAvKiBBVkFzc2V0VHJhY2tVdGlsaXRpZXMubW0gKi8sCiAJCQkJQ0QxMUIzREYyMjdDQUFBOTAw
MjNBRkM3IC8qIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUuaCAqLywKIAkJCQlDRDEx
QjNFMDIyN0NBQUE5MDAyM0FGQzcgLyogQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5t
bSAqLywKIAkJCQlDRDc4QTJFRTFGNzU2NDg2MDBERTM3MUIgLyogQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakMuaCAqLywKQEAgLTI3MjI3LDYgKzI3MjMxLDkgQEAKIAkJCQlCQ0NG
QkFFNzBCNTE1MkVEMDAwMUYxRDcgLyogRG9jdW1lbnRQYXJzZXIuaCAqLywKIAkJCQlBRDZFNzFB
QTE2Njg4OTlEMDAzMjBDMTMgLyogRG9jdW1lbnRTaGFyZWRPYmplY3RQb29sLmNwcCAqLywKIAkJ
CQlBRDZFNzFBQjE2Njg4OTlEMDAzMjBDMTMgLyogRG9jdW1lbnRTaGFyZWRPYmplY3RQb29sLmgg
Ki8sCisJCQkJNkJEQjVEQzEyMjdCRDNCODAwOTE5NzcwIC8qIERvY3VtZW50U3RvcmFnZUFjY2Vz
cy5jcHAgKi8sCisJCQkJNkJEQjVEQzAyMjdCRDNCODAwOTE5NzcwIC8qIERvY3VtZW50U3RvcmFn
ZUFjY2Vzcy5oICovLAorCQkJCTZCREI1REM1MjI3Q0EwRUIwMDkxOTc3MCAvKiBEb2N1bWVudFN0
b3JhZ2VBY2Nlc3MuaWRsICovLAogCQkJCTg2RDk4MkY2MTI1QzE1NDAwMEFEOUUzRCAvKiBEb2N1
bWVudFRpbWluZy5oICovLAogCQkJCTdDRTdGQTVCMUVGODgyMzAwMDYwQzlENiAvKiBEb2N1bWVu
dFRvdWNoLmNwcCAqLywKIAkJCQk3Q0U3RkE1OTFFRjg4MjMwMDA2MEM5RDYgLyogRG9jdW1lbnRU
b3VjaC5oICovLApAQCAtMjgyMzQsMTEgKzI4MjQxLDExIEBACiAJCQkJQzlENDY3MDUxRTYwQzQ2
NTAwODE5NUZCIC8qIEF1dG9wbGF5RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ1ODMwRDRF
MTY3OUI0RjgwMEFDRjhDMyAvKiBBdXRvc2Nyb2xsQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQThDRkYwNEUwQTE1NEYwOTAwMEE0MjM0IC8qIEF1dG9UYWJsZUxheW91dC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMDdGNEU5MzMyMEIzNTg3RjAwMkUzODAzIC8qIEFWQXNzZXRNSU1FVHlw
ZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREVDQTg5QjFFREY0NDdEMDBEQ0IwOEIgLyog
QVZBc3NldFRyYWNrVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREM2NzUyNzFFQUVB
OUQ0MDA3MjdDODQgLyogQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDREM2NzUyMzFFQUVBOUI3MDA3MjdDODQgLyogQVZBdWRpb1Nlc3Npb25DYXB0dXJl
RGV2aWNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcwMzYzRTIxODFBMUNEQzAwQzA3
NEE1IC8qIEFWQ2FwdHVyZURldmljZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTA3RjRF
OTMzMjBCMzU4N0YwMDJFMzgwMyAvKiBBVkFzc2V0TUlNRVR5cGVDYWNoZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0QzMzZGNjIxN0Y5RjY0NzAwREREQ0QwIC8qIEFWVHJhY2tQcml2YXRlQVZGT2Jq
Q0ltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3MDM2M0U2MTgxQTFDREMwMEMwNzRBNSAvKiBB
VlZpZGVvQ2FwdHVyZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBRTIxMkQyMUFCOUVF
QjAwODY5MjgzIC8qIEFYSXNvbGF0ZWRUcmVlLmggaW4gSGVhZGVycyAqLywKQEAgLTI4Nzk1LDYg
KzI4ODAyLDcgQEAKIAkJCQlCQ0NGQkFFODBCNTE1MkVEMDAwMUYxRDcgLyogRG9jdW1lbnRQYXJz
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTRBNEY0OEFBMTZCMERGQzAwMEVEQkIyOSAvKiBEb2N1
bWVudFJ1bGVTZXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDZFNzFBRDE2Njg4OTlEMDAzMjBD
MTMgLyogRG9jdW1lbnRTaGFyZWRPYmplY3RQb29sLmggaW4gSGVhZGVycyAqLywKKwkJCQk2QkRC
NURDMjIyN0JEM0I4MDA5MTk3NzAgLyogRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwQjkwNTYxQTBGMjU3OEJGMDA5NUZGNkEgLyogRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTAyNUVEMDFGOTlGMENFMDA0QTI1MEMgLyog
RG9jdW1lbnRUaW1lbGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzE3MjlGN0IyMEYzQkE0OTAw
ODAxQ0U2IC8qIERvY3VtZW50VGltZWxpbmVPcHRpb25zLmggaW4gSGVhZGVycyAqLywKQEAgLTMy
NTc1LDEwICszMjU4MywxMSBAQAogCQkJCUNERTNBODU3MTdGNjAyMDQwMEM1QkUyMCAvKiBBdWRp
b1RyYWNrUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDU0QTc2MjE4MEY5
RjcwMDBCMDc2QzkgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTVGNkUxNkIxMzJFRDQ2RTAwOEVEQUUzIC8qIEF1dG9jYXBpdGFs
aXplLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3MTk0MjdGMUQwODhGMjEwMDJBQTUxRCAvKiBB
VkFzc2V0TUlNRVR5cGVDYWNoZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNERUNBODlBMUVERjQ0
N0QwMERDQjA4QiAvKiBBVkFzc2V0VHJhY2tVdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQlDREM2NzUyMjFFQUVBOUI3MDA3MjdDODQgLyogQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNl
TWFuYWdlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3MDM2M0UzMTgxQTFDREMwMEMwNzRBNSAv
KiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMDcxOTQyN0Yx
RDA4OEYyMTAwMkFBNTFEIC8qIEFWQXNzZXRNSU1FVHlwZUNhY2hlLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJQ0QxMUIzRTEyMjdDRTZGMzAwMjNBRkM3IC8qIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVU
eXBlQ2FjaGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDMzNkY2MTE3RjlGNjQ3MDBERERDRDAg
LyogQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3MDM2
M0U3MTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTdBNDUwMzJGMThEQjcxNzIwMDM3N0IzNCAvKiBCdWZmZXJlZExpbmVSZWFkZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMzAyMSw3ICszMzAzMCw2IEBACiAJCQkJREVDQTgwMzkx
RjlGRUQ2QTAwRTNCNjYxIC8qIFVuaWZpZWRTb3VyY2UyNDguY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJREVDQTgwM0ExRjlGRUQ2QTAwRTNCNjYxIC8qIFVuaWZpZWRTb3VyY2UyNDkuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJREVDQTgwM0IxRjlGRUQ2QTAwRTNCNjYxIC8qIFVuaWZpZWRTb3VyY2Uy
NTAuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQ0QxMUIzRTEyMjdDRTZGMzAwMjNBRkM3IC8qIEFW
U3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlERUNB
ODAzQzFGOUZFRDZBMDBFM0I2NjEgLyogVW5pZmllZFNvdXJjZTI1MS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlERUNBODAzRDFGOUZFRDZBMDBFM0I2NjEgLyogVW5pZmllZFNvdXJjZTI1Mi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlERUNBODAzRTFGOUZFRDZBMDBFM0I2NjEgLyogVW5pZmllZFNv
dXJjZTI1My5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGNl
NDI5Mjc3YzdlYWM2MDAyMjM3NWQ5Y2I4OWU4ZDY1MWQ0M2RhYTAuLjg2YTJhYmQ1NWIzOWUzZTQ3
NjcxNWQ0ZjAxZjRhODljODM0NTA1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTEy
LDcgKzExMiw2IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJKU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UuaCIKLSNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUg
IkpTTGF6eUV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5j
bHVkZSAiS2V5ZnJhbWVFZmZlY3QuaCIKQEAgLTc3MzEsMTQ3ICs3NzMwLDYgQEAgT3B0aW9uYWw8
dWludDY0X3Q+IERvY3VtZW50OjpwYWdlSUQoKSBjb25zdAogICAgIHJldHVybiBtX2ZyYW1lLT5s
b2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6aGFzU3RvcmFn
ZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCi17Ci0gICAgQVNTRVJUKHNl
dHRpbmdzKCkuc3RvcmFnZUFjY2Vzc0FQSUVuYWJsZWQoKSk7Ci0KLSNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGlmIChtX2ZyYW1lICYmIGhhc0ZyYW1lU3BlY2lmaWNT
dG9yYWdlQWNjZXNzKCkpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPih0
cnVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghbV9mcmFtZSB8fCBzZWN1
cml0eU9yaWdpbigpLmlzVW5pcXVlKCkpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExC
b29sZWFuPihmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKG1f
ZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29s
ZWFuPih0cnVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBhdXRvJiBzZWN1
cml0eU9yaWdpbiA9IHRoaXMtPnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgYXV0byYgdG9wU2VjdXJp
dHlPcmlnaW4gPSB0b3BEb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgaWYgKHNlY3Vy
aXR5T3JpZ2luLmVxdWFsKCZ0b3BTZWN1cml0eU9yaWdpbikpIHsKLSAgICAgICAgcHJvbWlzZS0+
cmVzb2x2ZTxJRExCb29sZWFuPih0cnVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGF1dG8gZnJhbWVJRCA9IG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKTsKLSAg
ICBhdXRvIHBhZ2VJRCA9IG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwotICAg
IGlmICghZnJhbWVJRCB8fCAhcGFnZUlEKSB7Ci0gICAgICAgIHByb21pc2UtPnJlamVjdCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdl
KCkpIHsKLSAgICAgICAgYXV0byBpZnJhbWVIb3N0ID0gc2VjdXJpdHlPcmlnaW4uaG9zdCgpOwot
ICAgICAgICBhdXRvIHRvcEhvc3QgPSB0b3BTZWN1cml0eU9yaWdpbi5ob3N0KCk7Ci0gICAgICAg
IHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmhhc1N0b3JhZ2VBY2Nlc3MoV1RGTW92ZShpZnJhbWVI
b3N0KSwgV1RGTW92ZSh0b3BIb3N0KSwgZnJhbWVJRC52YWx1ZSgpLCBwYWdlSUQudmFsdWUoKSwg
W2RvY3VtZW50UmVmZXJlbmNlID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKV0gKGJvb2wgaGFzQWNjZXNzKSB7Ci0gICAgICAgICAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBkb2N1bWVudFJlZmVyZW5jZS5nZXQoKTsKLSAgICAgICAgICAgIGlmICghZG9jdW1l
bnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBw
cm9taXNlLT5yZXNvbHZlPElETEJvb2xlYW4+KGhhc0FjY2Vzcyk7Ci0gICAgICAgIH0pOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSAgICBwcm9taXNlLT5yZWplY3QoKTsKLX0K
LQotdm9pZCBEb2N1bWVudDo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVmPERlZmVycmVkUHJvbWlz
ZT4mJiBwcm9taXNlKQotewotICAgIEFTU0VSVChzZXR0aW5ncygpLnN0b3JhZ2VBY2Nlc3NBUElF
bmFibGVkKCkpOwotICAgIAotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0g
ICAgaWYgKG1fZnJhbWUgJiYgaGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MoKSkgewotICAg
ICAgICBwcm9taXNlLT5yZXNvbHZlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0g
ICAgaWYgKCFtX2ZyYW1lIHx8IHNlY3VyaXR5T3JpZ2luKCkuaXNVbmlxdWUoKSkgewotICAgICAg
ICBwcm9taXNlLT5yZWplY3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBp
ZiAobV9mcmFtZS0+aXNNYWluRnJhbWUoKSkgewotICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgYXV0byYgdG9wRG9jdW1lbnQgPSB0
aGlzLT50b3BEb2N1bWVudCgpOwotICAgIGF1dG8mIHRvcFNlY3VyaXR5T3JpZ2luID0gdG9wRG9j
dW1lbnQuc2VjdXJpdHlPcmlnaW4oKTsKLSAgICBhdXRvJiBzZWN1cml0eU9yaWdpbiA9IHRoaXMt
PnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgaWYgKHNlY3VyaXR5T3JpZ2luLmVxdWFsKCZ0b3BTZWN1
cml0eU9yaWdpbikpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIAotICAgIC8vIElmIHRoZXJlIGlzIGEgc2FuZGJveCwgaXQgaGFzIHRv
IGFsbG93IHRoZSBzdG9yYWdlIGFjY2VzcyBBUEkgdG8gYmUgY2FsbGVkLgotICAgIGlmIChzYW5k
Ym94RmxhZ3MoKSAhPSBTYW5kYm94Tm9uZSAmJiBpc1NhbmRib3hlZChTYW5kYm94U3RvcmFnZUFj
Y2Vzc0J5VXNlckFjdGl2YXRpb24pKSB7Ci0gICAgICAgIHByb21pc2UtPnJlamVjdCgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gVGhlIGlmcmFtZSBoYXMgdG8gYmUgYSBkaXJl
Y3QgY2hpbGQgb2YgdGhlIHRvcCBkb2N1bWVudC4KLSAgICBpZiAoJnRvcERvY3VtZW50ICE9IHBh
cmVudERvY3VtZW50KCkpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVqZWN0KCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIVVzZXJHZXN0dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5n
VXNlckdlc3R1cmUoKSkgewotICAgICAgICBwcm9taXNlLT5yZWplY3QoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICAKLSAgICBhdXRvIGlmcmFtZUhvc3QgPSBzZWN1cml0eU9yaWdpbi5o
b3N0KCk7Ci0gICAgYXV0byB0b3BIb3N0ID0gdG9wU2VjdXJpdHlPcmlnaW4uaG9zdCgpOwotCi0g
ICAgUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKLSAgICBhdXRvIGZyYW1lSUQgPSBtX2ZyYW1l
LT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7Ci0gICAgYXV0byBwYWdlSUQgPSBtX2ZyYW1l
LT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKLSAgICBpZiAoIXBhZ2UgfHwgIWZyYW1lSUQg
fHwgIXBhZ2VJRCkgewotICAgICAgICBwcm9taXNlLT5yZWplY3QoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnJlcXVlc3RTdG9yYWdlQWNj
ZXNzKFdURk1vdmUoaWZyYW1lSG9zdCksIFdURk1vdmUodG9wSG9zdCksIGZyYW1lSUQudmFsdWUo
KSwgcGFnZUlELnZhbHVlKCksIFtkb2N1bWVudFJlZmVyZW5jZSA9IG1ha2VXZWFrUHRyKCp0aGlz
KSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChib29sIHdhc0dyYW50ZWQpIG11dGFibGUg
ewotICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBkb2N1bWVudFJlZmVyZW5jZS5nZXQoKTsK
LSAgICAgICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0g
ICAgICAgIGlmICh3YXNHcmFudGVkKSB7Ci0gICAgICAgICAgICBkb2N1bWVudC0+c2V0SGFzRnJh
bWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3ModHJ1ZSk7Ci0gICAgICAgICAgICBNaWNyb3Rhc2tRdWV1
ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Vm9pZE1pY3JvdGFz
az4oW2RvY3VtZW50UmVmZXJlbmNlID0gbWFrZVdlYWtQdHIoKmRvY3VtZW50KV0gKCkgewotICAg
ICAgICAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGRvY3VtZW50UmVmZXJlbmNlLmdldCgp
KQotICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC0+ZW5hYmxlVGVtcG9yYXJ5VGltZVVzZXJH
ZXN0dXJlKCk7Ci0gICAgICAgICAgICB9KSk7Ci0gICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZl
KCk7Ci0gICAgICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8Vm9pZE1pY3JvdGFzaz4oW2RvY3VtZW50UmVmZXJlbmNlID0gV1RG
TW92ZShkb2N1bWVudFJlZmVyZW5jZSldICgpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byog
ZG9jdW1lbnQgPSBkb2N1bWVudFJlZmVyZW5jZS5nZXQoKSkKLSAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQtPmNvbnN1bWVUZW1wb3JhcnlUaW1lVXNlckdlc3R1cmUoKTsKLSAgICAgICAgICAg
IH0pKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoKTsKLSAg
ICB9KTsKLSNlbHNlCi0gICAgcHJvbWlzZS0+cmVqZWN0KCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBE
b2N1bWVudDo6ZW5hYmxlVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCkKLXsKLSAgICBtX3RlbXBv
cmFyeVVzZXJHZXN0dXJlID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyR2VzdHVyZUluZGljYXRvcj4o
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCB0aGlzKTsKLX0KLQotdm9pZCBEb2N1bWVudDo6Y29uc3Vt
ZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSgpCi17Ci0gICAgbV90ZW1wb3JhcnlVc2VyR2VzdHVy
ZSA9IG51bGxwdHI7Ci19Ci0KIHZvaWQgRG9jdW1lbnQ6OnJlZ2lzdGVyQXJ0aWNsZUVsZW1lbnQo
RWxlbWVudCYgYXJ0aWNsZSkKIHsKICAgICBtX2FydGljbGVFbGVtZW50cy5hZGQoJmFydGljbGUp
OwpAQCAtNzkzOSwxNyArNzc5Nyw2IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZU1haW5BcnRpY2xl
RWxlbWVudEFmdGVyTGF5b3V0KCkKIH0KIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi1ib29sIERvY3VtZW50OjpoYXNGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2VzcygpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fZnJhbWUgJiYgbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCku
aGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MoKTsKLX0KLSAgICAKLXZvaWQgRG9jdW1lbnQ6
OnNldEhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKGJvb2wgdmFsdWUpCi17Ci0gICAgaWYg
KG1fZnJhbWUpCi0gICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnNldEhhc0ZyYW1l
U3BlY2lmaWNTdG9yYWdlQWNjZXNzKHZhbHVlKTsKLX0KLQogYm9vbCBEb2N1bWVudDo6aGFzUmVx
dWVzdGVkUGFnZVNwZWNpZmljU3RvcmFnZUFjY2Vzc1dpdGhVc2VySW50ZXJhY3Rpb24oY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKIHsKICAgICByZXR1cm4gbV9yZWdpc3RyYWJsZURv
bWFpblJlcXVlc3RlZFBhZ2VTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NXaXRoVXNlckludGVyYWN0aW9u
ID09IGRvbWFpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYTFmMWYzMDg1NTMyZWM0Y2JmNjkx
ODkwOTZjNDg2YjkxZDAwYmQ5OC4uMTM1ZWYwYjZjZDhjZTU1MTVjZTQ3MWVhYzIwMjNmZmE4ZTQ4
NzU3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEwOCw3ICsxMDgsNiBAQCBjbGFzcyBET01X
aW5kb3c7CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBEYXRhYmFzZTsKIGNsYXNzIERh
dGFiYXNlVGhyZWFkOwotY2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgRG9jdW1lbnRGcmFn
bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyOwpAQCAtMTQ2NSwxMCArMTQ2NCw2IEBAIHB1YmxpYzoKIAogICAgIExvZ2dlciYgbG9nZ2Vy
KCk7CiAKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBw
YXNzZWRQcm9taXNlKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYgcGFzc2VkUHJvbWlzZSk7Ci0gICAgdm9pZCBzZXRVc2VyR3JhbnRzU3RvcmFn
ZUFjY2Vzc092ZXJyaWRlKGJvb2wgdmFsdWUpIHsgbV9ncmFudFN0b3JhZ2VBY2Nlc3NPdmVycmlk
ZSA9IHZhbHVlOyB9Ci0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbnNvbGVNZXNzYWdl
TGlzdGVuZXIoUmVmUHRyPFN0cmluZ0NhbGxiYWNrPiYmKTsgLy8gRm9yIHRlc3RpbmcuCiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBEb2N1bWVudFRpbWVsaW5lJiB0aW1lbGluZSgpOwpAQCAtMTUwMiw4
ICsxNDk3LDYgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxs
ZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdl
U3RyaW5nLCBjb25zdCBVUkwmKTsKIAotICAgIHZvaWQgY29uc3VtZVRlbXBvcmFyeVRpbWVVc2Vy
R2VzdHVyZSgpOwotCiAgICAgdm9pZCByZWdpc3RlckFydGljbGVFbGVtZW50KEVsZW1lbnQmKTsK
ICAgICB2b2lkIHVucmVnaXN0ZXJBcnRpY2xlRWxlbWVudChFbGVtZW50Jik7CiAgICAgdm9pZCB1
cGRhdGVNYWluQXJ0aWNsZUVsZW1lbnRBZnRlckxheW91dCgpOwpAQCAtMTY0NSw4ICsxNjM4LDYg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGxhdGZvcm1TdXNwZW5kT3JTdG9wQWN0aXZlRE9NT2Jq
ZWN0cygpOwogCi0gICAgdm9pZCBlbmFibGVUZW1wb3JhcnlUaW1lVXNlckdlc3R1cmUoKTsKLQog
ICAgIGJvb2wgaXNCb2R5UG90ZW50aWFsbHlTY3JvbGxhYmxlKEhUTUxCb2R5RWxlbWVudCYpOwog
CiAgICAgY29uc3QgUmVmPFNldHRpbmdzPiBtX3NldHRpbmdzOwpAQCAtMTg1MSwxMSArMTg0Miw2
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZExvZ01lc3NhZ2UoY29uc3QgV1RGTG9nQ2hhbm5l
bCYsIFdURkxvZ0xldmVsLCBWZWN0b3I8SlNPTkxvZ1ZhbHVlPiYmKSBmaW5hbDsKIAotI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgYm9vbCBoYXNGcmFtZVNwZWNpZmlj
U3RvcmFnZUFjY2VzcygpIGNvbnN0OwotICAgIHZvaWQgc2V0SGFzRnJhbWVTcGVjaWZpY1N0b3Jh
Z2VBY2Nlc3MoYm9vbCk7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04p
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGV2aWNlTW90
aW9uQ2xpZW50PiBtX2RldmljZU1vdGlvbkNsaWVudDsKQEAgLTIwMzMsOCArMjAxOSw2IEBAIHBy
aXZhdGU6CiAKICAgICBzdGF0aWMgYm9vbCBoYXNFdmVyQ3JlYXRlZEFuQVhPYmplY3RDYWNoZTsK
IAotICAgIGJvb2wgbV9ncmFudFN0b3JhZ2VBY2Nlc3NPdmVycmlkZSB7IGZhbHNlIH07Ci0KICAg
ICBSZWZQdHI8RG9jdW1lbnRUaW1lbGluZT4gbV90aW1lbGluZTsKICAgICBEb2N1bWVudElkZW50
aWZpZXIgbV9pZGVudGlmaWVyOwogCkBAIC0yMDQ4LDggKzIwMzIsNiBAQCBwcml2YXRlOgogICAg
IFJlZ2lzdHJhYmxlRG9tYWluIG1fcmVnaXN0cmFibGVEb21haW5SZXF1ZXN0ZWRQYWdlU3BlY2lm
aWNTdG9yYWdlQWNjZXNzV2l0aFVzZXJJbnRlcmFjdGlvbiB7IH07CiAjZW5kaWYKICAgICAKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VXNlckdlc3R1cmVJbmRpY2F0b3I+IG1fdGVtcG9yYXJ5VXNlckdl
c3R1cmU7Ci0KICAgICBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQgbV9DU1NSZWdpc3Rl
cmVkUHJvcGVydHlTZXQ7CiAKICNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaWRsCmluZGV4IDQzYjkxMTAyODI5NGFkM2ZiZjE3ODBkNzlhMDMyYjhlMDk1MzM0
Y2UuLjU2NDliNmMzYzcwODUwYTljZTQ2ODBlYzE4ZGU1YmZkYjIzMjcxYzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmlkbApAQCAtMTczLDEwICsxNzMsNiBAQCB0eXBlZGVmICgKICAgICAvLyBGSVhN
RTogVGhpcyBpcyBub3Qgc3RhbmRhcmQgYW5kIGhhcyBiZWVuIGRyb3BwZWQgZnJvbSBCbGluayBh
bHJlYWR5LgogICAgIFJlbmRlcmluZ0NvbnRleHQ/IGdldENTU0NhbnZhc0NvbnRleHQoRE9NU3Ry
aW5nIGNvbnRleHRJZCwgRE9NU3RyaW5nIG5hbWUsIGxvbmcgd2lkdGgsIGxvbmcgaGVpZ2h0KTsK
IAotICAgIC8vIE5vbiBzdGFuZGFyZCwgdG8gYnJpbmcgdXAgd2l0aCBzdGFuZGFyZHMgd29ya2lu
ZyBncm91cC4KLSAgICBbRW5hYmxlZEJ5U2V0dGluZz1TdG9yYWdlQWNjZXNzQVBJXSBQcm9taXNl
PGJvb2w+IGhhc1N0b3JhZ2VBY2Nlc3MoKTsKLSAgICBbRW5hYmxlZEJ5U2V0dGluZz1TdG9yYWdl
QWNjZXNzQVBJXSBQcm9taXNlPHZvaWQ+IHJlcXVlc3RTdG9yYWdlQWNjZXNzKCk7Ci0KICAgICAv
LyBPYnNvbGV0ZSBmZWF0dXJlcyBmcm9tIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVs
dGlwYWdlL29ic29sZXRlLmh0bWwKIAogICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtUcmVh
dE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGZnQ29sb3I7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkMWY4YmJhOWM0NmMw
ZTg3YTI2ZmU1MDAyYjM2MTRjOGQ4NzE5YzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcApAQCAtMCwwICsxLDIzMSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEb2N1bWVudFN0b3JhZ2VB
Y2Nlc3MuaCIKKworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisKKyNpbmNs
dWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJEb2N1
bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNp
bmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVy
cmVkLmgiCisjaW5jbHVkZSAiTWljcm90YXNrcy5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNs
dWRlICJSZWdpc3RyYWJsZURvbWFpbi5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0RvY3VtZW50U3RvcmFnZUFjY2VzcyogRG9jdW1lbnRT
dG9yYWdlQWNjZXNzOjpmcm9tKERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBhdXRvKiBzdXBw
bGVtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnRTdG9yYWdlQWNjZXNzKj4oU3VwcGxlbWVudDxE
b2N1bWVudD46OmZyb20oJmRvY3VtZW50LCBzdXBwbGVtZW50TmFtZSgpKSk7CisgICAgaWYgKCFz
dXBwbGVtZW50KSB7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8RG9jdW1lbnRTdG9yYWdlQWNjZXNzPihkb2N1bWVudCk7CisgICAgICAgIHN1cHBsZW1lbnQg
PSBuZXdTdXBwbGVtZW50LmdldCgpOworICAgICAgICBwcm92aWRlVG8oJmRvY3VtZW50LCBzdXBw
bGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKKyAgICB9CisgICAgcmV0dXJu
IHN1cHBsZW1lbnQ7Cit9CisKK2NvbnN0IGNoYXIqIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6c3Vw
cGxlbWVudE5hbWUoKQoreworICAgIHJldHVybiAiRG9jdW1lbnRTdG9yYWdlQWNjZXNzIl9zOwor
fQorCit2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6aGFzU3RvcmFnZUFjY2VzcyhEb2N1bWVu
dCYgZG9jdW1lbnQsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3sKKyAgICBEb2N1
bWVudFN0b3JhZ2VBY2Nlc3M6OmZyb20oZG9jdW1lbnQpLT5oYXNTdG9yYWdlQWNjZXNzKFdURk1v
dmUocHJvbWlzZSkpOworfQorCit2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0
b3JhZ2VBY2Nlc3MoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBy
b21pc2UpCit7CisgICAgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpmcm9tKGRvY3VtZW50KS0+cmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShwcm9taXNlKSk7Cit9CisKK3ZvaWQgRG9jdW1lbnRT
dG9yYWdlQWNjZXNzOjpoYXNTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzZSkKK3sKKyAgICBBU1NFUlQobV9kb2N1bWVudC5zZXR0aW5ncygpLnN0b3JhZ2VBY2Nlc3NB
UElFbmFibGVkKCkpOworCisgICAgaWYgKG1fZG9jdW1lbnQuZnJhbWUoKSAmJiBoYXNGcmFtZVNw
ZWNpZmljU3RvcmFnZUFjY2VzcygpKSB7CisgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9v
bGVhbj4odHJ1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKCFtX2Rv
Y3VtZW50LmZyYW1lKCkgfHwgbV9kb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmlzVW5pcXVlKCkp
IHsKKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPihmYWxzZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKG1fZG9jdW1lbnQuZnJhbWUoKS0+aXNNYWlu
RnJhbWUoKSkgeworICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEJvb2xlYW4+KHRydWUpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGF1dG8mIHNlY3VyaXR5T3JpZ2luID0g
bV9kb2N1bWVudC5zZWN1cml0eU9yaWdpbigpOworICAgIGF1dG8mIHRvcFNlY3VyaXR5T3JpZ2lu
ID0gbV9kb2N1bWVudC50b3BEb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCk7CisgICAgaWYgKHNl
Y3VyaXR5T3JpZ2luLmVxdWFsKCZ0b3BTZWN1cml0eU9yaWdpbikpIHsKKyAgICAgICAgcHJvbWlz
ZS0+cmVzb2x2ZTxJRExCb29sZWFuPih0cnVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAKKyAgICBhdXRvIGZyYW1lSUQgPSBtX2RvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLmNsaWVu
dCgpLmZyYW1lSUQoKTsKKyAgICBhdXRvIHBhZ2VJRCA9IG1fZG9jdW1lbnQuZnJhbWUoKS0+bG9h
ZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CisgICAgaWYgKCFmcmFtZUlEIHx8ICFwYWdlSUQpIHsK
KyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
CisgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2RvY3VtZW50LnBhZ2UoKSkgeworICAgICAgICBhdXRv
IHN1YkZyYW1lRG9tYWluID0gUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21I
b3N0KHNlY3VyaXR5T3JpZ2luLmhvc3QoKSk7CisgICAgICAgIGF1dG8gdG9wRnJhbWVEb21haW4g
PSBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QodG9wU2VjdXJpdHlP
cmlnaW4uaG9zdCgpKTsKKyAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuaGFzU3RvcmFn
ZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiks
IGZyYW1lSUQudmFsdWUoKSwgcGFnZUlELnZhbHVlKCksIFtkb2N1bWVudFJlZmVyZW5jZSA9IG1h
a2VXZWFrUHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChib29sIGhhc0Fj
Y2VzcykgeworICAgICAgICAgICAgRG9jdW1lbnRTdG9yYWdlQWNjZXNzKiBkb2N1bWVudCA9IGRv
Y3VtZW50UmVmZXJlbmNlLmdldCgpOworICAgICAgICAgICAgaWYgKCFkb2N1bWVudCkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHByb21pc2UtPnJl
c29sdmU8SURMQm9vbGVhbj4oaGFzQWNjZXNzKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgcHJvbWlzZS0+cmVqZWN0KCk7Cit9CisKK3ZvaWQgRG9jdW1l
bnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UpCit7CisgICAgQVNTRVJUKG1fZG9jdW1lbnQuc2V0dGluZ3MoKS5zdG9yYWdl
QWNjZXNzQVBJRW5hYmxlZCgpKTsKKyAgICAKKyAgICBpZiAobV9kb2N1bWVudC5mcmFtZSgpICYm
IGhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKCkpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVz
b2x2ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmICghbV9kb2N1bWVu
dC5mcmFtZSgpIHx8IG1fZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5pc1VuaXF1ZSgpKSB7Cisg
ICAgICAgIHByb21pc2UtPnJlamVjdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAor
ICAgIGlmIChtX2RvY3VtZW50LmZyYW1lKCktPmlzTWFpbkZyYW1lKCkpIHsKKyAgICAgICAgcHJv
bWlzZS0+cmVzb2x2ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGF1dG8m
IHRvcERvY3VtZW50ID0gbV9kb2N1bWVudC50b3BEb2N1bWVudCgpOworICAgIGF1dG8mIHRvcFNl
Y3VyaXR5T3JpZ2luID0gdG9wRG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKTsKKyAgICBhdXRvJiBz
ZWN1cml0eU9yaWdpbiA9IG1fZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKTsKKyAgICBpZiAoc2Vj
dXJpdHlPcmlnaW4uZXF1YWwoJnRvcFNlY3VyaXR5T3JpZ2luKSkgeworICAgICAgICBwcm9taXNl
LT5yZXNvbHZlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgLy8gSWYgdGhl
cmUgaXMgYSBzYW5kYm94LCBpdCBoYXMgdG8gYWxsb3cgdGhlIHN0b3JhZ2UgYWNjZXNzIEFQSSB0
byBiZSBjYWxsZWQuCisgICAgaWYgKG1fZG9jdW1lbnQuc2FuZGJveEZsYWdzKCkgIT0gU2FuZGJv
eE5vbmUgJiYgbV9kb2N1bWVudC5pc1NhbmRib3hlZChTYW5kYm94U3RvcmFnZUFjY2Vzc0J5VXNl
ckFjdGl2YXRpb24pKSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdCgpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIAorICAgIC8vIFRoZSBpZnJhbWUgaGFzIHRvIGJlIGEgZGlyZWN0IGNo
aWxkIG9mIHRoZSB0b3AgZG9jdW1lbnQuCisgICAgaWYgKCZ0b3BEb2N1bWVudCAhPSBtX2RvY3Vt
ZW50LnBhcmVudERvY3VtZW50KCkpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKCFVc2VyR2VzdHVyZUluZGljYXRvcjo6
cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBQYWdlKiBwYWdlID0gbV9kb2N1bWVudC5wYWdl
KCk7CisgICAgYXV0byBmcmFtZUlEID0gbV9kb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGll
bnQoKS5mcmFtZUlEKCk7CisgICAgYXV0byBwYWdlSUQgPSBtX2RvY3VtZW50LmZyYW1lKCktPmxv
YWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOworICAgIGlmICghcGFnZSB8fCAhZnJhbWVJRCB8fCAh
cGFnZUlEKSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdCgpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIAorICAgIGF1dG8gc3ViRnJhbWVEb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbjo6
dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qoc2VjdXJpdHlPcmlnaW4uaG9zdCgpKTsKKyAgICBhdXRv
IHRvcEZyYW1lRG9tYWluID0gUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21I
b3N0KHRvcFNlY3VyaXR5T3JpZ2luLmhvc3QoKSk7CisgICAgCisgICAgcGFnZS0+Y2hyb21lKCku
Y2xpZW50KCkucmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdU
Rk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELnZhbHVlKCksIHBhZ2VJRC52YWx1ZSgpLCBb
ZG9jdW1lbnRSZWZlcmVuY2UgPSBtYWtlV2Vha1B0cigqdGhpcyksIHByb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpXSAoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRlZCwgU3RvcmFnZUFj
Y2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duKSBtdXRhYmxlIHsKKyAgICAgICAgRG9j
dW1lbnRTdG9yYWdlQWNjZXNzKiBkb2N1bWVudCA9IGRvY3VtZW50UmVmZXJlbmNlLmdldCgpOwor
ICAgICAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8v
IENvbnN1bWUgdGhlIHVzZXIgZ2VzdHVyZSBvbmx5IGlmIHRoZSB1c2VyIGV4cGxpY2l0bHkgZGVu
aWVkIGFjY2Vzcy4KKyAgICAgICAgYm9vbCBzaG91bGRQcmVzZXJ2ZVVzZXJHZXN0dXJlID0gd2Fz
R3JhbnRlZCA9PSBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVzIHx8IHByb21wdFdhc1Nob3du
ID09IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm87CisKKyAgICAgICAgaWYgKHNob3Vs
ZFByZXNlcnZlVXNlckdlc3R1cmUpIHsKKyAgICAgICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWlu
VGhyZWFkUXVldWUoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxWb2lkTWljcm90YXNrPihbZG9j
dW1lbnRSZWZlcmVuY2UgPSBtYWtlV2Vha1B0cigqZG9jdW1lbnQpXSAoKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZG9jdW1lbnRSZWZlcmVuY2UuZ2V0KCkpCisgICAg
ICAgICAgICAgICAgICAgIGRvY3VtZW50LT5lbmFibGVUZW1wb3JhcnlUaW1lVXNlckdlc3R1cmUo
KTsKKyAgICAgICAgICAgIH0pKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh3YXNHcmFudGVk
ID09IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMpIHsKKyAgICAgICAgICAgIGRvY3VtZW50
LT5zZXRIYXNGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzcyh0cnVlKTsKKyAgICAgICAgICAgIHBy
b21pc2UtPnJlc29sdmUoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBwcm9taXNlLT5y
ZWplY3QoKTsKKworICAgICAgICBpZiAoc2hvdWxkUHJlc2VydmVVc2VyR2VzdHVyZSkgeworICAg
ICAgICAgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPFZvaWRNaWNyb3Rhc2s+KFtkb2N1bWVudFJlZmVyZW5jZSA9IFdURk1vdmUoZG9j
dW1lbnRSZWZlcmVuY2UpXSAoKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50
ID0gZG9jdW1lbnRSZWZlcmVuY2UuZ2V0KCkpCisgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50
LT5jb25zdW1lVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCk7CisgICAgICAgICAgICB9KSk7Cisg
ICAgICAgIH0KKyAgICB9KTsKK30KKwordm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OmVuYWJs
ZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSgpCit7CisgICAgbV90ZW1wb3JhcnlVc2VyR2VzdHVy
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlckdlc3R1cmVJbmRpY2F0b3I+KFByb2Nlc3NpbmdVc2Vy
R2VzdHVyZSwgJm1fZG9jdW1lbnQpOworfQorCit2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6
Y29uc3VtZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSgpCit7CisgICAgbV90ZW1wb3JhcnlVc2Vy
R2VzdHVyZSA9IG51bGxwdHI7Cit9CisKK2Jvb2wgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpoYXNG
cmFtZVNwZWNpZmljU3RvcmFnZUFjY2VzcygpIGNvbnN0Cit7CisgICAgYXV0byogZnJhbWUgPSBt
X2RvY3VtZW50LmZyYW1lKCk7CisgICAgcmV0dXJuIGZyYW1lICYmIGZyYW1lLT5sb2FkZXIoKS5j
bGllbnQoKS5oYXNGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2VzcygpOworfQorCit2b2lkIERvY3Vt
ZW50U3RvcmFnZUFjY2Vzczo6c2V0SGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MoYm9vbCB2
YWx1ZSkKK3sKKyAgICBpZiAoYXV0byogZnJhbWUgPSBtX2RvY3VtZW50LmZyYW1lKCkpCisgICAg
ICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5zZXRIYXNGcmFtZVNwZWNpZmljU3RvcmFnZUFj
Y2Vzcyh2YWx1ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRTdG9yYWdlQWNjZXNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmE2ZjhjMTlkMzhhYWMzMzBjZWY1YWQ0ZDMz
ODc1YWU1MzE1YTQ1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudFN0b3JhZ2VBY2Nlc3MuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorCisjaW5jbHVk
ZSAiU3VwcGxlbWVudGFibGUuaCIKKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIERlZmVycmVkUHJvbWlzZTsKK2NsYXNzIERvY3VtZW50Owor
Y2xhc3MgVXNlckdlc3R1cmVJbmRpY2F0b3I7CisKK2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQgOiBib29sIHsKKyAgICBObywKKyAgICBZZXMKK307CisKK2VudW0gY2xhc3MgU3Rv
cmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIDogYm9vbCB7CisgICAgTm8sCisgICAgWWVzCit9Owor
CitjbGFzcyBEb2N1bWVudFN0b3JhZ2VBY2Nlc3MgZmluYWwgOiBwdWJsaWMgU3VwcGxlbWVudDxE
b2N1bWVudD4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEb2N1bWVudFN0b3JhZ2VBY2Nlc3M+IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBEb2N1
bWVudFN0b3JhZ2VBY2Nlc3MoRG9jdW1lbnQmIGRvY3VtZW50KQorICAgICAgICA6IG1fZG9jdW1l
bnQoZG9jdW1lbnQpCisgICAgeworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGhhc1N0b3JhZ2VB
Y2Nlc3MoRG9jdW1lbnQmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKKyAgICBzdGF0aWMgdm9p
ZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhEb2N1bWVudCYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYp
OworCitwcml2YXRlOgorICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21p
c2U+JiYpOworICAgIHN0YXRpYyBEb2N1bWVudFN0b3JhZ2VBY2Nlc3MqIGZyb20oRG9jdW1lbnQm
KTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKKyAgICBib29sIGhh
c0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRIYXNGcmFt
ZVNwZWNpZmljU3RvcmFnZUFjY2Vzcyhib29sKTsKKyAgICB2b2lkIGVuYWJsZVRlbXBvcmFyeVRp
bWVVc2VyR2VzdHVyZSgpOworICAgIHZvaWQgY29uc3VtZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVy
ZSgpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFVzZXJHZXN0dXJlSW5kaWNhdG9yPiBtX3RlbXBv
cmFyeVVzZXJHZXN0dXJlOworICAgIAorICAgIERvY3VtZW50JiBtX2RvY3VtZW50OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3Jh
Z2VBY2Nlc3MuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5p
ZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGRlM2M1ZjIwYzc0NTRkZTRmMGY0YTMzOTcyZjdiMGMwMWU3NzRlMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nl
c3MuaWRsCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTLAorXSBwYXJ0aWFsIGludGVyZmFjZSBEb2N1bWVudCB7
CisgICAgUHJvbWlzZTxib29sPiBoYXNTdG9yYWdlQWNjZXNzKCk7CisgICAgUHJvbWlzZTx2b2lk
PiByZXF1ZXN0U3RvcmFnZUFjY2VzcygpOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5o
CmluZGV4IGNkZGYxM2NhZTg4OTMwZTIzNmU5NDA5ZjkyZWZjMmZmZDQwYmY1ZDkuLjA2ZGI0MTQ0
MDQxYTUxMDA2NTAwYjQ5Njg3MWJiMzFlZTRkYjQyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uT3JN
b3Rpb25QZXJtaXNzaW9uU3RhdGUuaCIKICNpbmNsdWRlICJEaXNhYmxlZEFkYXB0YXRpb25zLmgi
CiAjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRT
dG9yYWdlQWNjZXNzLmgiCiAjaW5jbHVkZSAiRm9jdXNEaXJlY3Rpb24uaCIKICNpbmNsdWRlICJG
cmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtNDAsNiArNDEs
NyBAQAogI2luY2x1ZGUgIk1lZGlhUHJvZHVjZXIuaCIKICNpbmNsdWRlICJQb3B1cE1lbnUuaCIK
ICNpbmNsdWRlICJQb3B1cE1lbnVDbGllbnQuaCIKKyNpbmNsdWRlICJSZWdpc3RyYWJsZURvbWFp
bi5oIgogI2luY2x1ZGUgIlJlbmRlckVtYmVkZGVkT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2Nyb2xs
VHlwZXMuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRvci5oIgpAQCAtNDgzLDggKzQ4
NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0UHJvY2Vzc0NQVVRpbWUoU2Vj
b25kcywgQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nKSB7IH0KICAgICB2aXJ0dWFsIFJlZlB0
cjxJY29uPiBjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIC8qIGZpbGVu
YW1lcyAqLykgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5n
JiYgLypzdWJGcmFtZUhvc3QqLywgU3RyaW5nJiYgLyp0b3BGcmFtZUhvc3QqLywgdWludDY0X3Qg
LypmcmFtZUlEKi8sIHVpbnQ2NF90IC8qcGFnZUlEKi8sIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2spIHsgY2FsbGJhY2soZmFsc2UpOyB9Ci0gICAgdmlydHVh
bCB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIC8qc3ViRnJhbWVIb3N0Ki8sIFN0
cmluZyYmIC8qdG9wRnJhbWVIb3N0Ki8sIHVpbnQ2NF90IC8qZnJhbWVJRCovLCB1aW50NjRfdCAv
KnBhZ2VJRCovLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNr
KSB7IGNhbGxiYWNrKGZhbHNlKTsgfQorICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNz
KFJlZ2lzdHJhYmxlRG9tYWluJiYgLypzdWJGcmFtZURvbWFpbiovLCBSZWdpc3RyYWJsZURvbWFp
biYmIC8qdG9wRnJhbWVEb21haW4qLywgdWludDY0X3QgLypmcmFtZUlEKi8sIHVpbnQ2NF90IC8q
cGFnZUlEKi8sIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiAvKnN1YkZyYW1lRG9tYWlu
Ki8sIFJlZ2lzdHJhYmxlRG9tYWluJiYgLyp0b3BGcmFtZURvbWFpbiovLCB1aW50NjRfdCAvKmZy
YW1lSUQqLywgdWludDY0X3QgLypwYWdlSUQqLywgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NXYXNH
cmFudGVkOjpObywgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObyk7IH0KIAogI2lmIEVO
QUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCiAgICAgdmlydHVhbCB2b2lkIHNob3VsZEFsbG93RGV2
aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3MoRnJhbWUmLCBib29sIC8qIG1heVByb21wdCAq
LywgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25Q
ZXJtaXNzaW9uU3RhdGUpPiYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKERldmljZU9yaWVudGF0aW9u
T3JNb3Rpb25QZXJtaXNzaW9uU3RhdGU6OkRlbmllZCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAppbmRleCBkNGNkNDBiN2ViOGQ2NGNhOGEzNzkyMjQwZDFiYzIwMjlmZTcwOWM4
Li4zYjc2MTRiZDEwOGUyYjAwYzg2YzI1MmZmM2ZmMGVhNGMzYzg4YTY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC00Mzc3LDE1ICs0Mzc3LDYgQEAgdm9pZCBJbnRlcm5h
bHM6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlKQogICAgIERl
cHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQo
ZW5hYmxlKTsKIH0KIAotdm9pZCBJbnRlcm5hbHM6OnNldFVzZXJHcmFudHNTdG9yYWdlQWNjZXNz
KGJvb2wgdmFsdWUpCi17Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50
KCk7Ci0gICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZG9jdW1lbnQt
PnNldFVzZXJHcmFudHNTdG9yYWdlQWNjZXNzT3ZlcnJpZGUodmFsdWUpOwotfQotCiBTdHJpbmcg
SW50ZXJuYWxzOjpjb21wb3NlZFRyZWVBc1RleHQoTm9kZSYgbm9kZSkKIHsKICAgICBpZiAoIWlz
PENvbnRhaW5lck5vZGU+KG5vZGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXgg
NDkxMTk3YTg2ZDE3NzY4MGViZTdkNTg5Yzg0MGNhOTEzZDc2MGI5MC4uN2RjNTI3NjYxZjExNDE4
NDVkMmE0M2VmYWU4ODU4OTMyZjE1MmQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
CkBAIC02MzksNyArNjM5LDYgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIHJlc291cmNlTG9hZFN0
YXRpc3RpY3NGb3JVUkwoY29uc3QgRE9NVVJMJik7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZChib29sKTsKLSAgICB2b2lkIHNldFVzZXJHcmFudHNTdG9yYWdlQWNj
ZXNzKGJvb2wpOwogCiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQogICAgIGJvb2wgaXNSZWFkYWJs
ZVN0cmVhbURpc3R1cmJlZChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggNzhkNGI4OGE2NTE4MjE1OGEzNWM3OGI1YmNk
MmRkZWM0NTUxZTM5ZC4uNWM3YjIzNjI2NjA4YWJiNTM2Njk0ZjA5NDY4ZWYzYjg0NDdiZGM2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNjI1LDcgKzYyNSw2IEBAIGVu
dW0gQ29tcG9zaXRpbmdQb2xpY3kgewogCiAgICAgRE9NU3RyaW5nIHJlc291cmNlTG9hZFN0YXRp
c3RpY3NGb3JVUkwoRE9NVVJMIHVybCk7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZChib29sZWFuIGVuYWJsZSk7Ci0gICAgW0VuYWJsZWRCeVNldHRpbmc9U3RvcmFn
ZUFjY2Vzc0FQSV0gdm9pZCBzZXRVc2VyR3JhbnRzU3RvcmFnZUFjY2Vzcyhib29sZWFuIHZhbHVl
KTsKIAogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRDYW5TaG93TW9kYWxEaWFsb2dP
dmVycmlkZShib29sZWFuIGFsbG93KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggNWMyNzZhYmE4YmJmMjBjOWZmZmFl
YjEwZmExODFjZmRhMzczZjI1ZC4uYzZiODQ1ZjQ0YTIwYmMyN2FmZjAzODVjNzI1YjVkZjk1Y2Yy
MmUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5
LmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oIgogI2lu
Y2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50U3Rv
cmFnZUFjY2Vzcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvS2V5ZWRDb2RpbmcuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VMb2FkU3RhdGlzdGljcy5oPgpAQCAtNDUzLDcgKzQ1NCw3IEBAIHVuc2lnbmVkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5JRChjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYKICAgICByZXR1cm4gZG9tYWluSUQ7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydERvbWFpblJlbGF0aW9uc2hpcHMoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgbG9hZFN0YXRpc3RpY3MpCit2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnREb21haW5SZWxhdGlvbnNoaXBz
KGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIGxvYWRTdGF0aXN0aWNzKQogewogICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC03NjgsNyArNzY5LDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3Vi
RnJhbWVEb21haW4mJgogICAgIH07CiAKICAgICBhdXRvIHVzZXJXYXNQcm9tcHRlZEVhcmxpZXIg
PSBoYXNVc2VyR3JhbnRlZFN0b3JhZ2VBY2Nlc3NUaHJvdWdoUHJvbXB0KHN1YkZyYW1lU3RhdHVz
LnNlY29uZCwgdG9wRnJhbWVEb21haW4pOwotICAgIGlmICghdXNlcldhc1Byb21wdGVkRWFybGll
cikgeworICAgIGlmICh1c2VyV2FzUHJvbXB0ZWRFYXJsaWVyID09IFN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93bjo6Tm8pIHsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgUkVM
RUFTRV9MT0dfSU5GT19JRihkZWJ1Z0xvZ2dpbmdFbmFibGVkKCksIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEZWJ1ZywgIkFib3V0IHRvIGFzayB0aGUgdXNlciB3aGV0aGVyIHRoZXkgd2FudCB0byBn
cmFudCBzdG9yYWdlIGFjY2VzcyB0byAle3B1YmxpY31zIHVuZGVyICV7cHVibGljfXMgb3Igbm90
LiIsIHN1YkZyYW1lRG9tYWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHRvcEZyYW1lRG9tYWlu
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCkBAIC03NzcsNyArNzc4LDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoU3ViRnJhbWVEb21haW4mJgogICAgIH0KIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAot
ICAgIGlmICh1c2VyV2FzUHJvbXB0ZWRFYXJsaWVyKQorICAgIGlmICh1c2VyV2FzUHJvbXB0ZWRF
YXJsaWVyID09IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6WWVzKQogICAgICAgICBSRUxF
QVNFX0xPR19JTkZPX0lGKGRlYnVnTG9nZ2luZ0VuYWJsZWQoKSwgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RlYnVnLCAiU3RvcmFnZSBhY2Nlc3Mgd2FzIGdyYW50ZWQgdG8gJXtwdWJsaWN9cyB1bmRl
ciAle3B1YmxpY31zLiIsIHN1YkZyYW1lRG9tYWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHRv
cEZyYW1lRG9tYWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAKQEAgLTc4OCw4
ICs3ODksOCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1
ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmCiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIH0KICAgICAKLSAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChXVEZN
b3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIHBh
Z2VJRCwgdXNlcldhc1Byb21wdGVkRWFybGllciwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildIChib29sIHdhc0dyYW50ZWRBY2Nlc3MpIG11dGFibGUgewot
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3YXNHcmFudGVkQWNjZXNzID8gU3RvcmFnZUFjY2Vz
c1N0YXR1czo6SGFzQWNjZXNzIDogU3RvcmFnZUFjY2Vzc1N0YXR1czo6Q2Fubm90UmVxdWVzdEFj
Y2Vzcyk7CisgICAgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShzdWJGcmFtZURv
bWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBwYWdlSUQsIHVzZXJXYXNQ
cm9tcHRlZEVhcmxpZXIsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSAoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRlZCkgbXV0YWJsZSB7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdhc0dyYW50ZWQgPT0gU3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQ6OlllcyA/IFN0b3JhZ2VBY2Nlc3NTdGF0dXM6Okhhc0FjY2VzcyA6IFN0b3JhZ2VBY2Nl
c3NTdGF0dXM6OkNhbm5vdFJlcXVlc3RBY2Nlc3MpOwogICAgIH0pOwogfQogCkBAIC04MDksNDYg
KzgxMCw0NiBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1
ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbgogI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAogICAgIFJFTEVBU0VfTE9HX0lORk9fSUYoZGVidWdMb2dnaW5nRW5hYmxlZCgpLCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGVidWcsICJbVGVtcG9yYXJ5IGNvbWJhdGliaWxpdHkgZml4XSBT
dG9yYWdlIGFjY2VzcyB3YXMgZ3JhbnRlZCBmb3IgJXtwdWJsaWN9cyB1bmRlciBvcGVuZXIgcGFn
ZSBmcm9tICV7cHVibGljfXMsIHdpdGggdXNlciBpbnRlcmFjdGlvbiBpbiB0aGUgb3BlbmVkIHdp
bmRvdy4iLCBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3Muc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSwgb3BlbmVyRG9tYWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCi0gICAgZ3Jh
bnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nl
c3MpLCBXVEZNb3ZlKG9wZW5lckRvbWFpbiksIFdURjo6bnVsbG9wdCwgb3BlbmVyUGFnZUlELCBm
YWxzZSwgW10oYm9vbCkgeyB9KTsKKyAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChXVEZN
b3ZlKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyksIFdURk1vdmUob3BlbmVyRG9tYWluKSwg
V1RGOjpudWxsb3B0LCBvcGVuZXJQYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6
Tm8sIFtdKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKSB7IH0pOwogfQogCi12b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVE
b21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwg
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHVzZXJXYXNQcm9tcHRlZE5v
dywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vz
cyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZy
YW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFN0b3JhZ2VBY2Nl
c3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBpZiAodXNlcldhc1Byb21wdGVkTm93KSB7
CisgICAgaWYgKHByb21wdFdhc1Nob3duID09IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6
WWVzKSB7CiAgICAgICAgIGF1dG8gc3ViRnJhbWVTdGF0dXMgPSBlbnN1cmVSZXNvdXJjZVN0YXRp
c3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihzdWJGcmFtZURvbWFpbik7CiAgICAgICAgIEFTU0VS
VChzdWJGcmFtZVN0YXR1cy5maXJzdCA9PSBBZGRlZFJlY29yZDo6Tm8pOwogICAgICAgICBBU1NF
UlQoaGFzSGFkVXNlckludGVyYWN0aW9uKHN1YkZyYW1lRG9tYWluLCBPcGVyYXRpbmdEYXRlc1dp
bmRvdzo6TG9uZykpOwogICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXAobV9zdG9yYWdl
QWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnNTdGF0ZW1lbnQsIHN1YkZyYW1lU3RhdHVzLnNlY29u
ZCwgdG9wRnJhbWVEb21haW4pOwogICAgIH0KIAotICAgIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVy
bmFsKFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJh
bWVJRCwgcGFnZUlELCB1c2VyV2FzUHJvbXB0ZWROb3csIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChXVEZNb3ZlKHN1YkZyYW1lRG9t
YWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIHBhZ2VJRCwgcHJvbXB0V2Fz
U2hvd24sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3Vi
RnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURv
bWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlEIHBhZ2VJRCwgYm9vbCB1c2Vy
V2FzUHJvbXB0ZWROb3dPckVhcmxpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y2FsbGJhY2spCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFu
dFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBU
b3BGcmFtZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlE
LCBQYWdlSUQgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hv
d25Ob3dPckVhcmxpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwogCiAgICAgaWYgKHN1YkZyYW1lRG9tYWluID09IHRvcEZyYW1lRG9tYWluKSB7Ci0g
ICAgICAgIGNhbGxiYWNrKHRydWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZDo6WWVzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
ICh1c2VyV2FzUHJvbXB0ZWROb3dPckVhcmxpZXIpIHsKKyAgICBpZiAocHJvbXB0V2FzU2hvd25O
b3dPckVhcmxpZXIgPT0gU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpZZXMpIHsKICNpZm5k
ZWYgTkRFQlVHCiAgICAgICAgIGF1dG8gc3ViRnJhbWVTdGF0dXMgPSBlbnN1cmVSZXNvdXJjZVN0
YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihzdWJGcmFtZURvbWFpbik7CiAgICAgICAgIEFT
U0VSVChzdWJGcmFtZVN0YXR1cy5maXJzdCA9PSBBZGRlZFJlY29yZDo6Tm8pOwogICAgICAgICBB
U1NFUlQoaGFzSGFkVXNlckludGVyYWN0aW9uKHN1YkZyYW1lRG9tYWluLCBPcGVyYXRpbmdEYXRl
c1dpbmRvdzo6TG9uZykpOwotICAgICAgICBBU1NFUlQoaGFzVXNlckdyYW50ZWRTdG9yYWdlQWNj
ZXNzVGhyb3VnaFByb21wdChzdWJGcmFtZVN0YXR1cy5zZWNvbmQsIHRvcEZyYW1lRG9tYWluKSk7
CisgICAgICAgIEFTU0VSVChoYXNVc2VyR3JhbnRlZFN0b3JhZ2VBY2Nlc3NUaHJvdWdoUHJvbXB0
KHN1YkZyYW1lU3RhdHVzLnNlY29uZCwgdG9wRnJhbWVEb21haW4pID09IFN0b3JhZ2VBY2Nlc3NQ
cm9tcHRXYXNTaG93bjo6WWVzKTsKICNlbmRpZgogICAgICAgICBzZXRVc2VySW50ZXJhY3Rpb24o
c3ViRnJhbWVEb21haW4sIHRydWUsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgfQogCi0gICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlz
b2xhdGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVkQ29w
eSgpLCBmcmFtZUlELCBwYWdlSUQsIHN0b3JlID0gbWFrZVJlZihzdG9yZSgpKSwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgc3RvcmUtPmNhbGxHcmFu
dFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJh
bWVJRCwgcGFnZUlELCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgc3RvcmUgPSBzdG9y
ZS5jb3B5UmVmKCldKGJvb2wgdmFsdWUpIG11dGFibGUgewotICAgICAgICAgICAgc3RvcmUtPnN0
YXRpc3RpY3NRdWV1ZSgpLmRpc3BhdGNoKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB2
YWx1ZV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2sodmFsdWUpOworICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3ViRnJhbWVEb21haW4gPSBzdWJGcmFtZURvbWFp
bi5pc29sYXRlZENvcHkoKSwgdG9wRnJhbWVEb21haW4gPSB0b3BGcmFtZURvbWFpbi5pc29sYXRl
ZENvcHkoKSwgZnJhbWVJRCwgcGFnZUlELCBzdG9yZSA9IG1ha2VSZWYoc3RvcmUoKSksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Cisg
ICAgICAgIHN0b3JlLT5jYWxsR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihzdWJGcmFtZURvbWFp
biwgdG9wRnJhbWVEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgW2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHN0b3JlID0gc3RvcmUuY29weVJlZigpXShTdG9y
YWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHN0
b3JlLT5zdGF0aXN0aWNzUXVldWUoKS5kaXNwYXRjaChbd2FzR3JhbnRlZCwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod2FzR3JhbnRlZCk7CiAgICAgICAgICAgICB9KTsK
ICAgICAgICAgfSk7CiAgICAgfSk7CkBAIC0xMzQ5LDcgKzEzNTAsNyBAQCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Q29va2llVHJlYXRtZW50UmVzdWx0IFJlc291cmNlTG9h
ZFN0YXRpc3RpYwogICAgIHJldHVybiBoYWRVc2VySW50ZXJhY3Rpb24gPyBDb29raWVUcmVhdG1l
bnRSZXN1bHQ6OkJsb2NrQW5kS2VlcCA6IENvb2tpZVRyZWF0bWVudFJlc3VsdDo6QmxvY2tBbmRQ
dXJnZTsKIH0KICAgICAKLWJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
Omhhc1VzZXJHcmFudGVkU3RvcmFnZUFjY2Vzc1Rocm91Z2hQcm9tcHQodW5zaWduZWQgcmVxdWVz
dGluZ0RvbWFpbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbikg
Y29uc3QKK1N0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6aGFzVXNlckdyYW50ZWRTdG9yYWdlQWNjZXNzVGhyb3VnaFByb21wdCh1
bnNpZ25lZCByZXF1ZXN0aW5nRG9tYWluSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJz
dFBhcnR5RG9tYWluKSBjb25zdAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
CkBAIC0xMzU4LDkgKzEzNTksOSBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpoYXNVc2VyR3JhbnRlZFN0b3JhZ2VBY2Nlc3NUaHJvdWdoUHJvbQogICAgIFNRTGl0
ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgbWFrZVN0cmluZygiU0VMRUNUIENPVU5U
KCopIEZST00gU3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIGRvbWFpbklE
ID0gIiwgU3RyaW5nOjpudW1iZXIocmVxdWVzdGluZ0RvbWFpbklEKSwgIiBBTkQgdG9wTGV2ZWxE
b21haW5JRCA9ICIsIFN0cmluZzo6bnVtYmVyKGZpcnN0UGFydHlQcmltYXJ5RG9tYWluSUQpKSk7
CiAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IHN0
YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JPVykKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXR1cm4gU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObzsKIAotICAgIHJldHVy
biAhc3RhdGVtZW50LmdldENvbHVtbkludCgwKTsKKyAgICByZXR1cm4gIXN0YXRlbWVudC5nZXRD
b2x1bW5JbnQoMCkgPyBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246OlllcyA6IFN0b3JhZ2VB
Y2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm87CiB9CiAKIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4g
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbnNUb0Jsb2NrKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
LmgKaW5kZXggMTI5NDZhNmIwNTczN2I1MmJlODAzMTVmNDJiZTRkODZmNjE3NjI0ZS4uYmFiMmI3
YWVhYjc2MGQyYTNlMWVjYmRlOGI3NTg1Mzc1NWUzYWU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKQEAgLTM5LDYgKzM5LDggQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNRTGl0ZURhdGFiYXNlOwogY2xhc3MgU1FMaXRl
U3RhdGVtZW50OworZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gOiBib29s
OworZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA6IGJvb2w7CiBzdHJ1Y3QgUmVz
b3VyY2VMb2FkU3RhdGlzdGljczsKIH0KIApAQCAtOTEsNyArOTMsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BG
cmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
U3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgUGFnZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFp
biYmLCBGcmFtZUlELCBQYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkTm93LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFj
Y2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQs
IFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpIG92ZXJyaWRlOwogCiAg
ICAgdm9pZCBsb2dGcmFtZU5hdmlnYXRpb24oY29uc3QgTmF2aWdhdGVkVG9Eb21haW4mLCBjb25z
dCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZEZyb21Eb21haW4mLCBib29sIGlzUmVk
aXJlY3QsIGJvb2wgaXNNYWluRnJhbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9nVXNlckludGVy
YWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9tYWluJikgb3ZlcnJpZGU7CkBAIC0xMjgsNyArMTMwLDcg
QEAgcHJpdmF0ZToKICAgICBWZWN0b3I8dW5zaWduZWQ+IGZpbmRFeHBpcmVkVXNlckludGVyYWN0
aW9ucygpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJFeHBpcmVkVXNlckludGVyYWN0aW9ucygpOwog
ICAgIHZvaWQgY2xlYXJHcmFuZGZhdGhlcmluZyhWZWN0b3I8dW5zaWduZWQ+JiYpOwotICAgIGJv
b2wgaGFzVXNlckdyYW50ZWRTdG9yYWdlQWNjZXNzVGhyb3VnaFByb21wdCh1bnNpZ25lZCBkb21h
aW5JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKKyAgICBXZWJDb3JlOjpTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gaGFzVXNlckdyYW50ZWRTdG9yYWdlQWNjZXNzVGhyb3Vn
aFByb21wdCh1bnNpZ25lZCBkb21haW5JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25z
dDsKICAgICB2b2lkIGluY3JlbWVudFJlY29yZHNEZWxldGVkQ291bnRGb3JEb21haW5zKEhhc2hT
ZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCByZWNsYXNzaWZ5
UmVzb3VyY2VzKCk7CkBAIC0xNTAsNyArMTUyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFBy
ZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgUmVzb3VyY2VMb2FkUHJl
dmFsZW5jZSk7CiAgICAgdW5zaWduZWQgcmVjdXJzaXZlbHlGaW5kTm9uUHJldmFsZW50RG9tYWlu
c1RoYXRSZWRpcmVjdGVkVG9UaGlzRG9tYWluKHVuc2lnbmVkIHByaW1hcnlEb21haW5JRCwgU3Rk
U2V0PHVuc2lnbmVkPiYgbm9uUHJldmFsZW50UmVkaXJlY3Rpb25Tb3VyY2VzLCB1bnNpZ25lZCBu
dW1iZXJPZlJlY3Vyc2l2ZUNhbGxzKTsKICAgICB2b2lkIHNldERvbWFpbnNBc1ByZXZhbGVudChT
dGRTZXQ8dW5zaWduZWQ+JiYpOwotICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwo
U3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBh
Z2VJRCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWROb3dPckVhcmxpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3Vi
RnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJ
RCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CiAgICAgdm9pZCBt
YXJrQXNQcmV2YWxlbnRJZkhhc1JlZGlyZWN0ZWRUb1ByZXZhbGVudCgpOwogICAgIFZlY3RvcjxS
ZWdpc3RyYWJsZURvbWFpbj4gZW5zdXJlUHJldmFsZW50UmVzb3VyY2VzRm9yRGVidWdNb2RlKCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVEYXRhUmVjb3JkcyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlLmNwcAppbmRleCA2OWY3OTI0MzBmZmU2NWIzNjgzMzMyNTc0Y2YyNDNlMGZjN2IwOTE3
Li5mOGY2ODgyNDY0NGM4MmU1M2RmYjM5NmI5MDlmMGJmYTE0NzY4NjBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcApAQCAtMzcsNiAr
MzcsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3Jl
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0tleWVkQ29kaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaD4K
QEAgLTI0NCw3ICsyNDUsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9y
ZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiBzdQogICAgIH0KIAogICAg
IGF1dG8gdXNlcldhc1Byb21wdGVkRWFybGllciA9IGhhc1VzZXJHcmFudGVkU3RvcmFnZUFjY2Vz
c1Rocm91Z2hQcm9tcHQoc3ViRnJhbWVTdGF0aXN0aWMsIHRvcEZyYW1lRG9tYWluKTsKLSAgICBp
ZiAoIXVzZXJXYXNQcm9tcHRlZEVhcmxpZXIpIHsKKyAgICBpZiAodXNlcldhc1Byb21wdGVkRWFy
bGllciA9PSBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vKSB7CiAjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECiAgICAgICAgIFJFTEVBU0VfTE9HX0lORk9fSUYoZGVidWdMb2dnaW5nRW5h
YmxlZCgpLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWcsICJBYm91dCB0byBhc2sgdGhlIHVz
ZXIgd2hldGhlciB0aGV5IHdhbnQgdG8gZ3JhbnQgc3RvcmFnZSBhY2Nlc3MgdG8gJXtwdWJsaWN9
cyB1bmRlciAle3B1YmxpY31zIG9yIG5vdC4iLCBzdWJGcmFtZURvbWFpbi5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCB0b3BGcmFtZURvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICNlbmRp
ZgpAQCAtMjUzLDE0ICsyNTQsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3UKICAgICB9CiAK
ICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBpZiAodXNlcldhc1Byb21wdGVkRWFybGll
cikKKyAgICBpZiAodXNlcldhc1Byb21wdGVkRWFybGllciA9PSBTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd246OlllcykKICAgICAgICAgUkVMRUFTRV9MT0dfSU5GT19JRihkZWJ1Z0xvZ2dpbmdF
bmFibGVkKCksIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1ZywgIlN0b3JhZ2UgYWNjZXNzIHdh
cyBncmFudGVkIHRvICV7cHVibGljfXMgdW5kZXIgJXtwdWJsaWN9cy4iLCBzdWJGcmFtZURvbWFp
bi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0b3BGcmFtZURvbWFpbi5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKICNlbmRpZgogCiAgICAgc3ViRnJhbWVTdGF0aXN0aWMudGltZXNBY2Nlc3NlZEFz
Rmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSSsrOwogCi0gICAgZ3JhbnRTdG9yYWdlQWNj
ZXNzSW50ZXJuYWwoV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21h
aW4pLCBmcmFtZUlELCBwYWdlSUQsIHVzZXJXYXNQcm9tcHRlZEVhcmxpZXIsIFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCB3YXNHcmFudGVkQWNj
ZXNzKSBtdXRhYmxlIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod2FzR3JhbnRlZEFjY2Vz
cyA/IFN0b3JhZ2VBY2Nlc3NTdGF0dXM6Okhhc0FjY2VzcyA6IFN0b3JhZ2VBY2Nlc3NTdGF0dXM6
OkNhbm5vdFJlcXVlc3RBY2Nlc3MpOworICAgIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdU
Rk1vdmUoc3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwg
cGFnZUlELCB1c2VyV2FzUHJvbXB0ZWRFYXJsaWVyLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50
ZWQpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3YXNHcmFudGVkID09IFN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMgPyBTdG9yYWdlQWNjZXNzU3RhdHVzOjpIYXNBY2Nl
c3MgOiBTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5ub3RSZXF1ZXN0QWNjZXNzKTsKICAgICB9KTsK
IH0KIApAQCAtMjgyLDQxICsyODMsNDEgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW4KICNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBSRUxFQVNFX0xPR19JTkZPX0lGKGRlYnVnTG9nZ2lu
Z0VuYWJsZWQoKSwgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnLCAiW1RlbXBvcmFyeSBjb21i
YXRpYmlsaXR5IGZpeF0gU3RvcmFnZSBhY2Nlc3Mgd2FzIGdyYW50ZWQgZm9yICV7cHVibGljfXMg
dW5kZXIgb3BlbmVyIHBhZ2UgZnJvbSAle3B1YmxpY31zLCB3aXRoIHVzZXIgaW50ZXJhY3Rpb24g
aW4gdGhlIG9wZW5lZCB3aW5kb3cuIiwgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCksIG9wZW5lckRvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
ICNlbmRpZgotICAgIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoZG9tYWluSW5O
ZWVkT2ZTdG9yYWdlQWNjZXNzKSwgV1RGTW92ZShvcGVuZXJEb21haW4pLCBXVEY6Om51bGxvcHQs
IG9wZW5lclBhZ2VJRCwgZmFsc2UsIFtdKGJvb2wpIHsgfSk7CisgICAgZ3JhbnRTdG9yYWdlQWNj
ZXNzSW50ZXJuYWwoV1RGTW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpLCBXVEZNb3Zl
KG9wZW5lckRvbWFpbiksIFdURjo6bnVsbG9wdCwgb3BlbmVyUGFnZUlELCBTdG9yYWdlQWNjZXNz
UHJvbXB0V2FzU2hvd246Ok5vLCBbXShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCkgeyB9KTsKIH0K
IAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50U3RvcmFnZUFj
Y2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRv
cEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNl
cldhc1Byb21wdGVkTm93LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50
U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURv
bWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBpZiAodXNlcldhc1By
b21wdGVkTm93KSB7CisgICAgaWYgKHByb21wdFdhc1Nob3duID09IFN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93bjo6WWVzKSB7CiAgICAgICAgIGF1dG8mIHN1YkZyYW1lU3RhdGlzdGljID0gZW5z
dXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oc3ViRnJhbWVEb21haW4p
OwogICAgICAgICBBU1NFUlQoc3ViRnJhbWVTdGF0aXN0aWMuaGFkVXNlckludGVyYWN0aW9uKTsK
ICAgICAgICAgc3ViRnJhbWVTdGF0aXN0aWMuc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21h
aW5zLmFkZCh0b3BGcmFtZURvbWFpbik7CiAgICAgfQotICAgIGdyYW50U3RvcmFnZUFjY2Vzc0lu
dGVybmFsKFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwg
ZnJhbWVJRCwgcGFnZUlELCB1c2VyV2FzUHJvbXB0ZWROb3csIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKyAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChXVEZNb3ZlKHN1YkZyYW1l
RG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIHBhZ2VJRCwgcHJvbXB0
V2FzU2hvd24sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1
YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVE
b21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJRCBwYWdlSUQsIGJvb2wgdXNl
cldhc1Byb21wdGVkTm93T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNhbGxiYWNrKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50
U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRv
cEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQs
IFBhZ2VJRCBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93
bk5vd09yRWFybGllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiAKICAgICBpZiAoc3ViRnJhbWVEb21haW4gPT0gdG9wRnJhbWVEb21haW4pIHsKLSAg
ICAgICAgY2FsbGJhY2sodHJ1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkOjpZZXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYg
KHVzZXJXYXNQcm9tcHRlZE5vd09yRWFybGllcikgeworICAgIGlmIChwcm9tcHRXYXNTaG93bk5v
d09yRWFybGllciA9PSBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246OlllcykgewogICAgICAg
ICBhdXRvJiBzdWJGcmFtZVN0YXRpc3RpYyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJl
Z2lzdHJhYmxlRG9tYWluKHN1YkZyYW1lRG9tYWluKTsKICAgICAgICAgQVNTRVJUKHN1YkZyYW1l
U3RhdGlzdGljLmhhZFVzZXJJbnRlcmFjdGlvbik7CiAgICAgICAgIEFTU0VSVChzdWJGcmFtZVN0
YXRpc3RpYy5zdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMuY29udGFpbnModG9wRnJh
bWVEb21haW4pKTsKICAgICAgICAgc3ViRnJhbWVTdGF0aXN0aWMubW9zdFJlY2VudFVzZXJJbnRl
cmFjdGlvblRpbWUgPSBXYWxsVGltZTo6bm93KCk7CiAgICAgfQogCi0gICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlzb2xhdGVkQ29w
eSgpLCB0b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCBmcmFt
ZUlELCBwYWdlSUQsIHN0b3JlID0gbWFrZVJlZihzdG9yZSgpKSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgc3RvcmUtPmNhbGxHcmFudFN0b3JhZ2VB
Y2Nlc3NIYW5kbGVyKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRCwgcGFn
ZUlELCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgc3RvcmUgPSBzdG9yZS5jb3B5UmVm
KCldKGJvb2wgdmFsdWUpIG11dGFibGUgewotICAgICAgICAgICAgc3RvcmUtPnN0YXRpc3RpY3NR
dWV1ZSgpLmRpc3BhdGNoKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB2YWx1ZV0gKCkg
bXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2sodmFsdWUpOworICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbc3ViRnJhbWVEb21haW4gPSBzdWJGcmFtZURvbWFpbi5pc29sYXRl
ZENvcHkoKSwgdG9wRnJhbWVEb21haW4gPSB0b3BGcmFtZURvbWFpbi5pc29sYXRlZENvcHkoKSwg
ZnJhbWVJRCwgcGFnZUlELCBzdG9yZSA9IG1ha2VSZWYoc3RvcmUoKSksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIHN0
b3JlLT5jYWxsR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihzdWJGcmFtZURvbWFpbiwgdG9wRnJh
bWVEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIHN0b3JlID0gc3RvcmUuY29weVJlZigpXShTdG9yYWdlQWNjZXNz
V2FzR3JhbnRlZCB3YXNHcmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHN0b3JlLT5zdGF0
aXN0aWNzUXVldWUoKS5kaXNwYXRjaChbd2FzR3JhbnRlZCwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIod2FzR3JhbnRlZCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAg
fSk7CiAgICAgfSk7CkBAIC03NDEsOSArNzQyLDkgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmU6OnNob3VsZEJsb2NrQW5kUHVyZ2VDb29raWVzKGNvbnN0IFJlc291cmMK
ICAgICByZXR1cm4gc3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UgJiYgIXN0YXRpc3RpYy5o
YWRVc2VySW50ZXJhY3Rpb247CiB9CiAKLWJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlOjpoYXNVc2VyR3JhbnRlZFN0b3JhZ2VBY2Nlc3NUaHJvdWdoUHJvbXB0KGNvbnN0IFJl
c291cmNlTG9hZFN0YXRpc3RpY3MmIHN0YXRpc3RpYywgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGZpcnN0UGFydHlEb21haW4pCitTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpoYXNVc2VyR3JhbnRlZFN0b3JhZ2VBY2Nlc3NUaHJv
dWdoUHJvbXB0KGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHN0YXRpc3RpYywgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4pCiB7Ci0gICAgcmV0dXJuIHN0YXRp
c3RpYy5zdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMuY29udGFpbnMoZmlyc3RQYXJ0
eURvbWFpbik7CisgICAgcmV0dXJuIHN0YXRpc3RpYy5zdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFt
ZURvbWFpbnMuY29udGFpbnMoZmlyc3RQYXJ0eURvbWFpbikgPyBTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd246OlllcyA6IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm87CiB9CiAKIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjp1cGRhdGVDb29raWVCbG9ja2lu
ZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKaW5kZXggZjFkZDJk
ODM2NWNjMTViYmQ4YjhlYzE4YjFlNmE4ZTJkNDZhZDlmMi4uNDRlZmJmNGRlYzE0ZjIwMjcwMmFj
YWQwNzc2OGY1YWM4MjBiODA1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmUuaApAQCAtMzcsNiArMzcsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgS2V5ZWREZWNvZGVyOwogY2xhc3MgS2V5ZWRFbmNvZGVyOworZW51bSBjbGFzcyBT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gOiBib29sOworZW51bSBjbGFzcyBTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCA6IGJvb2w7CiBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKIH0K
IApAQCAtOTcsNyArOTksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3Mo
Y29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZy
YW1lSUQ+LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRl
OwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJh
bWVEb21haW4mJiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3Jh
Z2VBY2Nlc3NTdGF0dXMpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vz
cyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIGJv
b2wgdXNlcldhc1Byb21wdGVkTm93LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBv
dmVycmlkZTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBU
b3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQ
cm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCk+JiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBsb2dGcmFtZU5hdmlnYXRp
b24oY29uc3QgTmF2aWdhdGVkVG9Eb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0
IE5hdmlnYXRlZEZyb21Eb21haW4mLCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJhbWUp
IG92ZXJyaWRlOwogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9t
YWluJikgb3ZlcnJpZGU7CkBAIC0xMTMsNyArMTE1LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBzdGF0aWMgYm9vbCBzaG91bGRCbG9ja0FuZEtlZXBDb29raWVzKGNvbnN0IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRCbG9ja0FuZFB1cmdlQ29va2ll
cyhjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7Ci0gICAgc3RhdGljIGJvb2wgaGFzVXNl
ckdyYW50ZWRTdG9yYWdlQWNjZXNzVGhyb3VnaFByb21wdChjb25zdCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzJiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6
U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIGhhc1VzZXJHcmFudGVkU3RvcmFnZUFjY2Vzc1Ro
cm91Z2hQcm9tcHQoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJik7CiAgICAgYm9vbCBoYXNIYWRVbmV4cGlyZWRSZWNlbnRVc2VySW50ZXJhY3Rp
b24oUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYsIE9wZXJhdGluZ0RhdGVzV2luZG93KSBjb25zdDsK
ICAgICBib29sIHNob3VsZFJlbW92ZUFsbFdlYnNpdGVEYXRhRm9yKFJlc291cmNlTG9hZFN0YXRp
c3RpY3MmLCBib29sIHNob3VsZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcpIGNvbnN0OwogICAgIGJv
b2wgc2hvdWxkUmVtb3ZlQWxsQnV0Q29va2llc0ZvcihSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwg
Ym9vbCBzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5nKSBjb25zdDsKQEAgLTEyMSw3ICsxMjMs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5jcmVtZW50UmVjb3Jkc0RlbGV0ZWRDb3VudEZvckRv
bWFpbnMoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
ZXRQcmV2YWxlbnRSZXNvdXJjZShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgUmVzb3VyY2VMb2Fk
UHJldmFsZW5jZSk7CiAgICAgdW5zaWduZWQgcmVjdXJzaXZlbHlHZXRBbGxEb21haW5zVGhhdEhh
dmVSZWRpcmVjdGVkVG9UaGlzRG9tYWluKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmLCBI
YXNoU2V0PFJlZGlyZWN0ZWRUb0RvbWFpbj4mLCB1bnNpZ25lZCBudW1iZXJPZlJlY3Vyc2l2ZUNh
bGxzKSBjb25zdDsKLSAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1l
RG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIGJv
b2wgdXNlcldhc1Byb21wdGVkTm93T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9t
YWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIFdlYkNv
cmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpOwogICAgIHZvaWQgbWFya0FzUHJl
dmFsZW50SWZIYXNSZWRpcmVjdGVkVG9QcmV2YWxlbnQoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYp
OwogICAgIGJvb2wgaXNQcmV2YWxlbnREdWVUb0RlYnVnTW9kZShSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzJik7CiAgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBlbnN1cmVQcmV2YWxlbnRSZXNv
dXJjZXNGb3JEZWJ1Z01vZGUoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaAppbmRleCBkMzBhYTlmNWRkYWVhOWRjZjcwYzJiMDg2YzM0MjJjNjMzMmYz
MWJlLi4yMjBiM2M2YmY2NTVkMmYwNmI5NzZjMTQxYzM3ZDdjY2U5MjYwYTU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC00MSw2ICs0MSw4IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBLZXllZERlY29kZXI7CiBjbGFzcyBLZXllZEVuY29kZXI7
CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biA6IGJvb2w7CitlbnVtIGNs
YXNzIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIDogYm9vbDsKIHN0cnVjdCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzOwogfQogCkBAIC0xNjEsNyArMTYzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BG
cmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgUGFnZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFt
ZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkTm93LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdyYW50
U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlE
LCBQYWdlSUQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpID0gMDsK
IAogICAgIHZpcnR1YWwgdm9pZCBsb2dGcmFtZU5hdmlnYXRpb24oY29uc3QgTmF2aWdhdGVkVG9E
b21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZEZyb21Eb21haW4m
LCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJhbWUpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9tYWluJikgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBiNzk4ZmQw
YzQ3YzNmNzZhZjBlZDAzYTljMGNhY2IwODBiNmY3ZmZmLi4yNTJmZTFjYTAzMTYzMTBmM2E0ZGYx
ZmU4YjkyZDY4NDFjNWM5Njk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ29v
a2llSmFyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oPgpAQCAtMzE0
LDUyICszMTUsNDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNhbGxI
YXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFIKICAgICBjYWxsYmFjayhmYWxz
ZSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0U3Rv
cmFnZUFjY2Vzc0dyYW50ZWQoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWlu
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1
ZXN0U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4s
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogeworICAgIGlmIChzdWJGcmFtZURvbWFpbiA9PSB0b3BGcmFtZURvbWFpbikgeworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVzLCBTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAKICAgICBhdXRvIHN0YXR1c0hhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgp
LCB0b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCBmcmFtZUlE
LCBwYWdlSUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KFN0b3JhZ2VBY2Nlc3NTdGF0dXMgc3RhdHVzKSBtdXRhYmxlIHsKICAgICAgICAgc3dpdGNoIChz
dGF0dXMpIHsKICAgICAgICAgY2FzZSBTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5ub3RSZXF1ZXN0
QWNjZXNzOgotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Ok5vLCBTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
Y2FzZSBTdG9yYWdlQWNjZXNzU3RhdHVzOjpSZXF1aXJlc1VzZXJQcm9tcHQ6CiAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiByZXF1ZXN0Q29u
ZmlybWF0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IHByb3Rl
Y3RlZFRoaXMuY29weVJlZigpLCBzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIGZyYW1l
SUQsIHBhZ2VJRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKGJvb2wgdXNlckRpZEdyYW50QWNjZXNzKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBp
ZiAodXNlckRpZEdyYW50QWNjZXNzKQotICAgICAgICAgICAgICAgICAgICBncmFudFN0b3JhZ2VB
Y2Nlc3Moc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIHVz
ZXJEaWRHcmFudEFjY2VzcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAg
ICAgICAgICAgICBncmFudFN0b3JhZ2VBY2Nlc3Moc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9t
YWluLCBmcmFtZUlELCBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6WWVzLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpObywgU3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpZZXMpOwogICAgICAgICAgICAgfTsKICAgICAgICAgICAg
IG1fbmV0d29ya1Nlc3Npb24tPm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpS
ZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm0ocGFnZUlELCBmcmFtZUlELCBzdWJGcmFtZURvbWFp
biwgdG9wRnJhbWVEb21haW4pLCBXVEZNb3ZlKHJlcXVlc3RDb25maXJtYXRpb25Db21wbGV0aW9u
SGFuZGxlcikpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBj
YXNlIFN0b3JhZ2VBY2Nlc3NTdGF0dXM6Okhhc0FjY2VzczoKLSAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHRydWUpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3RvcmFnZUFj
Y2Vzc1dhc0dyYW50ZWQ6OlllcywgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObyk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9OwogCi0gICAgcmVxdWVzdFN0b3Jh
Z2VBY2Nlc3Moc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELCBwYWdlSUQs
IFdURk1vdmUoc3RhdHVzSGFuZGxlcikpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4s
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17
Ci0gICAgaWYgKHN1YkZyYW1lRG9tYWluID09IHRvcEZyYW1lRG9tYWluKSB7Ci0gICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NTdGF0dXM6Okhhc0FjY2Vzcyk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBwb3N0VGFzayhbdGhpcywgc3ViRnJhbWVEb21haW4gPSBz
dWJGcmFtZURvbWFpbi5pc29sYXRlZENvcHkoKSwgdG9wRnJhbWVEb21haW4gPSB0b3BGcmFtZURv
bWFpbi5pc29sYXRlZENvcHkoKSwgZnJhbWVJRCwgcGFnZUlELCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0
aGlzLCBzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCB0b3BG
cmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCBmcmFtZUlELCBwYWdl
SUQsIHN0YXR1c0hhbmRsZXIgPSBXVEZNb3ZlKHN0YXR1c0hhbmRsZXIpXSgpIG11dGFibGUgewog
ICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlKSB7Ci0gICAgICAgICAgICBwb3N0VGFza1Jl
cGx5KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgewotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NT
dGF0dXM6OkNhbm5vdFJlcXVlc3RBY2Nlc3MpOworICAgICAgICAgICAgcG9zdFRhc2tSZXBseShb
c3RhdHVzSGFuZGxlciA9IFdURk1vdmUoc3RhdHVzSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAg
ICAgICAgICAgICAgc3RhdHVzSGFuZGxlcihTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5ub3RSZXF1
ZXN0QWNjZXNzKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKG1fc3RhdGlzdGljc1N0b3JlKSB7Ci0gICAgICAgICAgICBtX3N0
YXRpc3RpY3NTdG9yZS0+cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZURvbWFp
biksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELnZhbHVlKCksIHBhZ2VJRCwgW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFN0b3JhZ2VBY2Nl
c3NTdGF0dXMgc3RhdHVzKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBwb3N0VGFza1JlcGx5
KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzdGF0dXNd
KCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXR1
cyk7CisgICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+cmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
V1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlE
LCBwYWdlSUQsIFtzdGF0dXNIYW5kbGVyID0gV1RGTW92ZShzdGF0dXNIYW5kbGVyKV0oU3RvcmFn
ZUFjY2Vzc1N0YXR1cyBzdGF0dXMpIG11dGFibGUgeworICAgICAgICAgICAgICAgIHBvc3RUYXNr
UmVwbHkoW3N0YXR1c0hhbmRsZXIgPSBXVEZNb3ZlKHN0YXR1c0hhbmRsZXIpLCBzdGF0dXNdKCkg
bXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAgIHN0YXR1c0hhbmRsZXIoc3RhdHVzKTsKICAg
ICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CkBAIC0zNzksMjgg
KzM3NSwyOCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0
b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihSZWdpc3RyYWJsZQogICAgIH0pOwogfQogCi12b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wg
dXNlcldhc1Byb21wdGVkTm93LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50
U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hv
d24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBwb3N0VGFzayhbdGhpcywgc3ViRnJhbWVEb21h
aW4gPSBzdWJGcmFtZURvbWFpbi5pc29sYXRlZENvcHkoKSwgdG9wRnJhbWVEb21haW4gPSB0b3BG
cmFtZURvbWFpbi5pc29sYXRlZENvcHkoKSwgZnJhbWVJRCwgcGFnZUlELCB1c2VyV2FzUHJvbXB0
ZWROb3csIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CisgICAgcG9zdFRhc2soW3RoaXMsIHN1YkZyYW1lRG9tYWluID0gc3ViRnJhbWVE
b21haW4uaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gdG9wRnJhbWVEb21haW4uaXNv
bGF0ZWRDb3B5KCksIGZyYW1lSUQsIHBhZ2VJRCwgcHJvbXB0V2FzU2hvd24sIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAg
IGlmICghbV9zdGF0aXN0aWNzU3RvcmUpIHsKLSAgICAgICAgICAgIHBvc3RUYXNrUmVwbHkoW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7
Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICAgICAg
cG9zdFRhc2tSZXBseShbcHJvbXB0V2FzU2hvd24sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Ok5vLCBwcm9tcHRXYXNTaG93bik7
CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChtX3N0YXRpc3RpY3NTdG9yZSkgewotICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3Rv
cmUtPmdyYW50U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0
b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIHBhZ2VJRCwgdXNlcldhc1Byb21wdGVkTm93LCBbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCB3YXNHcmFu
dGVkQWNjZXNzKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBwb3N0VGFza1JlcGx5KFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB3YXNHcmFudGVkQWNj
ZXNzXSgpIG11dGFibGUgewotICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3
YXNHcmFudGVkQWNjZXNzKTsKKyAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5ncmFudFN0
b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21h
aW4pLCBmcmFtZUlELCBwYWdlSUQsIHByb21wdFdhc1Nob3duLCBbcHJvbXB0V2FzU2hvd24sIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkIHdhc0dyYW50ZWRBY2Nlc3MpIG11dGFibGUgeworICAgICAgICAgICAgICAg
IHBvc3RUYXNrUmVwbHkoW3dhc0dyYW50ZWRBY2Nlc3MsIHByb21wdFdhc1Nob3duLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAg
ICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3YXNHcmFudGVkQWNjZXNzLCBwcm9t
cHRXYXNTaG93bik7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKICAgICAg
ICAgfQogICAgIH0pOwogfQogCi1ib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFp
biwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpCitTdG9yYWdlQWNjZXNzV2FzR3JhbnRl
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0
X3QgcGFnZUlEKQogewogICAgIGJvb2wgaXNTdG9yYWdlR3JhbnRlZCA9IGZhbHNlOwogCkBAIC00
MTAsMTQgKzQwNiwxNCBAQCBib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3Jh
bnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJgogICAgICAgICBpc1N0b3Jh
Z2VHcmFudGVkID0gdHJ1ZTsKICAgICB9CiAKLSAgICByZXR1cm4gaXNTdG9yYWdlR3JhbnRlZDsK
KyAgICByZXR1cm4gaXNTdG9yYWdlR3JhbnRlZCA/IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZ
ZXMgOiBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6Tm87CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBh
Z2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxl
cihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKIAotICAgIGNhbGxiYWNrKGdyYW50U3RvcmFnZUFjY2VzcyhzdWJGcmFtZURvbWFpbiwg
dG9wRnJhbWVEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVy
KGdyYW50U3RvcmFnZUFjY2VzcyhzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIGZyYW1l
SUQsIHBhZ2VJRCkpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
ZGlkQ3JlYXRlTmV0d29ya1Byb2Nlc3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oCmluZGV4IGEwZmU4ZWNlOGQ4ZjhlNWVhMTNlMDg2YzNlZmQ1ZWJiZDJm
YzhhYTIuLmY1NjlkYzM2NDMxYTRkZGRjNGI3ZmZiNDQxYjM0MGUwNTllZGRkMWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTQ4LDYgKzQ4LDgg
QEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owogc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3M7
CiBlbnVtIGNsYXNzIFNob3VsZFNhbXBsZSA6IGJvb2w7CiBlbnVtIGNsYXNzIEluY2x1ZGVIdHRw
T25seUNvb2tpZXMgOiBib29sOworZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hv
d24gOiBib29sOworZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA6IGJvb2w7CiB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODMsNiArODUsOCBAQCBwdWJsaWM6CiAgICAgdXNp
bmcgT3BlbmVyUGFnZUlEID0gdWludDY0X3Q7CiAgICAgdXNpbmcgUGFnZUlEID0gdWludDY0X3Q7
CiAgICAgdXNpbmcgRnJhbWVJRCA9IHVpbnQ2NF90OworICAgIHVzaW5nIFN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkID0gV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ7CisgICAgdXNpbmcg
U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duID0gV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duOwogCiAgICAgc3RhdGljIFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIGNvbnN0IFN0cmluZyYg
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBz
aG91bGRJbmNsdWRlTG9jYWxob3N0KQogICAgIHsKQEAgLTEwMCw3ICsxMDQsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVt
b3ZhbChib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0U2hv
dWxkU3VibWl0VGVsZW1ldHJ5KGJvb2wpOwogCi0gICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3Mo
Y29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIEZyYW1lSUQsIFBh
Z2VJRCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWROb3csIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWlu
JiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBQYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQ
cm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJik7CiAKICAgICB2b2lkIGFwcGxp
Y2F0aW9uV2lsbFRlcm1pbmF0ZSgpOwogCkBAIC0xMTQsMTIgKzExOCwxMSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvclJl
Z2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgSGFzaE1hcDxSZWdp
c3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1JlbW92ZT4mJiwgYm9vbCBzaG91bGROb3RpZnlQ
YWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21h
aW4+Jik+JiYpOwogICAgIHZvaWQgcmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYpOwotICAgIGJv
b2wgZ3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJh
bWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlEKTsKKyAgICBTdG9yYWdlQWNjZXNz
V2FzR3JhbnRlZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25z
dCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQpOwogICAgIHZvaWQg
aGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0
IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlE
PiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKTsKKyAg
ICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BG
cmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwogICAgIGJvb2wgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKGNvbnN0
IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBQYWdlSUQp
OwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBj
b25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpOwotICAgIHZvaWQgcmVxdWVz
dFN0b3JhZ2VBY2Nlc3NHcmFudGVkKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJh
bWVEb21haW4mLCBGcmFtZUlELCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4m
LCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIEZyYW1lSUQsIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duKT4mJik7CiAgICAgdm9pZCBzZXRMYXN0U2Vlbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYs
IFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRQcmV2
YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMTYyLDcg
KzE2NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdN
b2RlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKIAogICAgIHZvaWQgbG9nVGVzdGluZ0V2ZW50KGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQg
Y2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25z
dCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgY2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hh
bmRsZXIoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlv
bmFsPEZyYW1lSUQ+LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQpPiYmKTsKICAgICB2b2lkIHJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNhbGxVcGRhdGVQcmV2YWxlbnREb21h
aW5zVG9CbG9ja0Nvb2tpZXNGb3JIYW5kbGVyKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFp
bj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2FsbFJlbW92ZURv
bWFpbnNIYW5kbGVyKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZGM3NGE2MTNiOWQ5YzRjNDg5ZDY3MWUzMGFhOGE2NzM0
NjA0NTVmYi4uZTljOThmMmUyMjI3ZmUxYzUyNTE3NzBkMDYwZDJlZDJlM2NjZGU1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTU3LDYgKzU3LDcgQEAKICNpbmNsdWRlICJXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VS
ZXF1ZXN0Lmg+CkBAIC02ODAsMTIgKzY4MSwxOCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZQog
CiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1l
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBuZXR3b3JrUHJvY2VzcygpLmhhc1N0b3JhZ2VB
Y2Nlc3Moc2Vzc2lvbklELCBzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIGZyYW1lSUQs
IHBhZ2VJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmIChhdXRvIG5ldHdv
cmtTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7
CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Np
b24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MtPmhhc1N0b3JhZ2VBY2Nlc3Moc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWlu
LCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9CiB9
CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNj
ZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1
YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3
YXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2Fz
U2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG5ldHdvcmtQcm9jZXNzKCkucmVx
dWVzdFN0b3JhZ2VBY2Nlc3NHcmFudGVkKHNlc3Npb25JRCwgc3ViRnJhbWVEb21haW4sIHRvcEZy
YW1lRG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICBpZiAoYXV0byBuZXR3b3JrU2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgICAg
ICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhzdWJGcmFt
ZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgIH0KIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdl
QWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYgb3BlbmVyRG9tYWluKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGM2OWUzMjVlNjE4
ZTljZTg2YmE4YWYyYzMxMDM2ZWFlYWVjMTJhMGYuLjA5MDNhMTY0NTg5ZGExOTU0Y2U2M2ZjMzFi
ZWQyMGJlYjIxYWVkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTQ4LDYgKzQ4LDgg
QEAgY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsK
IGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitlbnVtIGNsYXNz
IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biA6IGJvb2w7CitlbnVtIGNsYXNzIFN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkIDogYm9vbDsKIHN0cnVjdCBTYW1lU2l0ZUluZm87CiAKIGVudW0gY2xh
c3MgSW5jbHVkZVNlY3VyZUNvb2tpZXMgOiBib29sOwpAQCAtMjIxLDcgKzIyMyw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBsb2dTdWJyZXNvdXJjZVJlZGlyZWN0KFBBTDo6U2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdGFyZ2V0RG9tYWluKTsKICAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVk
KFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKTsKICAgICB2b2lkIGhh
c1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBz
dWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdl
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcmVxdWVzdFN0
b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJG
cmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93bik+JiYpOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5l
cihQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDE2ZWQzNGFkOTg3ODkwNDE4MzcxYTM5Y2Fk
ZTY0ODZmMzcxZDZjZTMuLmZkODQ4ZTNhZDA0NmM4MGMzYWUzZjQ2ZDM5MDE1YTAyZjAwM2M5NTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNjQsNyAr
NjQsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lS
ZWNlaXZlciB7CiAgICAgTG9nU3VicmVzb3VyY2VSZWRpcmVjdChQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHNvdXJjZURvbWFpbiwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gdGFyZ2V0RG9tYWluKQogICAgIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBzdGF0aXN0
aWNzKQogICAgIEhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJ
RCkgLT4gKGJvb2wgaGFzU3RvcmFnZUFjY2VzcykgQXN5bmMKLSAgICBSZXF1ZXN0U3RvcmFnZUFj
Y2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFp
biwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKSAtPiAoYm9vbCBhY2Nlc3NHcmFu
dGVkKSBBc3luYworICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQpIC0+IChlbnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQgd2FzR3JhbnRlZCwgZW51bTpib29sIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNT
aG93biBwcm9tcHRXYXNTaG93bikgQXN5bmMKICAgICBSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVy
T3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG9wZW5lckRvbWFpbikKICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGE2MGIy
YzU1YmYxZTM0ODNiOWQzM2E1MzJmODgxYzYzYTgzZWFiYWYuLjBlNzE4MGRiMmJjZjQxMDkwMmQ0
NDljN2MyNjM4OGFkNWY0NmU4NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC05NTAsMTcgKzk1MCw2IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnNldExhc3RTZWVuKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0
cmFibGVEb21hCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpoYXNTdG9yYWdlQWNj
ZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURv
bWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGJvb2wgaGFzU3RvcmFn
ZUFjY2VzcyA9IGZhbHNlOwotICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBz
dG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICBoYXNTdG9yYWdlQWNjZXNzID0gbmV0
d29ya1N0b3JhZ2VTZXNzaW9uLT5oYXNTdG9yYWdlQWNjZXNzKHN1YkZyYW1lRG9tYWluLCB0b3BG
cmFtZURvbWFpbiwgZnJhbWVJRCwgcGFnZUlEKTsKLSAgICBlbHNlCi0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotCi0gICAgY29tcGxldGlvbkhhbmRsZXIoaGFzU3RvcmFnZUFjY2Vzcyk7
Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3Ry
aW5nPiBkb21haW5zKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogbmV0
d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKQEAgLTk3MSw2
NCArOTYwLDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJp
ZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGUKICAgICB9CiB9CiAKLXZvaWQgTmV0
d29ya1Byb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2
NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKLXsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAg
ICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmhhc1N0b3JhZ2VBY2Nlc3Moc3ViRnJhbWVEb21h
aW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFs
c2UpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgfQotfQotCi12b2lkIE5ldHdvcmtQcm9j
ZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3Qg
cGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMt
Pm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygp
KQotICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cmVxdWVzdFN0b3JhZ2VBY2Nl
c3Moc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELnZhbHVlKCksIHBhZ2VJ
RCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5ub3RSZXF1ZXN0QWNj
ZXNzKTsKLSAgICB9IGVsc2UgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoU3RvcmFnZUFjY2Vzc1N0YXR1czo6Q2Fubm90UmVxdWVzdEFj
Y2Vzcyk7Ci0gICAgfQotfQotCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXF1ZXN0U3RvcmFnZUFj
Y2Vzc0dyYW50ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURv
bWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmIChhdXRvKiBuZXR3
b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAg
aWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NHcmFudGVkKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFp
biwgZnJhbWVJRCwgcGFnZUlELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAgICB9IGVsc2Ug
ewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZmFsc2UpOwotICAgIH0KLX0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z3JhbnRTdG9yYWdl
QWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4s
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNlcldh
c1Byb21wdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQotewotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGFjY2VwdCBhbiBvcHRpb25hbCBm
cmFtZSBJRCBzaW5jZSB3ZSBjYWxsIGZyYW1lSUQudmFsdWUoKSB1bmNvbmRpdGlvbmFsbHkuCi0g
ICAgaWYgKCFmcmFtZUlEKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRo
aXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGlj
cygpKQotICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+Z3JhbnRTdG9yYWdlQWNj
ZXNzKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRC52YWx1ZSgpLCBwYWdl
SUQsIHVzZXJXYXNQcm9tcHRlZCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsKLSAgICB9Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0ZyYW1lTmF2
aWdhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiB0YXJnZXREb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHNvdXJjZURvbWFpbiwgYm9vbCBpc1JlZGlyZWN0LCBi
b29sIGlzTWFpbkZyYW1lKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMt
Pm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKQEAgLTEwNzcsMTUgKzEwMDgsNiBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpjbGVhclVzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFJlZ2lzdAogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVt
b3ZlQWxsU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBpZiAoYXV0byogbmV0
d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAg
bmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5yZW1vdmVBbGxTdG9yYWdlQWNjZXNzKCk7Ci0gICAgZWxz
ZQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcigp
OwotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVQcmV2YWxlbnREb21haW5zKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9t
YWlucykKIHsKICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNl
c3Npb24oc2Vzc2lvbklEKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAppbmRleCBkMDFiYzc3NTFiYzhhYWU2MzAzMDIyM2E0YjQ3ZWE4OTA4OWQ5OGRm
Li4yZDZlZmZjZjc1MDRkZTJhYWZiZDk2N2U5N2JkMTg3MGMzYmNmNGVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC03OSw2ICs3OSw4IEBA
IGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBTV1NlcnZlcjsKIGVudW0gY2xhc3MgSW5jbHVk
ZUh0dHBPbmx5Q29va2llcyA6IGJvb2w7CiBlbnVtIGNsYXNzIFN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5IDogdWludDhfdDsKK2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIDog
Ym9vbDsKK2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgOiBib29sOwogc3RydWN0
IENsaWVudE9yaWdpbjsKIHN0cnVjdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0czsKIHN0cnVjdCBT
ZWN1cml0eU9yaWdpbkRhdGE7CkBAIC0yMjUsMTYgKzIyNywxMCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFBy
dW5lRW50cmllc0Rvd25UbyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcHJ1bmVUYXJnZXRDb3Vu
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGhhZFVzZXJJbnRlcmFj
dGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFt
ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURv
bWFpbiYsIEZyYW1lSUQsIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiBkb21haW5zKT4mJik7Ci0gICAgdm9p
ZCBncmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN1YkZyYW1lRG9tYWlu
JiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBib29s
IHVzZXJXYXNQcm9tcHRlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAg
dm9pZCBoYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdWJGcmFtZURvbWFp
biYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBsb2dGcmFtZU5hdmlnYXRp
b24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgY29uc3QgVG9wRnJh
bWVEb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiwgYm9vbCBpc1JlZGlyZWN0LCBi
b29sIGlzTWFpbkZyYW1lKTsKICAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Np
b25JRCwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwotICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlbW92ZVByZXZhbGVudERvbWFpbnMo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mKTsKLSAgICB2
b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdWJGcmFtZURv
bWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJik7Ci0gICAgdm9p
ZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc0dyYW50ZWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN1YkZy
YW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBQYWdlSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgcmVzZXRDYWNoZU1heEFnZUNh
cEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6
OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNjaGVk
dWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQsIE9wdGlvbmFsPFdh
bGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA2Zjc2Mzc5YTc3ZTkx
M2Y1ZTU4YjY2ZGFkYWZlYTgwMmJmOWRkMzAwLi43M2ZkYjMzNWE0NmFiNjRkMmY2OTUzMjM4OWEz
MDdmMWE0NWU4YjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTk4LDE4ICs5OCwxMyBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0UHJldmFsZW50UmVz
b3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biByZXNvdXJjZURvbWFpbikgLT4gKCkgQXN5bmMKICAgICBTZXRQcmV2YWxlbnRSZXNvdXJjZUZv
ckRlYnVnTW9kZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIHJlc291cmNlRG9tYWluKSAtPiAoKSBBc3luYwogICAgIEhhZFVzZXJJbnRlcmFjdGlv
bihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJl
c291cmNlRG9tYWluKSAtPiAoYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24pIEFzeW5jCi0gICAgSGFz
U3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIC0+
IChib29sIGhhc1N0b3JhZ2VBY2Nlc3MpIEFzeW5jCi0gICAgSGFzU3RvcmFnZUFjY2VzcyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNl
RG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkgLT4gKGJvb2wgaGFzU3RvcmFn
ZUFjY2VzcykgQXN5bmMKICAgICBHZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpIC0+IChWZWN0b3I8U3RyaW5nPiBkb21haW5zKSBBc3luYwotICAgIEdy
YW50U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0
b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJ
RCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWQpIC0+IChib29sIGFjY2Vzc0dyYW50ZWQpIEFzeW5jCiAg
ICAgSXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVkaXJlY3RlZEZyb21Eb21haW4sIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIHJlZGlyZWN0ZWRUb0RvbWFpbikgLT4gKGJvb2wgaXNSZWRpcmVj
dGluZ1RvKSBBc3luYwogICAgIElzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWlu
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbikgLT4gKGJvb2wgaXNT
dWJmcmFtZVVuZGVyKSBBc3luYwogICAgIElzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YnJl
c291cmNlRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbikg
LT4gKGJvb2wgaXNTdWJyZXNvdXJjZVVuZGVyKSBBc3luYwogICAgIExvZ0ZyYW1lTmF2aWdhdGlv
bihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRh
cmdldERvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHNvdXJjZURvbWFpbiwgYm9vbCBpc1JlZGlyZWN0LCBi
b29sIGlzTWFpbkZyYW1lKQogICAgIExvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluKSAtPiAo
KSBBc3luYwotICAgIFJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKSAtPiAoKSBBc3luYwogICAgIFJlbW92ZVByZXZhbGVudERvbWFpbnMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNX
aXRoSW50ZXJhY3Rpb24pCi0gICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZURvbWFpbiwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIC0+IChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTdG9y
YWdlQWNjZXNzU3RhdHVzIHN0b3JhZ2VBY2Nlc3NTdGF0dXMpIEFzeW5jCiAgICAgUmVzZXRQYXJh
bWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5
bmMKICAgICBTY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgT3B0aW9uYWw8V2FsbFRpbWU+IG1vZGlmaWVkU2luY2UsIGVudW06Ym9vbCBX
ZWJLaXQ6OlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyBzaG91bGRHcmFuZGZhdGhlcikgLT4g
KCkgQXN5bmMKICAgICBTY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CmluZGV4IDhlNTJhYzAzYzI4MDUyMThiOWFhY2FlYzhiMzY2MDkzNzllMTY1ZGYuLmEz
NzczYjE0MTJmZTM2NWE0YTEyN2U4NmFjYTljYTY2Y2U2ZjIwN2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNDU2LDYgKzQ1Niw4IEBAIGRlZiBoZWFkZXJz
X2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRhdGUn
OiBbJzxXZWJDb3JlL0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Lmg+J10sCiAgICAgICAg
ICdXZWJDb3JlOjpTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQnOiBbJzxXZWJDb3JlL1NlcnZpY2VX
b3JrZXJUeXBlcy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6U2hvdWxkU2FtcGxlJzogWyc8V2Vi
Q29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oPiddLAorICAgICAgICAnV2ViQ29yZTo6U3Rv
cmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duJzogWyc8V2ViQ29yZS9Eb2N1bWVudFN0b3JhZ2VBY2Nl
c3MuaD4nXSwKKyAgICAgICAgJ1dlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkJzogWyc8
V2ViQ29yZS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlN1
cHBvcnRlZFBsdWdpbklkZW50aWZpZXInOiBbJzxXZWJDb3JlL1BsdWdpbkRhdGEuaD4nXSwKICAg
ICAgICAgJ1dlYkNvcmU6OlRleHRDaGVja2luZ1JlcXVlc3REYXRhJzogWyc8V2ViQ29yZS9UZXh0
Q2hlY2tpbmcuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdCc6IFsn
PFdlYkNvcmUvVGV4dENoZWNrZXJDbGllbnQuaD4nXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGMzNDRk
MTYzODI3MzViMGI2ODNjNjk2ZjliNjYyNjcxMDcxZDg0NjQuLmFmODU5YWVjMDM2MmU5MWY5MzBi
Mjg2YjhmNDJmYzIwZmE4ODMwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtNzI2LDM2ICs3MjYsNiBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEdyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBSZWdpcwogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3M6OlNldEdyYW5kZmF0aGVyZWQoc2Vzc2lvbklELCByZXNvdXJjZURv
bWFpbiwgaXNHcmFuZGZhdGhlcmVkKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQog
Ci12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURv
bWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7Ci0gICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okhhc1N0b3Jh
Z2VBY2Nlc3NGb3JGcmFtZShzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCB0b3BGcmFtZURvbWFp
biwgZnJhbWVJRCwgcGFnZUlEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotfQotCi12
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Omhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IAotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okhhc1N0
b3JhZ2VBY2Nlc3Moc2Vzc2lvbklELCByZXNvdXJjZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIGZy
YW1lSUQsIHBhZ2VJRCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLX0KLQotdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NTdGF0dXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmICghY2FuU2VuZE1lc3Nh
Z2UoKSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNzU3RhdHVzOjpD
YW5ub3RSZXF1ZXN0QWNjZXNzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlcXVlc3RTdG9yYWdlQWNj
ZXNzKHNlc3Npb25JRCwgcmVzb3VyY2VEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELCBw
YWdlSUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19Ci0KIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWlu
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZVByb3h5
KiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CkBAIC03NjcsMzIgKzcz
Nyw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25m
aXJtKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QKICAgICBwYWdlLT5yZXF1ZXN0U3RvcmFnZUFj
Y2Vzc0NvbmZpcm0oc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
Z3JhbnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9w
RnJhbWVEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IGJvb2wgdXNlcldhc1Byb21wdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgewotICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBhY2NlcHQgYW4gb3B0aW9uYWwgZnJhbWUgSUQgc2lu
Y2Ugd2UgY2FsbCBmcmFtZUlELnZhbHVlKCkgdW5jb25kaXRpb25hbGx5LgotICAgIGlmICghZnJh
bWVJRCkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpHcmFudFN0b3JhZ2VBY2Nlc3Moc2Vzc2lvbklELCByZXNvdXJjZURvbWFpbiwgdG9wRnJh
bWVEb21haW4sIGZyYW1lSUQudmFsdWUoKSwgcGFnZUlELCB1c2VyV2FzUHJvbXB0ZWQpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
cmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBpZiAoIWNhblNl
bmRNZXNzYWdlKCkpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3M6OlJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3Moc2Vzc2lvbklEKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldEFsbFN0b3Jh
Z2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8U3RyaW5nPiBkb21haW5zKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggZmNiMmI3OGI0NWRj
NTcyYzM3ODgzZThlNmE4MGZiYmY4ZGIxYTZjMy4uYWMzZGQ4MzI1OTU1YThiNmZhMTQ4MDgwOGIz
MGZlM2JmYzYxM2NkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTQ5LDYgKzQ5LDggQEAgY2xhc3MgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CiBlbnVtIGNsYXNzIFNob3VsZFNhbXBsZSA6IGJvb2w7CitlbnVtIGNsYXNzIFN0
b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biA6IGJvb2w7CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkIDogYm9vbDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogc3RydWN0IFNlY3Vy
aXR5T3JpZ2luRGF0YTsKIH0KQEAgLTEyNSwxNCArMTI3LDkgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFByZXZhbGVu
dFJlc291cmNlRm9yRGVidWdNb2RlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRWZXJ5UHJl
dmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3NG
b3JGcmFtZShQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBU
b3BGcmFtZURvbWFpbiYsIEZyYW1lSUQsIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CiAgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiBkb21haW5zKT4mJik7
Ci0gICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwg
UGFnZUlELCBib29sIHVzZXJXYXNQcm9tcHRlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7Ci0gICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJ
RD4sIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBy
ZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3ViRnJhbWVEb21haW4m
LCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpOwogICAgIHZvaWQgcmVx
dWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKFBhZ2VJRCwgRnJhbWVJRCwgY29uc3QgU3ViRnJhbWVE
b21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOwogICAgIHZvaWQgcmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFBBTDo6U2Vz
c2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgcmVtb3ZlQWxs
U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNz
aW9uSUQsIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFM
OjpTZXNzaW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFu
ZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBzY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCAwMDY0MWExMzlmNTNiYjQ2
MjQ5Mzk2ODQzNTY4ZDA0YTMzYzIxNjlhLi41NmUxOGFhYTQ1YWJhYzdjNDkwM2I2Yzg5NDdjN2U4
ZjA3ZTliYjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTY4Myw1NiArMTY4Myw2IEBAIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXModWludDY0X3QgcGFn
ZUlELCBDb21wbGV0aW9uSGFuCiAgICAgbmV0d29ya1Byb2Nlc3MuZ2V0QWxsU3RvcmFnZUFjY2Vz
c0VudHJpZXMobV9zZXNzaW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAot
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN0cmluZyYgc3Vi
RnJhbWVIb3N0LCBjb25zdCBTdHJpbmcmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQotewotICAgIGlmICghcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSkg
ewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBhdXRvKiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJ
RCk7Ci0gICAgaWYgKCF3ZWJQYWdlKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNl
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdXRvIG5ldHdvcmtQcm9jZXNz
ID0gd2ViUGFnZS0+cHJvY2VzcygpLnByb2Nlc3NQb29sKCkubmV0d29ya1Byb2Nlc3MoKSkKLSAg
ICAgICAgbmV0d29ya1Byb2Nlc3MtPmhhc1N0b3JhZ2VBY2Nlc3MobV9zZXNzaW9uSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChzdWJGcmFtZUhv
c3QpLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qo
dG9wRnJhbWVIb3N0KSwgZnJhbWVJRCwgcGFnZUlELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7Ci19Ci0KLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29u
c3QgU3RyaW5nJiBzdWJGcmFtZUhvc3QsIGNvbnN0IFN0cmluZyYgdG9wRnJhbWVIb3N0LCB1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Rv
cmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKCFyZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFN0b3JhZ2VBY2Nlc3NTdGF0dXM6OkNhbm5vdFJlcXVlc3RBY2Nlc3MpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIAotICAgIGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6Ondl
YlBhZ2UocGFnZUlEKTsKLSAgICBpZiAoIXdlYlBhZ2UpIHsKLSAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoU3RvcmFnZUFjY2Vzc1N0YXR1czo6Q2Fubm90UmVxdWVzdEFjY2Vzcyk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXV0byBuZXR3b3JrUHJvY2VzcyA9IHdlYlBhZ2Ut
PnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgIG5ldHdv
cmtQcm9jZXNzLT5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhtX3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHN1YkZyYW1lSG9zdCksIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdCh0b3BGcmFt
ZUhvc3QpLCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLX0K
LQotdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3Vi
RnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IHBhZ2VJRCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKCFyZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZCgpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBhdXRvKiB3ZWJQYWdlID0gV2ViUHJvY2Vz
c1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7Ci0gICAgaWYgKCF3ZWJQYWdlKSB7Ci0gICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChhdXRvIG5ldHdvcmtQcm9jZXNzID0gd2ViUGFnZS0+cHJvY2VzcygpLnByb2Nlc3NQb29sKCku
bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgbmV0d29ya1Byb2Nlc3MtPmdyYW50U3RvcmFnZUFj
Y2VzcyhtX3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENy
ZWF0ZUZyb21Ib3N0KHN1YkZyYW1lSG9zdCksIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1
bmNoZWNrZWRDcmVhdGVGcm9tSG9zdCh0b3BGcmFtZUhvc3QpLCBmcmFtZUlELCBwYWdlSUQsIHVz
ZXJXYXNQcm9tcHRlZCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotfQogCiB2b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyBzZWNv
bmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmgKaW5kZXggYzI4YjczMWI1ODUzYWU3MGQ0NTJlMDM2NTUwYWM2NWMyOTMwNDU2Yi4u
NzdmMDQ4YTQ1NGYzNGU1ZTA5MTZmYTE5MGFkMTEyOTMwNjlhZmM2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApA
QCAtMTY5LDkgKzE2OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNob3VsZENsYXNzaWZ5UmVz
b3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKFdURjo6RnVu
Y3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykgeyBtX3N0YXRpc3RpY3NUZXN0
aW5nQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsgfQogICAgIHZvaWQgc2V0VmVyeVByZXZh
bGVudFJlc291cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0g
ICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN0cmluZyYgc3ViRnJhbWVIb3N0LCBjb25z
dCBTdHJpbmcmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9y
YWdlQWNjZXNzKGNvbnN0IFN0cmluZyYgc3ViRnJhbWVIb3N0LCBjb25zdCBTdHJpbmcmIHRvcEZy
YW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKTsKLSAgICB2b2lkIGdyYW50U3RvcmFn
ZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHVzZXJXYXNQcm9tcHRlZCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBzZXRTdWJmcmFtZVVuZGVy
VG9wRnJhbWVEb21haW4oY29uc3QgVVJMJiBzdWJmcmFtZSwgY29uc3QgVVJMJiB0b3BGcmFtZSk7
CiAgICAgdm9pZCBzZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhj
b25zdCBVUkwmIGZyb21VUkwsIGNvbnN0IFVSTCYgdG9VUkwsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCByZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9u
Rm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAppbmRleCA5YmFhODRkMzhhZTA4MDExMThhMTJiODFlMjA0ZWEyZThmMGU5ZWY0Li42YmNh
Mjc1MzVmNDM2OGI4ZWQ4YjBlODM1YTk3ZmJmMWZlYjM4ZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcApAQCAtNjIsNiArNjIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YUxpc3RTdWdnZXN0
aW9uUGlja2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVu
dFN0b3JhZ2VBY2Nlc3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVDaG9vc2VyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9GaWxlSWNvbkxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUu
aD4KQEAgLTc2LDYgKzc3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ljb24uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2NyaXB0Q29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgpAQCAtMTMxMSwxNCArMTMx
MywxNCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZGlkSW52YWxpZGF0ZURvY3VtZW50TWFya2Vy
UmVjdHMoKQogfQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLXZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpoYXNTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwg
U3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50
OjpoYXNTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFJl
Z2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewotICAgIG1fcGFnZS5oYXNTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVIb3N0KSwgV1RG
TW92ZSh0b3BGcmFtZUhvc3QpLCBmcmFtZUlELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgbV9w
YWdlLmhhc1N0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9w
RnJhbWVEb21haW4pLCBmcmFtZUlELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAK
LXZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJG
cmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit2b2lkIFdlYkNo
cm9tZUNsaWVudDo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJG
cmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7Ci0gICAgbV9wYWdlLnJlcXVlc3RTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVI
b3N0KSwgV1RGTW92ZSh0b3BGcmFtZUhvc3QpLCBmcmFtZUlELCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CisgICAgbV9wYWdlLnJlcXVlc3RTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVEb21haW4p
LCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA3MDViMjVlOWZjOTEy
YTYzYjViNDU3N2VmMmI4ZDVlMDcxN2EzNTQwLi43OTI1MzMxZWM4ZTY3MGUxMDVmZjRkMmU2ZTQ3
ODkwYmU5NzFkNmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yOCw2ICsyOCwxMiBAQAogCiAj
aW5jbHVkZSA8V2ViQ29yZS9DaHJvbWVDbGllbnQuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgUmVnaXN0cmFibGVEb21haW47CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NQcm9tcHRX
YXNTaG93biA6IGJvb2w7CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIDogYm9v
bDsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkZyYW1lOwpAQCAtMzYzLDgg
KzM2OSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRJbnZhbGlkYXRlRG9jdW1lbnRNYXJrZXJS
ZWN0cygpIGZpbmFsOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAg
ICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0
b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21w
bGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJikgZmluYWw7Ci0gICAgdm9pZCByZXF1ZXN0U3Rv
cmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwg
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQgKGJvb2wpPiYmKSBmaW5hbDsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOworICAgIHZv
aWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBzdWJG
cmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwg
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VB
Y2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpIGZpbmFsOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREVW
SUNFX09SSUVOVEFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAppbmRleCA0MzcwMjIyYWU4ZDM4Nzc2Nzk5MzA3Zjg5MDM5MTY3MzVjZjgwYTgwLi41
OGFjMzhiZDkzN2I2MjczY2YzMWU4ZTNjY2Y5YTI1NWIwODU4N2M5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTQ3LDYgKzE0Nyw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudEZyYWdtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9E
b2N1bWVudExvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0RyYWdDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnRGF0
YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdGluZy5oPgpAQCAtNjQ0MCwxNCArNjQ0MSwxNCBA
QCB2b2lkIFdlYlBhZ2U6OmZyYW1lQmVjYW1lUmVtb3RlKHVpbnQ2NF90IGZyYW1lSUQsIEdsb2Jh
bEZyYW1lSWRlbnRpZmllciYmIHJlbW90ZQogfQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKLXZvaWQgV2ViUGFnZTo6aGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJG
cmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFn
ZTo6aGFzU3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBS
ZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpIYXNTdG9yYWdlQWNjZXNzKHNlc3Npb25JRCgpLCBSZWdpc3RyYWJsZURv
bWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qoc3ViRnJhbWVIb3N0KSwgUmVnaXN0cmFibGVE
b21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHRvcEZyYW1lSG9zdCksIGZyYW1lSUQsIG1f
cGFnZUlEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpIYXNTdG9yYWdlQWNjZXNzKHNlc3Npb25JRCgpLCBXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwg
V1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIG1fcGFnZUlEKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQotICAgIAotdm9pZCBXZWJQYWdlOjpyZXF1ZXN0U3RvcmFnZUFj
Y2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0
X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKwordm9pZCBXZWJQYWdlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURv
bWFpbiYmIHN1YkZyYW1lRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWlu
LCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZXF1ZXN0U3Rv
cmFnZUFjY2VzcyhzZXNzaW9uSUQoKSwgUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0
ZUZyb21Ib3N0KHN1YkZyYW1lSG9zdCksIFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVh
dGVGcm9tSG9zdCh0b3BGcmFtZUhvc3QpLCBmcmFtZUlELCBtX3BhZ2VJRCksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVxdWVzdFN0b3JhZ2VBY2Nl
c3Moc2Vzc2lvbklEKCksIFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1l
RG9tYWluKSwgZnJhbWVJRCwgbV9wYWdlSUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CmluZGV4IGQ5ZDgwNGNiZDYzNzk5MTA1MmM4YzZkMmMxY2UyMjllNjdkMzZhOTguLmM5MzkwM2Y3
YmIzMWY0YzkzOTA0NDVjODY4MDZlZWQ5Y2ViOTNjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE3Nyw2ICsxNzcsOCBAQCBlbnVtIFN5bnRoZXRp
Y0NsaWNrVHlwZSA6IGludDhfdDsKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6
IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIERyYWdIYW5kbGluZ01ldGhvZCA6IHVpbnQ4X3Q7CiBlbnVt
IGNsYXNzIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCA6IGJvb2w7CitlbnVtIGNsYXNzIFN0
b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biA6IGJvb2w7CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkIDogYm9vbDsKIGVudW0gY2xhc3MgVGV4dEluZGljYXRvclByZXNlbnRhdGlv
blRyYW5zaXRpb24gOiB1aW50OF90OwogZW51bSBjbGFzcyBXcml0aW5nRGlyZWN0aW9uIDogdWlu
dDhfdDsKIApAQCAtMTExOCw4ICsxMTIwLDggQEAgcHVibGljOgogICAgIHZvaWQgZmx1c2hQZW5k
aW5nRWRpdG9yU3RhdGVVcGRhdGUoKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwg
U3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNz
KFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBm
cmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKTsKKyAgICB2
b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFt
ZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWlu
dDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9p
ZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZy
YW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1
aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYm
KTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxNjQ4
YzZiMDI1OWFmN2M0ZDJhMWI3NmNmNzUwOGRhODA0NDc4MTM3Li5iZTE5OTUzMGNmNDc4OGVkZjYz
ZDJkZDM5MTIxMTA5YTE0YTM0MjRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTktMDUtMDYg
IEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcmFnZSBB
Y2Nlc3MgQVBJOiBNYWtlIHR3byBjaGFuZ2VzIHJlcXVlc3RlZCBieSBkZXZlbG9wZXJzIGFuZCBj
b21wbGV0ZSByZWZhY3RvcmluZyBhbmQgY2xlYW51cAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3NjQ4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81
MDUyNzQ5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGUgY2hhbmdlZCB0ZXN0IGNhc2VzIGhhdmUgaGFkIGNhbGxzIHRvIFdlYkNvcmU6OkludGVy
bmFsczo6c2V0VXNlckdyYW50c1N0b3JhZ2VBY2Nlc3MoKSByZW1vdmVkCisgICAgICAgIHNpbmNl
IGl0IHdhcyBkZWFkIGNvZGUuCisKKyAgICAgICAgT25lIG9mIHRoZSBuZXcgdGVzdHMsIGRlbnkt
d2l0aC1wcm9tcHQtZG9lcy1ub3QtcHJlc2VydmUtZ2VzdHVyZS5odG1sLCBpcyBtYXJrZWQgWyBT
a2lwIF0gZm9yIG5vdyBzaW5jZQorICAgICAgICB3ZSBsYWNrIHRoZSBhYmlsaXR5IHRvIGNsaWNr
ICJEb24ndCBhbGxvdyIgaW4gdGhlIHByb21wdC4gSSB3YW50ZWQgdG8gaW5jbHVkZSB0aGUgdGVz
dCBhbnl3YXkgc28gdGhhdAorICAgICAgICB3ZSBoYXZlIGl0LiBJIGhhdmUgZG9uZSBhIG1hbnVh
bCB0ZXN0IHRvIG1ha2Ugc3VyZSB0aGUgY29kZSBkb2VzIHRoZSByaWdodCB0aGluZyBmb3IgdGhp
cyBjYXNlLgorCisgICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnktd2l0aC1w
cm9tcHQtZG9lcy1ub3QtcHJlc2VydmUtZ2VzdHVyZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9kZW55LXdpdGgtcHJvbXB0LWRvZXMtbm90
LXByZXNlcnZlLWdlc3R1cmUuaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LWFjY2Vzcy1jcm9zcy1vcmlnaW4tbm9u
LXNhbmRib3hlZC1pZnJhbWUtcG9wLXdpbmRvdy5odG1sLgorICAgICAgICAqIGh0dHAvdGVzdHMv
c3RvcmFnZUFjY2Vzcy9kZW55LXdpdGhvdXQtcHJvbXB0LXByZXNlcnZlcy1nZXN0dXJlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnkt
d2l0aG91dC1wcm9tcHQtcHJlc2VydmVzLWdlc3R1cmUuaHRtbDogQ29waWVkIGZyb20gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LWFjY2Vzcy1j
cm9zcy1vcmlnaW4tbm9uLXNhbmRib3hlZC1pZnJhbWUtcG9wLXdpbmRvdy5odG1sLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC13aXRoLXByb21wdC1wcmVzZXJ2ZXMt
Z2VzdHVyZS1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtYWNjZXNzLWNyb3NzLW9yaWdpbi1ub24t
c2FuZGJveGVkLWlmcmFtZS1wb3Atd2luZG93LWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZ3JhbnQtd2l0aC1wcm9tcHQtcHJlc2VydmVzLWdlc3R1cmUu
aHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9y
ZXF1ZXN0LWFuZC1ncmFudC1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLW5vbi1zYW5kYm94ZWQtaWZyYW1l
LXBvcC13aW5kb3cuaHRtbC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvaGFz
LXN0b3JhZ2UtYWNjZXNzLXRydWUtaWYtZmVhdHVyZS1vZmYtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvaGFzLXN0b3JhZ2UtYWNjZXNzLXRy
dWUtaWYtZmVhdHVyZS1vZmYuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zdG9y
YWdlQWNjZXNzL3Jlc291cmNlcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLWFuZC1pbW1lZGlhdGVs
eS1wb3N0bWVzc2FnZS1pZnJhbWUuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VB
Y2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtaWZyYW1lLWFuZC1wb3Atd2lu
ZG93Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9y
ZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLWlmcmFtZS5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMv
c3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy13aXRob3V0LXVz
ZXItZ2VzdHVyZS1pZnJhbWUuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nl
c3MvcmVzb3VyY2VzL3NlbGYtbmF2aWdhdGluZy1mcmFtZS1hZnRlci1ncmFudGVkLWFjY2Vzcy5o
dG1sOgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAg
ICAgICAgIEFkZGVkIGV4cGVjdGF0aW9ucyBmb3IgdGhlIG5ldyB0ZXN0cy4KKwogMjAxOS0wNS0w
NiAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgSGl0
cG9pbnQgZm9yIGxpbmsgd2hpY2ggc3BhbnMgdHdvIGxpbmVzIGluIHdlYiBjb250ZW50IGlzIGlu
Y29ycmVjdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNz
L2Rlbnktd2l0aC1wcm9tcHQtZG9lcy1ub3QtcHJlc2VydmUtZ2VzdHVyZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZGVueS13aXRoLXByb21wdC1k
b2VzLW5vdC1wcmVzZXJ2ZS1nZXN0dXJlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTk3OTc1
Njc3OTU5ZTJlMTNlZDc0NDQ5YzRhYWZmNmYxYjAwMzgyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnktd2l0aC1wcm9tcHQtZG9lcy1u
b3QtcHJlc2VydmUtZ2VzdHVyZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGVzdHMg
dGhhdCBhIGNyb3NzLW9yaWdpbiBpZnJhbWUgY2FuIG5vdCBvcGVuIGEgd2luZG93IGlmIHN0b3Jh
Z2UgYWNjZXNzIGlzIGV4cGxpY2l0bHkgZGVuaWVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBXaW5kb3cgd2FzIHN1Y2Nlc3NmdWxseSBvcGVuZWQgd2l0aCB1c2VyIGlu
dGVyYWN0aW9uIHNpbmNlIHRoZSB1c2VyIHdhcyBuZXZlciBjb25zdWx0ZWQvcHJvbXB0ZWQuCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCitTb21lIHRlc3RzIGZhaWxlZC4KKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VB
Y2Nlc3MvZGVueS13aXRoLXByb21wdC1kb2VzLW5vdC1wcmVzZXJ2ZS1nZXN0dXJlLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZGVueS13aXRoLXByb21wdC1kb2Vz
LW5vdC1wcmVzZXJ2ZS1nZXN0dXJlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTk3YTIwZDlmODI0MWZjODYz
NGFiMWY4MGUzYTNiM2ZhMGEwMTI2YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9kZW55LXdpdGgtcHJvbXB0LWRvZXMtbm90LXByZXNlcnZl
LWdlc3R1cmUuaHRtbApAQCAtMCwwICsxLDc0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL3VpLWhlbHBlci5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jl
c291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgICAgICBkZXNjcmlw
dGlvbigiVGVzdHMgdGhhdCBhIGNyb3NzLW9yaWdpbiBpZnJhbWUgY2FuIG5vdCBvcGVuIGEgd2lu
ZG93IGlmIHN0b3JhZ2UgYWNjZXNzIGlzIGV4cGxpY2l0bHkgZGVuaWVkLiIpOworICAgICAgICBq
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICBjb25zdCBob3N0VW5kZXJUZXN0ID0gImxv
Y2FsaG9zdDo4MDAwIjsKKyAgICAgICAgY29uc3Qgc3RhdGlzdGljc1VybCA9ICJodHRwOi8vIiAr
IGhvc3RVbmRlclRlc3QgKyAiL3RlbXAiOworCisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCJtZXNzYWdlIiwgcmVjZWl2ZU1lc3NhZ2UsIGZhbHNlKTsKKworICAgICAgICBmdW5jdGlv
biByZWNlaXZlTWVzc2FnZShldmVudCkgeworICAgICAgICAgICAgaWYgKGV2ZW50Lm9yaWdpbiA9
PT0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQu
ZGF0YS5pbmRleE9mKCJQQVNTICIpICE9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZChldmVudC5kYXRhLnJlcGxhY2UoIlBBU1MgIiwgIiIpKTsKKyAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJG
QUlMICIsICIiKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJSZWNlaXZlZCBhIG1lc3NhZ2UgZnJvbSBhbiB1bmV4cGVjdGVkIG9yaWdpbjogIiArIGV2
ZW50Lm9yaWdpbik7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hK
U1Rlc3QpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gYWN0aXZhdGVFbGVtZW50KGVs
ZW1lbnRJZCkgeworICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZChlbGVtZW50SWQpOworICAgICAgICAgICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNl
dExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciBjZW50ZXJZ
ID0gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAgICAg
ICAgICBVSUhlbHBlci5hY3RpdmF0ZUF0KGNlbnRlclgsIGNlbnRlclkpLnRoZW4oCisgICAgICAg
ICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKQorICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigi
ZXNjYXBlIik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiTm8gZXZlbnRTZW5kZXIuIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlByb21pc2UgcmVqZWN0ZWQuIik7
CisgICAgICAgICAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVz
dCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRy
dWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3Blbldp
bmRvd3MoZmFsc2UpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0UG9wdXBCbG9ja2lu
Z0VuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNz
UHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCwgdHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNv
dXJjZShzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
Ikhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9u
KHN0YXRpc3RpY3NVcmwsIHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihzdGF0
aXN0aWNzVXJsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0
IGRpZCBub3QgZ2V0IGxvZ2dlZCBmb3IgdXNlciBpbnRlcmFjdGlvbi4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNvb2tpZUJsb2NraW5nKGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpZnJhbWVFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWZyYW1lRWxlbWVudC5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWN0aXZhdGVFbGVtZW50KCJUaGVJZnJhbWVUaGF0UmVxdWVz
dHNTdG9yYWdlQWNjZXNzIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50LmlkID0gIlRoZUlmcmFtZVRoYXRS
ZXF1ZXN0c1N0b3JhZ2VBY2Nlc3MiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmcmFt
ZUVsZW1lbnQuc3JjID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zdG9yYWdlQWNjZXNzL3Jlc291
cmNlcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLWlmcmFtZS1hbmQtcG9wLXdpbmRvdy5odG1sI3Vz
ZXJTaG91bGROb3RHcmFudEFjY2Vzcyx1c2VyU2hvdWxkQmVDb25zdWx0ZWQscG9saWN5U2hvdWxk
Tm90R3JhbnRBY2Nlc3MsaXNOb3RTYW1lT3JpZ2luSWZyYW1lIjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZUVsZW1lbnQpOworICAg
ICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzwvYm9keT4KKzwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3N0b3JhZ2VBY2Nlc3MvZGVueS13aXRob3V0LXByb21wdC1wcmVzZXJ2ZXMtZ2VzdHVyZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZGVueS13
aXRob3V0LXByb21wdC1wcmVzZXJ2ZXMtZ2VzdHVyZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDRhZmRlMzRkNzQyNjNjYzUyZWJmY2Q2NDM3MTE2MTYwMWY2MzIxMAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9kZW55LXdpdGhvdXQtcHJv
bXB0LXByZXNlcnZlcy1nZXN0dXJlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0
cyB0aGF0IGEgY3Jvc3Mtb3JpZ2luIGlmcmFtZSBjYW4gb3BlbiBhIHdpbmRvdyBpZiBzdG9yYWdl
IGFjY2VzcyBpcyBkZW5pZWQgd2l0aG91dCBwcm9tcHQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIFdpbmRvdyB3YXMgc3VjY2Vzc2Z1bGx5IG9wZW5lZCB3aXRoIHVzZXIg
aW50ZXJhY3Rpb24gc2luY2UgdGhlIHVzZXIgd2FzIG5ldmVyIGNvbnN1bHRlZC9wcm9tcHRlZC4K
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZGVueS13aXRob3V0
LXByb21wdC1wcmVzZXJ2ZXMtZ2VzdHVyZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
dG9yYWdlQWNjZXNzL2Rlbnktd2l0aG91dC1wcm9tcHQtcHJlc2VydmVzLWdlc3R1cmUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iMWZjNGQ4YmRlYjYyNjBhYWU5YWVjMGEyNDZiZWE1ZjIxNmEwMTZjCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnkt
d2l0aG91dC1wcm9tcHQtcHJlc2VydmVzLWdlc3R1cmUuaHRtbApAQCAtMCwwICsxLDc0IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0
LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRl
c3QtcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0PgorICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBhIGNyb3NzLW9yaWdpbiBp
ZnJhbWUgY2FuIG9wZW4gYSB3aW5kb3cgaWYgc3RvcmFnZSBhY2Nlc3MgaXMgZGVuaWVkIHdpdGhv
dXQgcHJvbXB0LiIpOworICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICBj
b25zdCBob3N0VW5kZXJUZXN0ID0gImxvY2FsaG9zdDo4MDAwIjsKKyAgICAgICAgY29uc3Qgc3Rh
dGlzdGljc1VybCA9ICJodHRwOi8vIiArIGhvc3RVbmRlclRlc3QgKyAiL3RlbXAiOworCisgICAg
ICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjZWl2ZU1lc3NhZ2UsIGZh
bHNlKTsKKworICAgICAgICBmdW5jdGlvbiByZWNlaXZlTWVzc2FnZShldmVudCkgeworICAgICAg
ICAgICAgaWYgKGV2ZW50Lm9yaWdpbiA9PT0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5pbmRleE9mKCJQQVNTICIpICE9PSAtMSkKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZChldmVudC5kYXRhLnJlcGxhY2UoIlBBU1MgIiwg
IiIpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJGQUlMICIsICIiKSk7CisgICAgICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJSZWNlaXZlZCBhIG1lc3NhZ2UgZnJvbSBhbiB1
bmV4cGVjdGVkIG9yaWdpbjogIiArIGV2ZW50Lm9yaWdpbik7CisgICAgICAgICAgICBzZXRFbmFi
bGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJZCkgeworICAgICAgICAgICAgdmFyIGVsZW1l
bnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpOworICAgICAgICAgICAgdmFy
IGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsK
KyAgICAgICAgICAgIHZhciBjZW50ZXJZID0gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9m
ZnNldEhlaWdodCAvIDI7CisgICAgICAgICAgICBVSUhlbHBlci5hY3RpdmF0ZUF0KGNlbnRlclgs
IGNlbnRlclkpLnRoZW4oCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKQorICAgICAgICAgICAgICAgICAgICAg
ICAgZXZlbnRTZW5kZXIua2V5RG93bigiZXNjYXBlIik7CisgICAgICAgICAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTm8gZXZlbnRTZW5kZXIu
Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5p
c2hKU1Rlc3QpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoIlByb21pc2UgcmVqZWN0ZWQuIik7CisgICAgICAgICAgICAgICAgICAgIHNldEVuYWJsZUZl
YXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAg
ICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3MoZmFsc2UpOworICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIuc2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCwg
dHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5p
c1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVu
dCByZXNvdXJjZS4iKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0
aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKHN0YXRpc3RpY3NVcmwsIGZhbHNlLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hh
c0hhZFVzZXJJbnRlcmFjdGlvbihzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBnZXQgbG9nZ2VkIGZvciB1c2VyIGludGVyYWN0
aW9uLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzVXBk
YXRlQ29va2llQmxvY2tpbmcoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGV0IGlmcmFtZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50Lm9ubG9hZCA9IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmF0ZUVsZW1lbnQo
IlRoZUlmcmFtZVRoYXRSZXF1ZXN0c1N0b3JhZ2VBY2Nlc3MiKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQu
aWQgPSAiVGhlSWZyYW1lVGhhdFJlcXVlc3RzU3RvcmFnZUFjY2VzcyI7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5zcmMgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAw
L3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtaWZyYW1lLWFu
ZC1wb3Atd2luZG93Lmh0bWwjdXNlclNob3VsZE5vdEdyYW50QWNjZXNzLHVzZXJTaG91bGROb3RC
ZUNvbnN1bHRlZCxwb2xpY3lTaG91bGROb3RHcmFudEFjY2Vzcyxpc05vdFNhbWVPcmlnaW5JZnJh
bWUiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoaWZyYW1lRWxlbWVudCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCki
PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC13aXRoLXByb21w
dC1wcmVzZXJ2ZXMtZ2VzdHVyZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3N0b3JhZ2VBY2Nlc3MvZ3JhbnQtd2l0aC1wcm9tcHQtcHJlc2VydmVzLWdlc3R1cmUtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQ3ZWM0Y2Y3Zjc4NDFkNTdjNjhkZGI1ZmE2NmNiNTYzNGIzMWRh
M2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nl
c3MvZ3JhbnQtd2l0aC1wcm9tcHQtcHJlc2VydmVzLWdlc3R1cmUtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTAgQEAKK1Rlc3RzIHRoYXQgY3Jvc3Mtb3JpZ2luIGlmcmFtZSBjYW4gZGlzcGxheSBh
IHdpbmRvdyBpZiBzdG9yYWdlIGFjY2VzcyBpcyBncmFudGVkLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBXaW5kb3cgd2FzIHN1Y2Nlc3NmdWxseSBvcGVuZWQgd2l0aCB1
c2VyIGludGVyYWN0aW9uLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFj
Y2Vzcy9ncmFudC13aXRoLXByb21wdC1wcmVzZXJ2ZXMtZ2VzdHVyZS5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2dyYW50LXdpdGgtcHJvbXB0LXByZXNlcnZlcy1n
ZXN0dXJlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODM0MTI4MzgxNmUwNzlkZDYzYzRjOWI2NjM5NzUyYjZm
MmEzYmNjNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFn
ZUFjY2Vzcy9ncmFudC13aXRoLXByb21wdC1wcmVzZXJ2ZXMtZ2VzdHVyZS5odG1sCkBAIC0wLDAg
KzEsNzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNy
Yz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL3V0aWwuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGNyb3Nz
LW9yaWdpbiBpZnJhbWUgY2FuIGRpc3BsYXkgYSB3aW5kb3cgaWYgc3RvcmFnZSBhY2Nlc3MgaXMg
Z3JhbnRlZC4iKTsKKyAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgY29u
c3QgaG9zdFVuZGVyVGVzdCA9ICJsb2NhbGhvc3Q6ODAwMCI7CisgICAgICAgIGNvbnN0IHN0YXRp
c3RpY3NVcmwgPSAiaHR0cDovLyIgKyBob3N0VW5kZXJUZXN0ICsgIi90ZW1wIjsKKworICAgICAg
ICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY2VpdmVNZXNzYWdlLCBmYWxz
ZSk7CisKKyAgICAgICAgZnVuY3Rpb24gcmVjZWl2ZU1lc3NhZ2UoZXZlbnQpIHsKKyAgICAgICAg
ICAgIGlmIChldmVudC5vcmlnaW4gPT09ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuaW5kZXhPZigiUEFTUyAiKSAhPT0gLTEpCisgICAg
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJQQVNTICIsICIi
KSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KGV2ZW50LmRhdGEucmVwbGFjZSgiRkFJTCAiLCAiIikpOworICAgICAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiUmVjZWl2ZWQgYSBtZXNzYWdlIGZyb20gYW4gdW5l
eHBlY3RlZCBvcmlnaW46ICIgKyBldmVudC5vcmlnaW4pOworICAgICAgICAgICAgc2V0RW5hYmxl
RmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGFjdGl2YXRlRWxlbWVudChlbGVtZW50SWQpIHsKKyAgICAgICAgICAgIHZhciBlbGVtZW50
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKKyAgICAgICAgICAgIHZhciBj
ZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7Cisg
ICAgICAgICAgICB2YXIgY2VudGVyWSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZz
ZXRIZWlnaHQgLyAyOworICAgICAgICAgICAgVUlIZWxwZXIuYWN0aXZhdGVBdChjZW50ZXJYLCBj
ZW50ZXJZKS50aGVuKAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgICAgICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmtleURvd24oImVzY2FwZSIpOworICAgICAgICAgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk5vIGV2ZW50U2VuZGVyLiIp
OworICAgICAgICAgICAgICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNo
SlNUZXN0KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJQcm9taXNlIHJlamVjdGVkLiIpOworICAgICAgICAgICAgICAgICAgICBzZXRFbmFibGVGZWF0
dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICAg
ICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLnNldENhbk9wZW5XaW5kb3dzKGZhbHNlKTsKKyAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKHRydWUpOworICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwsIHRy
dWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNT
dGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCkpCisgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBhcyBwcmV2YWxlbnQg
cmVzb3VyY2UuIik7CisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGlj
c0hhc0hhZFVzZXJJbnRlcmFjdGlvbihzdGF0aXN0aWNzVXJsLCB0cnVlLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNI
YWRVc2VySW50ZXJhY3Rpb24oc3RhdGlzdGljc1VybCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQgbm90IGdldCBsb2dnZWQgZm9yIHVzZXIgaW50ZXJh
Y3Rpb24uIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NV
cGRhdGVDb29raWVCbG9ja2luZyhmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsZXQgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQub25sb2FkID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2YXRlRWxlbWVu
dCgiVGhlSWZyYW1lVGhhdFJlcXVlc3RzU3RvcmFnZUFjY2VzcyIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVu
dC5pZCA9ICJUaGVJZnJhbWVUaGF0UmVxdWVzdHNTdG9yYWdlQWNjZXNzIjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50LnNyYyA9ICJodHRwOi8vbG9jYWxob3N0Ojgw
MDAvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUt
YW5kLXBvcC13aW5kb3cuaHRtbCN1c2VyU2hvdWxkR3JhbnRBY2Nlc3MsdXNlclNob3VsZEJlQ29u
c3VsdGVkLHBvbGljeVNob3VsZEdyYW50QWNjZXNzLGlzTm90U2FtZU9yaWdpbklmcmFtZSI7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJh
bWVFbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy10cnVl
LWlmLWZlYXR1cmUtb2ZmLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3Rv
cmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1hY2Nlc3MtdHJ1ZS1pZi1mZWF0dXJlLW9mZi1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjQ5NjMxYjE0YzhjNjQ0MGEwMzY4MzI1NjI1MDVlMTIwOTg2YzQ4
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vz
cy9oYXMtc3RvcmFnZS1hY2Nlc3MtdHJ1ZS1pZi1mZWF0dXJlLW9mZi1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxMCBAQAorVGVzdHMgdGhhdCBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzKCkgcmV0
dXJucyB0cnVlIGZvciBhIDNyZC1wYXJ0eSBpZnJhbWUgaWYgdGhlcmUgaXMgbm8gd2F5IHRvIHJl
cXVlc3QgYWNjZXNzIChmZWF0dXJlIG9mZikuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIEhhcyBzdG9yYWdlIGFjY2Vzcy4gZG9jdW1lbnQuY29va2llID09ICwgY29va2ll
cyBzZWVuIHNlcnZlci1zaWRlID09ICJObyBjb29raWVzIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1hY2Nlc3MtdHJ1ZS1pZi1mZWF0dXJl
LW9mZi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9y
YWdlLWFjY2Vzcy10cnVlLWlmLWZlYXR1cmUtb2ZmLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDNmY2I1MmQx
MDQ0Yzc5MmYyNzYxNjdkMDYxN2VmZWJiYTk1YjI4MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1hY2Nlc3MtdHJ1ZS1p
Zi1mZWF0dXJlLW9mZi5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVs
cGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGRl
c2NyaXB0aW9uKCJUZXN0cyB0aGF0IGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3MoKSByZXR1cm5z
IHRydWUgZm9yIGEgM3JkLXBhcnR5IGlmcmFtZSBpZiB0aGVyZSBpcyBubyB3YXkgdG8gcmVxdWVz
dCBhY2Nlc3MgKGZlYXR1cmUgb2ZmKS4iKTsKKyAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7
CisKKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWNlaXZlTWVz
c2FnZSwgZmFsc2UpOworCisgICAgICAgIGZ1bmN0aW9uIHJlY2VpdmVNZXNzYWdlKGV2ZW50KSB7
CisgICAgICAgICAgICBpZiAoZXZlbnQub3JpZ2luID09PSAiaHR0cDovL2xvY2FsaG9zdDo4MDAw
IikgeworICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLmluZGV4T2YoIlBBU1MiKSAhPT0g
LTEpCisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJQ
QVNTICIsICIiKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKGV2ZW50LmRhdGEucmVwbGFjZSgiRkFJTCAiLCAiIikpOworICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiUmVjZWl2ZWQgYSBtZXNzYWdlIGZy
b20gYW4gdW5leHBlY3RlZCBvcmlnaW46ICIgKyBldmVudC5vcmlnaW4pOworICAgICAgICAgICAg
c2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGNvbnN0IGhvc3RVbmRlclRlc3QgPSAibG9jYWxob3N0OjgwMDAiOworICAgICAgICBjb25z
dCBzdGF0aXN0aWNzVXJsID0gImh0dHA6Ly8iICsgaG9zdFVuZGVyVGVzdCArICIvdGVtcCI7Cisg
ICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJl
KGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBsZXQgaWZyYW1lRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgICAgICAgICAgICAgIGlmcmFt
ZUVsZW1lbnQuaWQgPSAiVGhlSWZyYW1lVGhhdFJlcXVlc3RzU3RvcmFnZUFjY2VzcyI7CisgICAg
ICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5zcmMgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3N0
b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL2hhcy1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUuaHRtbCNwb2xp
Y3lTaG91bGRHcmFudEFjY2VzcyI7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChpZnJhbWVFbGVtZW50KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAg
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2JvZHk+Cis8
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LWFjY2Vzcy1jcm9z
cy1vcmlnaW4tbm9uLXNhbmRib3hlZC1pZnJhbWUtcG9wLXdpbmRvdy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtYWNj
ZXNzLWNyb3NzLW9yaWdpbi1ub24tc2FuZGJveGVkLWlmcmFtZS1wb3Atd2luZG93LWV4cGVjdGVk
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdlYzRjZjdmNzg0MWQ1N2M2OGRk
YjVmYTY2Y2I1NjM0YjMxZGEzYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1h
bmQtZ3JhbnQtYWNjZXNzLWNyb3NzLW9yaWdpbi1ub24tc2FuZGJveGVkLWlmcmFtZS1wb3Atd2lu
ZG93LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLVRlc3RzIHRo
YXQgY3Jvc3Mtb3JpZ2luIGlmcmFtZSBjYW4gZGlzcGxheSBhIHdpbmRvdyBpZiBzdG9yYWdlIGFj
Y2VzcyBpcyBncmFudGVkLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyBX
aW5kb3cgd2FzIHN1Y2Nlc3NmdWxseSBvcGVuZWQgd2l0aCB1c2VyIGludGVyYWN0aW9uLgotUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFu
dC1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLW5vbi1zYW5kYm94ZWQtaWZyYW1lLXBvcC13aW5kb3cuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFu
dC1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLW5vbi1zYW5kYm94ZWQtaWZyYW1lLXBvcC13aW5kb3cuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjkxZjlmYmI0MTdhZjc2ZGU2NmI1Zjk0
ODcxM2RkMDg2MWM5NmMzNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQt
Z3JhbnQtYWNjZXNzLWNyb3NzLW9yaWdpbi1ub24tc2FuZGJveGVkLWlmcmFtZS1wb3Atd2luZG93
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxo
dG1sPgotPGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL3VpLWhl
bHBlci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0PgotICAgICAgICBk
ZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBjcm9zcy1vcmlnaW4gaWZyYW1lIGNhbiBkaXNwbGF5IGEg
d2luZG93IGlmIHN0b3JhZ2UgYWNjZXNzIGlzIGdyYW50ZWQuIik7Ci0gICAgICAgIGpzVGVzdElz
QXN5bmMgPSB0cnVlOwotCi0gICAgICAgIGNvbnN0IGhvc3RVbmRlclRlc3QgPSAibG9jYWxob3N0
OjgwMDAiOwotICAgICAgICBjb25zdCBzdGF0aXN0aWNzVXJsID0gImh0dHA6Ly8iICsgaG9zdFVu
ZGVyVGVzdCArICIvdGVtcCI7Ci0KLSAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1l
c3NhZ2UiLCByZWNlaXZlTWVzc2FnZSwgZmFsc2UpOwotCi0gICAgICAgIGZ1bmN0aW9uIHJlY2Vp
dmVNZXNzYWdlKGV2ZW50KSB7Ci0gICAgICAgICAgICBpZiAoZXZlbnQub3JpZ2luID09PSAiaHR0
cDovL2xvY2FsaG9zdDo4MDAwIikgewotICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLmlu
ZGV4T2YoIlBBU1MgIikgIT09IC0xKQotICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKGV2
ZW50LmRhdGEucmVwbGFjZSgiUEFTUyAiLCAiIikpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChldmVudC5kYXRhKTsKLSAgICAgICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlJlY2VpdmVkIGEgbWVzc2FnZSBmcm9t
IGFuIHVuZXhwZWN0ZWQgb3JpZ2luOiAiICsgZXZlbnQub3JpZ2luKTsKLSAgICAgICAgICAgIHNl
dEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElkKSB7Ci0gICAgICAgICAgICB2YXIg
ZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7Ci0gICAgICAgICAg
ICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGgg
LyAyOwotICAgICAgICAgICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1l
bnQub2Zmc2V0SGVpZ2h0IC8gMjsKLSAgICAgICAgICAgIFVJSGVscGVyLmFjdGl2YXRlQXQoY2Vu
dGVyWCwgY2VudGVyWSkudGhlbigKLSAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJlc2NhcGUiKTsKLSAgICAgICAgICAgICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJObyBldmVudFNl
bmRlci4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2Us
IGZpbmlzaEpTVGVzdCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9
LAotICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiUHJvbWlzZSByZWplY3RlZC4iKTsKLSAgICAgICAgICAgICAgICAgICAgc2V0RW5h
YmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICApOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAg
ICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5zZXRDYW5PcGVuV2luZG93cyhmYWxzZSk7Ci0gICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRQb3B1cEJsb2NraW5nRW5hYmxlZCh0cnVlKTsKLSAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNz
VXJsLCB0cnVlLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCF0ZXN0UnVu
bmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQgbm90IGdldCBzZXQgYXMgcHJl
dmFsZW50IHJlc291cmNlLiIpOwotICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0
YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oc3RhdGlzdGljc1VybCwgdHJ1ZSwgZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0
aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKHN0YXRpc3RpY3NVcmwpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgbG9nZ2VkIGZvciB1c2Vy
IGludGVyYWN0aW9uLiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0
aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmcoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGV0IGlmcmFtZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJp
ZnJhbWUiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50Lm9ubG9h
ZCA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmF0
ZUVsZW1lbnQoIlRoZUlmcmFtZVRoYXRSZXF1ZXN0c1N0b3JhZ2VBY2Nlc3MiKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmcmFt
ZUVsZW1lbnQuaWQgPSAiVGhlSWZyYW1lVGhhdFJlcXVlc3RzU3RvcmFnZUFjY2VzcyI7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5zcmMgPSAiaHR0cDovL2xvY2Fs
aG9zdDo4MDAwL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mt
aWZyYW1lLWFuZC1wb3Atd2luZG93Lmh0bWwjdXNlclNob3VsZEdyYW50QWNjZXNzLHVzZXJTaG91
bGRCZUNvbnN1bHRlZCxwb2xpY3lTaG91bGRHcmFudEFjY2Vzcyxpc05vdFNhbWVPcmlnaW5JZnJh
bWUiOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoaWZyYW1lRWxlbWVudCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAg
ICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0pOwot
ICAgICAgICB9Ci0gICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3Qo
KSI+Ci08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9yZXF1
ZXN0LXN0b3JhZ2UtYWNjZXNzLWFuZC1pbW1lZGlhdGVseS1wb3N0bWVzc2FnZS1pZnJhbWUuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvcmVxdWVz
dC1zdG9yYWdlLWFjY2Vzcy1hbmQtaW1tZWRpYXRlbHktcG9zdG1lc3NhZ2UtaWZyYW1lLmh0bWwK
aW5kZXggMjg0MGZjMTM1MDk0ZjYwZDE1YWM5YTEyNmJhMjdkN2FjYzYzYmNlNS4uNWQ5NDgwMTVl
MDc1MjI4MDcxZDI0YmQzYzdjM2EwMTdhNzIwNzMxNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNz
LWFuZC1pbW1lZGlhdGVseS1wb3N0bWVzc2FnZS1pZnJhbWUuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nl
c3MtYW5kLWltbWVkaWF0ZWx5LXBvc3RtZXNzYWdlLWlmcmFtZS5odG1sCkBAIC0xLDkgKzEsNiBA
QAogPGh0bWw+CiA8aGVhZD4KICAgICA8c2NyaXB0PgotICAgICAgICBpZiAoaW50ZXJuYWxzKQot
ICAgICAgICAgICAgaW50ZXJuYWxzLnNldFVzZXJHcmFudHNTdG9yYWdlQWNjZXNzKHRydWUpOwot
CiAgICAgICAgIGZ1bmN0aW9uIG1ha2VSZXF1ZXN0V2l0aFVzZXJHZXN0dXJlKCkgewogICAgICAg
ICAgICAgZG9jdW1lbnQucmVxdWVzdFN0b3JhZ2VBY2Nlc3MoKTsKICAgICAgICAgICAgIHRvcC5w
b3N0TWVzc2FnZSgiQVBJIGNhbGxlZC4iLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIik7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3Jl
cXVlc3Qtc3RvcmFnZS1hY2Nlc3MtaWZyYW1lLWFuZC1wb3Atd2luZG93Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1h
Y2Nlc3MtaWZyYW1lLWFuZC1wb3Atd2luZG93Lmh0bWwKaW5kZXggOGRhNTJiZmZiMDhkNjllNWZm
NmQ2ZmY5Njc3MzE3NjkyZGZkNDkzNC4uNDY3MTRmZWRmYjkwN2Y5OGRiZmY0MGNhNjBlMjI3MjUx
OGY4YTc0YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNz
L3Jlc291cmNlcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLWlmcmFtZS1hbmQtcG9wLXdpbmRvdy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMv
cmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUtYW5kLXBvcC13aW5kb3cuaHRtbApAQCAtOCw5
ICs4LDYgQEAKICAgICAgICAgY29uc3QgaXNTYW1lT3JpZ2luSWZyYW1lID0gaGFzaEFyZ3VtZW50
c1szXSA9PT0gImlzU2FtZU9yaWdpbklmcmFtZSI7CiAgICAgICAgIGNvbnN0IG9yaWdpbklzTnVs
bCA9IGhhc2hBcmd1bWVudHNbNF0gPT09ICJvcmlnaW5Jc051bGwiOwogCi0gICAgICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICAgICAgaW50ZXJuYWxzLnNldFVzZXJHcmFudHNTdG9y
YWdlQWNjZXNzKHVzZXJTaG91bGRHcmFudEFjY2Vzcyk7Ci0KICAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CiAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldENhbk9wZW5XaW5kb3dzKGZh
bHNlKTsKICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQodHJ1
ZSk7CkBAIC0yNSwxMCArMjIsMTQgQEAKIAogICAgICAgICBmdW5jdGlvbiB3aW5kb3dXYXNPcGVu
ZWQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodXNlclNob3VsZEdyYW50QWNjZXNzKQor
ICAgICAgICAgICAgaWYgKHVzZXJTaG91bGRCZUNvbnN1bHRlZCAmJiB1c2VyU2hvdWxkR3JhbnRB
Y2Nlc3MpCiAgICAgICAgICAgICAgICAgbWVzc2FnZVRvVG9wKCJQQVNTIFdpbmRvdyB3YXMgc3Vj
Y2Vzc2Z1bGx5IG9wZW5lZCB3aXRoIHVzZXIgaW50ZXJhY3Rpb24uIik7CisgICAgICAgICAgICBl
bHNlIGlmICh1c2VyU2hvdWxkQmVDb25zdWx0ZWQgJiYgIXVzZXJTaG91bGRHcmFudEFjY2VzcykK
KyAgICAgICAgICAgICAgICBtZXNzYWdlVG9Ub3AoIkZBSUwgV2luZG93IHdhcyBvcGVuZWQgZXZl
biB0aG91Z2ggdGhlIHVzZXIgZXhwbGljaXRseSBkZWNsaW5lZCBwZXJtaXNzaW9uLiIpOworICAg
ICAgICAgICAgZWxzZSBpZiAoIXVzZXJTaG91bGRCZUNvbnN1bHRlZCAmJiAhdXNlclNob3VsZEdy
YW50QWNjZXNzKQorICAgICAgICAgICAgICAgIG1lc3NhZ2VUb1RvcCgiUEFTUyBXaW5kb3cgd2Fz
IHN1Y2Nlc3NmdWxseSBvcGVuZWQgd2l0aCB1c2VyIGludGVyYWN0aW9uIHNpbmNlIHRoZSB1c2Vy
IHdhcyBuZXZlciBjb25zdWx0ZWQvcHJvbXB0ZWQuIik7CiAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgbWVzc2FnZVRvVG9wKCJXaW5kb3cgd2FzIG9wZW5lZCBldmVuIHRob3VnaCB0
aGUgdXNlciBkZWNsaW5lZCBwZXJtaXNzaW9uLiIpOworICAgICAgICAgICAgICAgIG1lc3NhZ2VU
b1RvcCgiRkFJTCBDb25mbGljdGluZyBpbnN0cnVjdGlvbnM6ICF1c2VyU2hvdWxkQmVDb25zdWx0
ZWQgJiYgdXNlclNob3VsZEdyYW50QWNjZXNzIC4iKTsKICAgICAgICAgfQogCiAgICAgICAgIGZ1
bmN0aW9uIG1ha2VSZXF1ZXN0V2l0aFVzZXJHZXN0dXJlKCkgewpAQCAtNDgsMTIgKzQ5LDE0IEBA
CiAgICAgICAgIGZ1bmN0aW9uIGNvbnRpbnVlQWZ0ZXJSZXF1ZXN0V2l0aFVzZXJHZXN0dXJlKCkg
ewogICAgICAgICAgICAgdmFyIHdpbiA9IHdpbmRvdy5vcGVuKCJyZXF1ZXN0LXN0b3JhZ2UtYWNj
ZXNzLXNlY29uZC13aW5kb3cuaHRtbCIsICJ0ZXN0IHdpbmRvdyIpOwogICAgICAgICAgICAgaWYg
KCF3aW4pIHsKLSAgICAgICAgICAgICAgICBpZiAodXNlclNob3VsZEdyYW50QWNjZXNzKQotICAg
ICAgICAgICAgICAgICAgICBtZXNzYWdlVG9Ub3AoIldpbmRvdyB3YXMgbm90IG9wZW5lZCBldmVu
IHRob3VnaCB0aGUgdXNlciBncmFudGVkIHBlcm1pc3Npb24uIik7Ci0gICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIGlmICh1c2VyU2hvdWxkQmVDb25zdWx0ZWQgJiYgdXNlclNo
b3VsZEdyYW50QWNjZXNzKQorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlVG9Ub3AoIkZBSUwg
V2luZG93IHdhcyBub3Qgb3BlbmVkIGV2ZW4gdGhvdWdoIHRoZSB1c2VyIGV4cGxpY2l0bHkgZ3Jh
bnRlZCBwZXJtaXNzaW9uLiIpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKHVzZXJTaG91bGRC
ZUNvbnN1bHRlZCAmJiAhdXNlclNob3VsZEdyYW50QWNjZXNzKQogICAgICAgICAgICAgICAgICAg
ICBtZXNzYWdlVG9Ub3AoIlBBU1MgV2luZG93IHdhcyBibG9ja2VkIGZyb20gb3BlbmluZy4iKTsK
LSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXVzZXJTaG91bGRHcmFudEFjY2VzcykgewotICAgICAg
ICAgICAgICAgIG1lc3NhZ2VUb1RvcCgiV2luZG93IHdhcyBvcGVuZWQgZXZlbiB0aG91Z2ggdGhl
IHVzZXIgZGlkIG5vdCBncmFudCBwZXJtaXNzaW9uLiIpOworICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKCF1c2VyU2hvdWxkQmVDb25zdWx0ZWQgJiYgIXVzZXJTaG91bGRHcmFudEFjY2VzcykKKyAg
ICAgICAgICAgICAgICAgICAgbWVzc2FnZVRvVG9wKCJGQUlMIFdpbmRvdyB3YXMgYmxvY2tlZCBm
cm9tIG9wZW5pbmcgZXZlbiB0aG91Z2ggdGhlIHVzZXIgd2FzIG5ldmVyIGNvbnN1bHRlZC9wcm9t
cHRlZC4iKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG1lc3Nh
Z2VUb1RvcCgiRkFJTCBDb25mbGljdGluZyBpbnN0cnVjdGlvbnM6ICF1c2VyU2hvdWxkQmVDb25z
dWx0ZWQgJiYgdXNlclNob3VsZEdyYW50QWNjZXNzIC4iKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
dG9yYWdlQWNjZXNzL3Jlc291cmNlcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLWlmcmFtZS5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9yZXF1ZXN0
LXN0b3JhZ2UtYWNjZXNzLWlmcmFtZS5odG1sCmluZGV4IDZhZmQ2YzhiMWIyZmUxNGQ3ZjE0N2E0
ZjZlMTg3NWYxMDcyZWVhMDcuLjU0MzEzMmM0NjYxMTYwODJhYjExN2IzZWYyMDgyNWIwYTUyNDQ0
YWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXNv
dXJjZXMvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nl
c3MtaWZyYW1lLmh0bWwKQEAgLTgsOSArOCw2IEBACiAgICAgICAgIGNvbnN0IGlzU2FtZU9yaWdp
bklmcmFtZSA9IGhhc2hBcmd1bWVudHNbM10gPT09ICJpc1NhbWVPcmlnaW5JZnJhbWUiOwogICAg
ICAgICBjb25zdCBvcmlnaW5Jc051bGwgPSBoYXNoQXJndW1lbnRzWzRdID09PSAib3JpZ2luSXNO
dWxsIjsKIAotICAgICAgICBpZiAoaW50ZXJuYWxzICYmIHVzZXJTaG91bGRHcmFudEFjY2VzcykK
LSAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0VXNlckdyYW50c1N0b3JhZ2VBY2Nlc3ModHJ1
ZSk7Ci0KICAgICAgICAgdmFyIHJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzb2x2ZWQ7CiAKICAgICAg
ICAgZnVuY3Rpb24gbWVzc2FnZVRvVG9wKG1lc3NhZ2VQcmVmaXgsIGZldGNoRGF0YSkgewpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9y
ZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXdpdGhvdXQtdXNlci1nZXN0dXJlLWlmcmFtZS5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9yZXF1ZXN0LXN0
b3JhZ2UtYWNjZXNzLXdpdGhvdXQtdXNlci1nZXN0dXJlLWlmcmFtZS5odG1sCmluZGV4IDY0ZmQ0
YTRmYTAwMTcyMDc5ZGYxODdmNjU5OTU2YzhlMTI4NGUzNjEuLmE3YjQwYzg1MzRlNjQyNzVmM2Q4
ZjI0NzU3YmVjZWYzYTRlOTBiMWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy13aXRob3V0LXVz
ZXItZ2VzdHVyZS1pZnJhbWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3Jh
Z2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mtd2l0aG91dC11c2VyLWdl
c3R1cmUtaWZyYW1lLmh0bWwKQEAgLTYsOSArNiw2IEBACiAgICAgICAgIGNvbnN0IHVzZXJTaG91
bGRCZUNvbnN1bHRlZCA9IGhhc2hBcmd1bWVudHNbMV0gPT09ICJ1c2VyU2hvdWxkQmVDb25zdWx0
ZWQiOwogICAgICAgICBjb25zdCBwb2xpY3lTaG91bGRHcmFudEFjY2VzcyA9IGhhc2hBcmd1bWVu
dHNbMl0gPT09ICJwb2xpY3lTaG91bGRHcmFudEFjY2VzcyI7CiAKLSAgICAgICAgaWYgKGludGVy
bmFscyAmJiB1c2VyU2hvdWxkR3JhbnRBY2Nlc3MpCi0gICAgICAgICAgICAgICAgaW50ZXJuYWxz
LnNldFVzZXJHcmFudHNTdG9yYWdlQWNjZXNzKHRydWUpOwotCiAgICAgICAgIHZhciByZXF1ZXN0
U3RvcmFnZUFjY2Vzc1Jlc29sdmVkOwogCiAgICAgICAgIGZ1bmN0aW9uIG1ha2VSZXF1ZXN0V2l0
aG91dFVzZXJHZXN0dXJlKCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
dG9yYWdlQWNjZXNzL3Jlc291cmNlcy9zZWxmLW5hdmlnYXRpbmctZnJhbWUtYWZ0ZXItZ3JhbnRl
ZC1hY2Nlc3MuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXNv
dXJjZXMvc2VsZi1uYXZpZ2F0aW5nLWZyYW1lLWFmdGVyLWdyYW50ZWQtYWNjZXNzLmh0bWwKaW5k
ZXggZGJkYTdlYTI0MzBiNjg3YWNmZDU3ZmUzNTNiYzA0NDhiODVhMzdkMy4uNTI1NjVjMmM1MWM2
MzNlOWFjMjVmZWI2MThiNWI3YmQ2M2ZkNWQ5ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9zZWxmLW5hdmlnYXRpbmctZnJhbWUtYWZ0
ZXItZ3JhbnRlZC1hY2Nlc3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3Jh
Z2VBY2Nlc3MvcmVzb3VyY2VzL3NlbGYtbmF2aWdhdGluZy1mcmFtZS1hZnRlci1ncmFudGVkLWFj
Y2Vzcy5odG1sCkBAIC03LDkgKzcsNiBAQAogICAgICAgICBjb25zdCBwb2xpY3lTaG91bGRHcmFu
dEFjY2VzcyA9IGhhc2hBcmd1bWVudHNbMl0gPT09ICJwb2xpY3lTaG91bGRHcmFudEFjY2VzcyI7
CiAgICAgICAgIGNvbnN0IHNhbWVTaXRlTmF2aWdhdGlvbiA9IGhhc2hBcmd1bWVudHNbM10gPT09
ICJzYW1lU2l0ZU5hdmlnYXRpb24iOwogCi0gICAgICAgIGlmIChpbnRlcm5hbHMgJiYgdXNlclNo
b3VsZEdyYW50QWNjZXNzKQotICAgICAgICAgICAgaW50ZXJuYWxzLnNldFVzZXJHcmFudHNTdG9y
YWdlQWNjZXNzKHRydWUpOwotCiAgICAgICAgIHZhciByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc29s
dmVkOwogCiAgICAgICAgIGZ1bmN0aW9uIG1ha2VSZXF1ZXN0V2l0aFVzZXJHZXN0dXJlKCkgewpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGY0
YzE5MGRhZmM3OWU1MzIyYTBiMWRjZWEyZjgzZTcyZTYwMmJjZTEuLjYxZTNiNGRiOWI5ODliMzhh
MDViZjdiNmI1MjM5ZWJkYjc3ODhmN2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTcyNiw2ICs3MjYsOSBAQCBodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvdXNlci1pbnRlcmFjdGlvbi1yZXBvcnRlZC1hZnRlci13ZWJzaXRl
LWRhdGEtcgogWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0
LWFuZC1ncmFudC1hY2Nlc3MtdGhlbi1uYXZpZ2F0ZS1zYW1lLXNpdGUtc2hvdWxkLWhhdmUtYWNj
ZXNzLmh0bWwgWyBQYXNzIF0KIFsgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nl
c3MvZGVueS1zdG9yYWdlLWFjY2Vzcy11bmRlci1vcGVuZXIuaHRtbCBbIFBhc3MgXQogWyBIaWdo
U2llcnJhKyBdIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9kZW55LXN0b3JhZ2UtYWNjZXNzLXVu
ZGVyLW9wZW5lci1pZi1hdXRvLWRpc21pc3MuaHRtbCBbIFBhc3MgXQorWyBIaWdoU2llcnJhKyBd
IGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC13aXRoLXByb21wdC1wcmVzZXJ2ZXMtZ2Vz
dHVyZS5odG1sIFsgUGFzcyBdCitbIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9zdG9yYWdlQWNj
ZXNzL2Rlbnktd2l0aC1wcm9tcHQtZG9lcy1ub3QtcHJlc2VydmUtZ2VzdHVyZS5odG1sIFsgU2tp
cCBdCitbIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnktd2l0aG91
dC1wcm9tcHQtcHJlc2VydmVzLWdlc3R1cmUuaHRtbCBbIFBhc3MgXQogCiAjIEFzIG9mIGh0dHBz
Oi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMjc3NjIgdGhlIHRpbWVzdGFtcFJlc29sdXRp
b24gaXMganVzdCA1IHNlY29uZHMgd2hpY2ggbWFrZXMgdGhpcyB0ZXN0IGZsYWt5CiBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdXNlci1pbnRlcmFjdGlvbi1vbmx5LXJlcG9ydGVk
LW9uY2Utd2l0aGluLXNob3J0LXBlcmlvZC1vZi10aW1lLmh0bWwgWyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>369299</attachid>
            <date>2019-05-07 10:03:48 -0700</date>
            <delta_ts>2019-05-07 10:34:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197648-20190507100347.patch</filename>
            <type>text/plain</type>
            <size>156551</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1MDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDQyNGM5ZWM3MGU5YzBh
NTYwNjg3MjFmNTc4OTZhZWIyNzc0YWE5Ny4uYjJhMGNlMjQ1MGQwMTQ5YTYzOTZhZmM0ODgyMzY0
NjZhZjJjMGIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE5LTA1LTA2ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3JhZ2UgQWNjZXNz
IEFQSTogTWFrZSB0d28gY2hhbmdlcyByZXF1ZXN0ZWQgYnkgZGV2ZWxvcGVycyBhbmQgY29tcGxl
dGUgcmVmYWN0b3JpbmcgYW5kIGNsZWFudXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5NzY0OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTA1Mjc0
OTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGV2
ZWxvcGVycyBoYXZlIHJlcXVlc3RlZCB0d28gbWlub3IgY2hhbmdlcyB0byB0aGUgU3RvcmFnZSBB
Y2Nlc3MgQVBJOgorICAgICAgICAtIE9ubHkgY29uc3VtZSB0aGUgdXNlciBnZXN0dXJlIHdoZW4g
dGhlIHVzZXIgZXhwbGljaXRseSBkZW5pZXMgYWNjZXNzLgorICAgICAgICAtIE1ha2UgZG9jdW1l
bnQuaGFzU3RvcmFnZUFjY2VzcygpIHJldHVybiB0cnVlIGluc3RlYWQgb2YgZmFsc2Ugd2hlbiB0
aGUgZmVhdHVyZSBpcyBvZmYuCisKKyAgICAgICAgSW4gYWRkaXRpb24gdG8gdGhpcywgd2UgaGF2
ZSByZWZhY3RvcmluZyBhbmQgY2xlYW51cCB0byBkby4gTmFtZWx5OgorICAgICAgICAtIE1ha2Ug
dXNlIG9mIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGFsbCB0aGUgd2F5LgorICAgICAgICAt
IFJlbW92ZSBkZWFkIGNvZGUgaW4gV2ViS2l0OjpOZXR3b3JrUHJvY2VzcyBzaW5jZSB0aGUgY2Fs
bHMgbm93IGdvIHRocm91Z2ggTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuCisgICAgICAg
IC0gSW50cm9kdWNlIGJvb2xlYW4gZW51bXMgZm9yIHN0YXRlIGhhbmRsaW5nLgorICAgICAgICAt
IEJyZWFrIG91dCB0aGUgU3RvcmFnZSBBY2Nlc3MgQVBJIGZ1bmN0aW9uYWxpdHkgaW50byBhIHN1
cHBsZW1lbnQgb2YgV2ViQ29yZTo6RG9jdW1lbnQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9k
ZW55LXdpdGgtcHJvbXB0LWRvZXMtbm90LXByZXNlcnZlLWdlc3R1cmUuaHRtbAorICAgICAgICAg
ICAgICAgaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnktd2l0aG91dC1wcm9tcHQtcHJlc2Vy
dmVzLWdlc3R1cmUuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNz
L2dyYW50LXdpdGgtcHJvbXB0LXByZXNlcnZlcy1nZXN0dXJlLmh0bWwKKyAgICAgICAgICAgICAg
IGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1hY2Nlc3MtdHJ1ZS1pZi1mZWF0
dXJlLW9mZi5odG1sCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aGFzU3RvcmFnZUFjY2Vzcyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3Mp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuYWJsZVRlbXBvcmFyeVRp
bWVVc2VyR2VzdHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y29u
c3VtZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6aGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdl
QWNjZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpzZXRVc2VyR3JhbnRzU3RvcmFnZUFjY2Vzc092ZXJyaWRlKTogRGVs
ZXRlZC4KKyAgICAgICAgICAgIEFsbCBvZiB0aGlzIGhhcyBiZWVuIG1vdmVkIHRvIHRoZSBzdXBw
bGVtZW50IFdlYkNvcmU6OkRvY3VtZW50U3RvcmFnZUFjY2Vzcy4KKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuaWRsOgorICAgICAgICAgICAgVGhlIFN0b3JhZ2UgQWNjZXNzIEFQSSBoYXMgYmVlbiBt
b3ZlZCB0byBEb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaWRsLgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dFN0b3JhZ2VBY2Nlc3MuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3Rv
cmFnZUFjY2Vzczo6ZnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0b3JhZ2VBY2Nl
c3M6OnN1cHBsZW1lbnROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3RvcmFnZUFj
Y2Vzczo6aGFzU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0b3Jh
Z2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50U3RvcmFnZUFjY2Vzczo6ZW5hYmxlVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50U3RvcmFnZUFjY2Vzczo6Y29uc3VtZVRlbXBvcmFyeVRpbWVV
c2VyR2VzdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6Omhh
c0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50U3RvcmFnZUFjY2Vzczo6c2V0SGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MpOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaDogQWRkZWQuCisgICAgICAgICog
ZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5pZGw6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvQ2hy
b21lQ2xpZW50Lmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRVc2VyR3JhbnRzU3RvcmFnZUFjY2Vzcyk6IERlbGV0ZWQu
CisgICAgICAgICAgICBUaGlzIHdhcyBkZWFkIGNvZGUuCisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTktMDUtMDYg
IEphbWVzIFNhdmFnZSAgPGphbWVzLnNhdmFnZUBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wcm92
ZSBjb29yZGluYXRpb24gZm9yIGNyZWF0aW5nIFVJV2luZG93IGluc3RhbmNlcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggNzVjMzczZDA4OGZlN2IyZDE4MzhlNzY4YThhZWFlMDlkYTRlZTRkZi4uNDk4NjI5MTAxMzcy
Yzg3MDEwMzA5MDYzYTFkZmRmNzIyNTA5NTBjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDYgQEAK
KzIwMTktMDUtMDYgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgU3RvcmFnZSBBY2Nlc3MgQVBJOiBNYWtlIHR3byBjaGFuZ2VzIHJlcXVlc3RlZCBieSBkZXZl
bG9wZXJzIGFuZCBjb21wbGV0ZSByZWZhY3RvcmluZyBhbmQgY2xlYW51cAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3NjQ4CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS81MDUyNzQ5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBEZXZlbG9wZXJzIGhhdmUgcmVxdWVzdGVkIHR3byBtaW5vciBjaGFuZ2Vz
IHRvIHRoZSBTdG9yYWdlIEFjY2VzcyBBUEk6CisgICAgICAgIC0gT25seSBjb25zdW1lIHRoZSB1
c2VyIGdlc3R1cmUgd2hlbiB0aGUgdXNlciBleHBsaWNpdGx5IGRlbmllcyBhY2Nlc3MuCisgICAg
ICAgIC0gTWFrZSBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzKCkgcmV0dXJuIHRydWUgaW5zdGVh
ZCBvZiBmYWxzZSB3aGVuIHRoZSBmZWF0dXJlIGlzIG9mZi4KKworICAgICAgICBJbiBhZGRpdGlv
biB0byB0aGlzLCB3ZSBoYXZlIHJlZmFjdG9yaW5nIGFuZCBjbGVhbnVwIHRvIGRvLiBOYW1lbHk6
CisgICAgICAgIC0gTWFrZSB1c2Ugb2YgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gYWxsIHRo
ZSB3YXkuCisgICAgICAgIC0gUmVtb3ZlIGRlYWQgY29kZSBpbiBXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzIHNpbmNlIHRoZSBjYWxscyBub3cgZ28gdGhyb3VnaCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy4KKyAgICAgICAgLSBJbnRyb2R1Y2UgYm9vbGVhbiBlbnVtcyBmb3Igc3RhdGUgaGFu
ZGxpbmcuCisgICAgICAgIC0gQnJlYWsgb3V0IHRoZSBTdG9yYWdlIEFjY2VzcyBBUEkgZnVuY3Rp
b25hbGl0eSBpbnRvIGEgc3VwcGxlbWVudCBvZiBXZWJDb3JlOjpEb2N1bWVudC4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6aW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwcyk6CisgICAgICAgIChXZWJLaXQ6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vz
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFu
dFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNVc2VyR3JhbnRlZFN0b3JhZ2VBY2Nlc3NUaHJvdWdo
UHJvbXB0IGNvbnN0KToKKyAgICAgICAgICAgIFRoZXNlIGNoYW5nZXMgYXJlIGR1ZSB0byB0aGUg
bmV3IGVudW1zIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIGFuZAorICAgICAgICAg
ICAgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNz
VW5kZXJPcGVuZXIpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwpOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omhhc1Vz
ZXJHcmFudGVkU3RvcmFnZUFjY2Vzc1Rocm91Z2hQcm9tcHQpOgorICAgICAgICAgICAgVGhlc2Ug
Y2hhbmdlcyBhcmUgZHVlIHRvIHRoZSBuZXcgZW51bXMgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQgYW5kCisgICAgICAgICAgICBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2Fz
U2hvd24uCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAgICAgVGhlc2UgY2hh
bmdlcyBhcmUgZHVlIHRvIHRoZSBuZXcgZW51bXMgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQgYW5kCisgICAgICAgICAgICBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hv
d24uCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNhbGxHcmFudFN0b3Jh
Z2VBY2Nlc3NIYW5kbGVyKToKKyAgICAgICAgICAgIFRoZXNlIGNoYW5nZXMgYXJlIGR1ZSB0byB0
aGUgbmV3IGVudW1zIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIGFuZAorICAgICAg
ICAgICAgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNz
R3JhbnRlZCk6IERlbGV0ZWQuCisgICAgICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIG5vdyBubyBs
b25nZXIgZXhwb3NlZCBhbmQgaXRzIGZ1bmN0aW9uYWxpdHkgY291bGQgYmUgZm9sZGVkIGludG8K
KyAgICAgICAgICAgIHRoZSBleGlzdGluZyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnJlcXVlc3RTdG9yYWdlQWNjZXNzKCkgd2hpY2ggaXMgbW9yZQorICAgICAgICAgICAgY2xlYXJs
eSBuYW1lZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAg
ICAgICAgICAgVGhlc2UgY2hhbmdlcyBhcmUgZHVlIHRvIHRoZSBuZXcgZW51bXMgV2ViQ29yZTo6
U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgYW5kCisgICAgICAgICAgICBXZWJDb3JlOjpTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd24uCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6aGFzU3RvcmFnZUFjY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc0dyYW50ZWQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Z3JhbnRTdG9yYWdl
QWNjZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlbW92
ZUFsbFN0b3JhZ2VBY2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAgICAgVGhlc2UgZnVuY3Rpb25z
IHdlcmUgbGVmdCBiZWhpbmQgaW4gdGhlIG1vdmUgb2YgSVRQIHRvIHRoZSBuZXR3b3JrIHByb2Nl
c3MuCisgICAgICAgICAgICBUaGlzIGNvbW11bmljYXRpb24gZ29lcyB0aHJvdWdoIFdlYktpdDo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mgc2luY2UgYSB3aGlsZSBiYWNrLgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHk6CisgICAgICAgICAgICBJbnN0cnVjdGlvbnMgZm9yIGRlcml2ZWQgSVBD
IGNvZGUgb24gaG93IHRvIGluY2x1ZGUgdGhlIG5ldyBlbnVtcworICAgICAgICAgICAgV2ViQ29y
ZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgYW5kIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93bi4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6aGFzU3RvcmFn
ZUFjY2Vzc0ZvckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6aGFzU3RvcmFnZUFjY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Z3JhbnRTdG9yYWdlQWNjZXNzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVtb3ZlQWxsU3Rv
cmFnZUFjY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgICAgICBUaGVzZSBmdW5jdGlvbnMgd2VyZSBs
ZWZ0IGJlaGluZCBpbiB0aGUgbW92ZSBvZiBJVFAgdG8gdGhlIG5ldHdvcmsgcHJvY2Vzcy4KKyAg
ICAgICAgICAgIFRoaXMgY29tbXVuaWNhdGlvbiBnb2VzIHRocm91Z2ggV2ViS2l0OjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBzaW5jZSBhIHdoaWxlIGJhY2suCisgICAgICAgICogVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKTogRGVs
ZXRlZC4KKyAgICAgICAgICAgIFRoZXNlIGZ1bmN0aW9ucyB3ZXJlIGxlZnQgYmVoaW5kIGluIHRo
ZSBtb3ZlIG9mIElUUCB0byB0aGUgbmV0d29yayBwcm9jZXNzLgorICAgICAgICAgICAgVGhpcyBj
b21tdW5pY2F0aW9uIGdvZXMgdGhyb3VnaCBXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzIHNpbmNlIGEgd2hpbGUgYmFjay4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50
OjpoYXNTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojpy
ZXF1ZXN0U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgICAgICBUaGVzZSBjaGFuZ2VzIGFyZSBkdWUg
dG8gdGhlIG5ldyBlbnVtcyBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBhbmQKKyAg
ICAgICAgICAgIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bi4gVGhleSBhbHNv
IHJlY2VpdmUgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4KKyAgICAgICAgICAgIG9iamVjdHMg
aW5zdGVhZCBvZiBTdHJpbmdzIG5vdy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFzU3RvcmFnZUFjY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAg
ICAgIFRoZXNlIGNoYW5nZXMgYXJlIGR1ZSB0byB0aGUgbmV3IGVudW1zIFdlYkNvcmU6OlN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkIGFuZAorICAgICAgICAgICAgV2ViQ29yZTo6U3RvcmFnZUFjY2Vz
c1Byb21wdFdhc1Nob3duLiBUaGV5IGFsc28gcmVjZWl2ZSBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbgorICAgICAgICAgICAgb2JqZWN0cyBpbnN0ZWFkIG9mIFN0cmluZ3Mgbm93LgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisKIDIwMTktMDUtMDYgIEphbWVzIFNh
dmFnZSAgPGphbWVzLnNhdmFnZUBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wcm92ZSBjb29yZGlu
YXRpb24gZm9yIGNyZWF0aW5nIFVJV2luZG93IGluc3RhbmNlcy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGMzNTEzM2UwY2NiNzJkMzQ0
MzQzNGM0ZTE5ZTcxMGZmNDQ5NTcxYjYuLmVmMjg0ZjVjNmZhOGM2MTc0NjdiMzkxZjAxNzYzY2Ey
ZWM3ODVmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdApAQCAtNTYyLDYgKzU2Miw3IEBAICQoUFJPSkVDVF9ESVIpL2RvbS9Eb2N1bWVudEFu
ZEVsZW1lbnRFdmVudEhhbmRsZXJzLmlkbAogJChQUk9KRUNUX0RJUikvZG9tL0RvY3VtZW50RnJh
Z21lbnQuaWRsCiAkKFBST0pFQ1RfRElSKS9kb20vRG9jdW1lbnRGdWxsc2NyZWVuLmlkbAogJChQ
Uk9KRUNUX0RJUikvZG9tL0RvY3VtZW50T3JTaGFkb3dSb290LmlkbAorJChQUk9KRUNUX0RJUikv
ZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5pZGwKICQoUFJPSkVDVF9ESVIpL2RvbS9Eb2N1bWVu
dFRvdWNoLmlkbAogJChQUk9KRUNUX0RJUikvZG9tL0RvY3VtZW50VHlwZS5pZGwKICQoUFJPSkVD
VF9ESVIpL2RvbS9FbGVtZW50LmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCAxYThjOTMyYTM2M2RjYjIwMzQ2MmQyYzNkZjRlZWM4
ZGFhZmQ2ZWFmLi44YmQ3ZjlkMzhhZDhkZWQxZjc2MWNjYjQ0MzRjYTRiYjAxNTIwOTk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAt
NDczLDYgKzQ3Myw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTRG9jdW1lbnRGdWxsc2NyZWVuLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudEZ1bGxzY3JlZW4uaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudE9yU2hhZG93Um9vdC5jcHAK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRG9jdW1lbnRP
clNoYWRvd1Jvb3QuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNEb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50VGltZWxpbmUuY3Bw
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50
VGltZWxpbmUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNEb2N1bWVudFRpbWVsaW5lT3B0aW9ucy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CmluZGV4IDA0MzNmYWI4ODc0YTUwMTkzNjc2ODg0MDE2Y2ViZjE2ZDU4ODBlMDQuLmY0NTZiNDU4
YzE5NDg4ZWI2MjhkYzM5YmQzOWE0NDI0NjA1NjYyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQpAQCAtNTg0LDYgKzU4NCw3IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdl
YkNvcmUpL2RvbS9Eb2N1bWVudEZ1bGxzY3JlZW4uaWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9E
b2N1bWVudEZyYWdtZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vRG9jdW1lbnRPclNoYWRv
d1Jvb3QuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaWRs
IFwKICAgICAkKFdlYkNvcmUpL2RvbS9Eb2N1bWVudFR5cGUuaWRsIFwKICAgICAkKFdlYkNvcmUp
L2RvbS9FbGVtZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vRXJyb3JFdmVudC5pZGwgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dAppbmRleCBiYTYwOTdlOWI3NDcwODBlYzgxMDk1ZmMwYzBmODI4OGIwNjE2ODMx
Li5iY2VjYmE5MDg5NzY2ZjkwZjk1MGMyMTc4M2FmNjJlMTE4ZmZiNmNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dApAQCAtODQ0LDYgKzg0NCw3IEBAIGRvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAogZG9tL0RvY3Vt
ZW50TWFya2VyQ29udHJvbGxlci5jcHAKIGRvbS9Eb2N1bWVudFBhcnNlci5jcHAKIGRvbS9Eb2N1
bWVudFNoYXJlZE9iamVjdFBvb2wuY3BwCitkb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcAog
ZG9tL0RvY3VtZW50VG91Y2guY3BwIEBuby11bmlmeQogZG9tL0RvY3VtZW50VHlwZS5jcHAKIGRv
bS9FbGVtZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDBkY2RjODc0YTdiOTc3ZmFhODZlZDI0NzQ2NjEwZGI1ODhiMWVm
OTMuLjY4MGQ2NDQ2ZjU5NGM1ZjViY2UwMjUwMGYwYWM1MTUxZmY3NzU5YTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE5NzUs
NiArMTk3NSw3IEBACiAJCTZCMzQ4MDk0MEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkIzNDgwOTIw
RUVGNTBENDAwQUMxQjQxIC8qIE5hdGl2ZUltYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkI0RTg2MTMyMjFCNzEzRjAwMjJGMzg5IC8qIFJl
Z2lzdHJhYmxlRG9tYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2QjRFODYxMjIyMUI3MTNGMDAyMkYzODkgLyogUmVnaXN0cmFibGVEb21haW4uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2QjY5M0Ey
RTFDNTFBODJFMDBCMDNCRUYgLyogUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCNjkzQTJEMUM1MUE4MkUwMEIwM0JF
RiAvKiBSZXNvdXJjZUxvYWRPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTZCREI1REMyMjI3QkQzQjgwMDkxOTc3MCAvKiBEb2N1bWVu
dFN0b3JhZ2VBY2Nlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDZCREI1REMwMjI3QkQzQjgwMDkxOTc3MCAvKiBEb2N1bWVudFN0b3JhZ2VBY2Nlc3Mu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2QzRD
OTZERjFBRDQ0ODM1MDAzNjNGNjQgLyogSlNSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzRDOTZEQjFB
RDQ0ODM1MDAzNjNGNjQgLyogSlNSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmggKi87IH07
CiAJCTZDNEM5NkRGMUFENDQ4MzUwMDM2NTY3MiAvKiBKU1JlYWRhYmxlU3RyZWFtQllPQlJlcXVl
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNEM5
NkRCMUFENDQ4MzUwMDM2NTY3MiAvKiBKU1JlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3QuaCAqLzsg
fTsKIAkJNkM0Qzk2REYxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNkM0Qzk2REIxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC05MDM3LDYgKzkwMzgsOSBAQAogCQk2QjRFODYxMjIyMUI3MTNGMDAyMkYzODkgLyogUmVn
aXN0cmFibGVEb21haW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaXN0cmFibGVEb21haW4uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkI2OTNBMkQxQzUxQTgyRTAwQjAzQkVGIC8qIFJl
c291cmNlTG9hZE9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
c291cmNlTG9hZE9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCNjkz
QTMzMUM1MUE5NUQwMEIwM0JFRiAvKiBSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZCREI1REMwMjI3QkQzQjgwMDkxOTc3MCAvKiBE
b2N1bWVudFN0b3JhZ2VBY2Nlc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRTdG9yYWdlQWNj
ZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZCREI1REMxMjI3QkQzQjgwMDkx
OTc3MCAvKiBEb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9j
dW1lbnRTdG9yYWdlQWNjZXNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkJE
QjVEQzUyMjdDQTBFQjAwOTE5NzcwIC8qIERvY3VtZW50U3RvcmFnZUFjY2Vzcy5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
RG9jdW1lbnRTdG9yYWdlQWNjZXNzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NkM0Qzk2REExQUQ0NDgzNTAwMzYzRjY0IC8qIEpTUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlYWRhYmxlQnl0
ZVN0cmVhbUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QzRD
OTZEQTFBRDQ0ODM1MDAzNjU2NzIgLyogSlNSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUmVhZGFibGVTdHJlYW1CWU9C
UmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZDNEM5NkRBMUFENDQ4
MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbURlZmF1bHRD
b250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1OTIxLDEwICsy
NTkyNSwxMCBAQAogCQkJCUNERTNBODU1MTdGNjAyMDQwMEM1QkUyMCAvKiBBdWRpb1RyYWNrUHJp
dmF0ZUFWRk9iakMubW0gKi8sCiAJCQkJQ0Q1NEE3NjAxODBGOUY3MDAwQjA3NkM5IC8qIEF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcCAqLywKIAkJCQlDRDU0QTc2MTE4MEY5
RjcwMDBCMDc2QzkgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCAqLywK
LQkJCQlDREVDQTg5OTFFREY0NDdEMDBEQ0IwOEIgLyogQVZBc3NldFRyYWNrVXRpbGl0aWVzLmgg
Ki8sCi0JCQkJQ0RFQ0E4OTgxRURGNDQ3RDAwRENCMDhCIC8qIEFWQXNzZXRUcmFja1V0aWxpdGll
cy5tbSAqLywKIAkJCQkwN0M4QUQxMjFEMDczRDYzMDA4N0M1Q0UgLyogQVZBc3NldE1JTUVUeXBl
Q2FjaGUuaCAqLywKIAkJCQkwN0M4QUQxMTFEMDczRDYzMDA4N0M1Q0UgLyogQVZBc3NldE1JTUVU
eXBlQ2FjaGUubW0gKi8sCisJCQkJQ0RFQ0E4OTkxRURGNDQ3RDAwRENCMDhCIC8qIEFWQXNzZXRU
cmFja1V0aWxpdGllcy5oICovLAorCQkJCUNERUNBODk4MUVERjQ0N0QwMERDQjA4QiAvKiBBVkFz
c2V0VHJhY2tVdGlsaXRpZXMubW0gKi8sCiAJCQkJQ0QxMUIzREYyMjdDQUFBOTAwMjNBRkM3IC8q
IEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUuaCAqLywKIAkJCQlDRDExQjNFMDIyN0NB
QUE5MDAyM0FGQzcgLyogQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5tbSAqLywKIAkJ
CQlDRDc4QTJFRTFGNzU2NDg2MDBERTM3MUIgLyogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakMuaCAqLywKQEAgLTI3MjI3LDYgKzI3MjMxLDkgQEAKIAkJCQlCQ0NGQkFFNzBCNTE1
MkVEMDAwMUYxRDcgLyogRG9jdW1lbnRQYXJzZXIuaCAqLywKIAkJCQlBRDZFNzFBQTE2Njg4OTlE
MDAzMjBDMTMgLyogRG9jdW1lbnRTaGFyZWRPYmplY3RQb29sLmNwcCAqLywKIAkJCQlBRDZFNzFB
QjE2Njg4OTlEMDAzMjBDMTMgLyogRG9jdW1lbnRTaGFyZWRPYmplY3RQb29sLmggKi8sCisJCQkJ
NkJEQjVEQzEyMjdCRDNCODAwOTE5NzcwIC8qIERvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHAgKi8s
CisJCQkJNkJEQjVEQzAyMjdCRDNCODAwOTE5NzcwIC8qIERvY3VtZW50U3RvcmFnZUFjY2Vzcy5o
ICovLAorCQkJCTZCREI1REM1MjI3Q0EwRUIwMDkxOTc3MCAvKiBEb2N1bWVudFN0b3JhZ2VBY2Nl
c3MuaWRsICovLAogCQkJCTg2RDk4MkY2MTI1QzE1NDAwMEFEOUUzRCAvKiBEb2N1bWVudFRpbWlu
Zy5oICovLAogCQkJCTdDRTdGQTVCMUVGODgyMzAwMDYwQzlENiAvKiBEb2N1bWVudFRvdWNoLmNw
cCAqLywKIAkJCQk3Q0U3RkE1OTFFRjg4MjMwMDA2MEM5RDYgLyogRG9jdW1lbnRUb3VjaC5oICov
LApAQCAtMjgyMzQsMTEgKzI4MjQxLDExIEBACiAJCQkJQzlENDY3MDUxRTYwQzQ2NTAwODE5NUZC
IC8qIEF1dG9wbGF5RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ1ODMwRDRFMTY3OUI0Rjgw
MEFDRjhDMyAvKiBBdXRvc2Nyb2xsQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThD
RkYwNEUwQTE1NEYwOTAwMEE0MjM0IC8qIEF1dG9UYWJsZUxheW91dC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMDdGNEU5MzMyMEIzNTg3RjAwMkUzODAzIC8qIEFWQXNzZXRNSU1FVHlwZUNhY2hlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDREVDQTg5QjFFREY0NDdEMDBEQ0IwOEIgLyogQVZBc3NldFRy
YWNrVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREM2NzUyNzFFQUVBOUQ0MDA3MjdD
ODQgLyogQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
REM2NzUyMzFFQUVBOUI3MDA3MjdDODQgLyogQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcwMzYzRTIxODFBMUNEQzAwQzA3NEE1IC8qIEFW
Q2FwdHVyZURldmljZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTA3RjRFOTMzMjBCMzU4
N0YwMDJFMzgwMyAvKiBBVkFzc2V0TUlNRVR5cGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Q0QzMzZGNjIxN0Y5RjY0NzAwREREQ0QwIC8qIEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwuaCBp
biBIZWFkZXJzICovLAogCQkJCTA3MDM2M0U2MTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2Fw
dHVyZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBRTIxMkQyMUFCOUVFQjAwODY5Mjgz
IC8qIEFYSXNvbGF0ZWRUcmVlLmggaW4gSGVhZGVycyAqLywKQEAgLTI4Nzk1LDYgKzI4ODAyLDcg
QEAKIAkJCQlCQ0NGQkFFODBCNTE1MkVEMDAwMUYxRDcgLyogRG9jdW1lbnRQYXJzZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTRBNEY0OEFBMTZCMERGQzAwMEVEQkIyOSAvKiBEb2N1bWVudFJ1bGVT
ZXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDZFNzFBRDE2Njg4OTlEMDAzMjBDMTMgLyogRG9j
dW1lbnRTaGFyZWRPYmplY3RQb29sLmggaW4gSGVhZGVycyAqLywKKwkJCQk2QkRCNURDMjIyN0JE
M0I4MDA5MTk3NzAgLyogRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwQjkwNTYxQTBGMjU3OEJGMDA5NUZGNkEgLyogRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3MTAyNUVEMDFGOTlGMENFMDA0QTI1MEMgLyogRG9jdW1lbnRU
aW1lbGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzE3MjlGN0IyMEYzQkE0OTAwODAxQ0U2IC8q
IERvY3VtZW50VGltZWxpbmVPcHRpb25zLmggaW4gSGVhZGVycyAqLywKQEAgLTMyNTc1LDEwICsz
MjU4MywxMSBAQAogCQkJCUNERTNBODU3MTdGNjAyMDQwMEM1QkUyMCAvKiBBdWRpb1RyYWNrUHJp
dmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDU0QTc2MjE4MEY5RjcwMDBCMDc2
QzkgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTVGNkUxNkIxMzJFRDQ2RTAwOEVEQUUzIC8qIEF1dG9jYXBpdGFsaXplLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTA3MTk0MjdGMUQwODhGMjEwMDJBQTUxRCAvKiBBVkFzc2V0TUlN
RVR5cGVDYWNoZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNERUNBODlBMUVERjQ0N0QwMERDQjA4
QiAvKiBBVkFzc2V0VHJhY2tVdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREM2NzUy
MjFFQUVBOUI3MDA3MjdDODQgLyogQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTA3MDM2M0UzMTgxQTFDREMwMEMwNzRBNSAvKiBBVkNhcHR1
cmVEZXZpY2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMDcxOTQyN0YxRDA4OEYyMTAw
MkFBNTFEIC8qIEFWQXNzZXRNSU1FVHlwZUNhY2hlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0Qx
MUIzRTEyMjdDRTZGMzAwMjNBRkM3IC8qIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDMzNkY2MTE3RjlGNjQ3MDBERERDRDAgLyogQVZUcmFj
a1ByaXZhdGVBVkZPYmpDSW1wbC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3MDM2M0U3MTgxQTFD
REMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTdBNDUwMzJGMThEQjcxNzIwMDM3N0IzNCAvKiBCdWZmZXJlZExpbmVSZWFkZXIuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0zMzAyMSw3ICszMzAzMCw2IEBACiAJCQkJREVDQTgwMzkxRjlGRUQ2QTAw
RTNCNjYxIC8qIFVuaWZpZWRTb3VyY2UyNDguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREVDQTgw
M0ExRjlGRUQ2QTAwRTNCNjYxIC8qIFVuaWZpZWRTb3VyY2UyNDkuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJREVDQTgwM0IxRjlGRUQ2QTAwRTNCNjYxIC8qIFVuaWZpZWRTb3VyY2UyNTAuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJQ0QxMUIzRTEyMjdDRTZGMzAwMjNBRkM3IC8qIEFWU3RyZWFtRGF0
YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlERUNBODAzQzFGOUZF
RDZBMDBFM0I2NjEgLyogVW5pZmllZFNvdXJjZTI1MS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlE
RUNBODAzRDFGOUZFRDZBMDBFM0I2NjEgLyogVW5pZmllZFNvdXJjZTI1Mi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlERUNBODAzRTFGOUZFRDZBMDBFM0I2NjEgLyogVW5pZmllZFNvdXJjZTI1My5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGNlNDI5Mjc3Yzdl
YWM2MDAyMjM3NWQ5Y2I4OWU4ZDY1MWQ0M2RhYTAuLjg2YTJhYmQ1NWIzOWUzZTQ3NjcxNWQ0ZjAx
ZjRhODljODM0NTA1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTEyLDcgKzExMiw2
IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW50
ZXJzZWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2Uu
aCIKLSNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTTGF6eUV2
ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiS2V5
ZnJhbWVFZmZlY3QuaCIKQEAgLTc3MzEsMTQ3ICs3NzMwLDYgQEAgT3B0aW9uYWw8dWludDY0X3Q+
IERvY3VtZW50OjpwYWdlSUQoKSBjb25zdAogICAgIHJldHVybiBtX2ZyYW1lLT5sb2FkZXIoKS5j
bGllbnQoKS5wYWdlSUQoKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6aGFzU3RvcmFnZUFjY2VzcyhS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCi17Ci0gICAgQVNTRVJUKHNldHRpbmdzKCku
c3RvcmFnZUFjY2Vzc0FQSUVuYWJsZWQoKSk7Ci0KLSNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQotICAgIGlmIChtX2ZyYW1lICYmIGhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNj
ZXNzKCkpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPih0cnVlKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghbV9mcmFtZSB8fCBzZWN1cml0eU9yaWdp
bigpLmlzVW5pcXVlKCkpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPihm
YWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKG1fZnJhbWUtPmlz
TWFpbkZyYW1lKCkpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPih0cnVl
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBhdXRvJiBzZWN1cml0eU9yaWdp
biA9IHRoaXMtPnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgYXV0byYgdG9wU2VjdXJpdHlPcmlnaW4g
PSB0b3BEb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgaWYgKHNlY3VyaXR5T3JpZ2lu
LmVxdWFsKCZ0b3BTZWN1cml0eU9yaWdpbikpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJ
RExCb29sZWFuPih0cnVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8gZnJh
bWVJRCA9IG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKTsKLSAgICBhdXRvIHBh
Z2VJRCA9IG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwotICAgIGlmICghZnJh
bWVJRCB8fCAhcGFnZUlEKSB7Ci0gICAgICAgIHByb21pc2UtPnJlamVjdCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCkpIHsKLSAg
ICAgICAgYXV0byBpZnJhbWVIb3N0ID0gc2VjdXJpdHlPcmlnaW4uaG9zdCgpOwotICAgICAgICBh
dXRvIHRvcEhvc3QgPSB0b3BTZWN1cml0eU9yaWdpbi5ob3N0KCk7Ci0gICAgICAgIHBhZ2UtPmNo
cm9tZSgpLmNsaWVudCgpLmhhc1N0b3JhZ2VBY2Nlc3MoV1RGTW92ZShpZnJhbWVIb3N0KSwgV1RG
TW92ZSh0b3BIb3N0KSwgZnJhbWVJRC52YWx1ZSgpLCBwYWdlSUQudmFsdWUoKSwgW2RvY3VtZW50
UmVmZXJlbmNlID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KV0gKGJvb2wgaGFzQWNjZXNzKSB7Ci0gICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBk
b2N1bWVudFJlZmVyZW5jZS5nZXQoKTsKLSAgICAgICAgICAgIGlmICghZG9jdW1lbnQpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBwcm9taXNlLT5y
ZXNvbHZlPElETEJvb2xlYW4+KGhhc0FjY2Vzcyk7Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotI2VuZGlmCi0KLSAgICBwcm9taXNlLT5yZWplY3QoKTsKLX0KLQotdm9pZCBE
b2N1bWVudDo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXNlKQotewotICAgIEFTU0VSVChzZXR0aW5ncygpLnN0b3JhZ2VBY2Nlc3NBUElFbmFibGVkKCkp
OwotICAgIAotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgaWYgKG1f
ZnJhbWUgJiYgaGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MoKSkgewotICAgICAgICBwcm9t
aXNlLT5yZXNvbHZlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKCFt
X2ZyYW1lIHx8IHNlY3VyaXR5T3JpZ2luKCkuaXNVbmlxdWUoKSkgewotICAgICAgICBwcm9taXNl
LT5yZWplY3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBpZiAobV9mcmFt
ZS0+aXNNYWluRnJhbWUoKSkgewotICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgYXV0byYgdG9wRG9jdW1lbnQgPSB0aGlzLT50b3BE
b2N1bWVudCgpOwotICAgIGF1dG8mIHRvcFNlY3VyaXR5T3JpZ2luID0gdG9wRG9jdW1lbnQuc2Vj
dXJpdHlPcmlnaW4oKTsKLSAgICBhdXRvJiBzZWN1cml0eU9yaWdpbiA9IHRoaXMtPnNlY3VyaXR5
T3JpZ2luKCk7Ci0gICAgaWYgKHNlY3VyaXR5T3JpZ2luLmVxdWFsKCZ0b3BTZWN1cml0eU9yaWdp
bikpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIAotICAgIC8vIElmIHRoZXJlIGlzIGEgc2FuZGJveCwgaXQgaGFzIHRvIGFsbG93IHRo
ZSBzdG9yYWdlIGFjY2VzcyBBUEkgdG8gYmUgY2FsbGVkLgotICAgIGlmIChzYW5kYm94RmxhZ3Mo
KSAhPSBTYW5kYm94Tm9uZSAmJiBpc1NhbmRib3hlZChTYW5kYm94U3RvcmFnZUFjY2Vzc0J5VXNl
ckFjdGl2YXRpb24pKSB7Ci0gICAgICAgIHByb21pc2UtPnJlamVjdCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgLy8gVGhlIGlmcmFtZSBoYXMgdG8gYmUgYSBkaXJlY3QgY2hpbGQg
b2YgdGhlIHRvcCBkb2N1bWVudC4KLSAgICBpZiAoJnRvcERvY3VtZW50ICE9IHBhcmVudERvY3Vt
ZW50KCkpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVqZWN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoIVVzZXJHZXN0dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1
cmUoKSkgewotICAgICAgICBwcm9taXNlLT5yZWplY3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICAKLSAgICBhdXRvIGlmcmFtZUhvc3QgPSBzZWN1cml0eU9yaWdpbi5ob3N0KCk7Ci0g
ICAgYXV0byB0b3BIb3N0ID0gdG9wU2VjdXJpdHlPcmlnaW4uaG9zdCgpOwotCi0gICAgUGFnZSog
cGFnZSA9IHRoaXMtPnBhZ2UoKTsKLSAgICBhdXRvIGZyYW1lSUQgPSBtX2ZyYW1lLT5sb2FkZXIo
KS5jbGllbnQoKS5mcmFtZUlEKCk7Ci0gICAgYXV0byBwYWdlSUQgPSBtX2ZyYW1lLT5sb2FkZXIo
KS5jbGllbnQoKS5wYWdlSUQoKTsKLSAgICBpZiAoIXBhZ2UgfHwgIWZyYW1lSUQgfHwgIXBhZ2VJ
RCkgewotICAgICAgICBwcm9taXNlLT5yZWplY3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnJlcXVlc3RTdG9yYWdlQWNjZXNzKFdURk1v
dmUoaWZyYW1lSG9zdCksIFdURk1vdmUodG9wSG9zdCksIGZyYW1lSUQudmFsdWUoKSwgcGFnZUlE
LnZhbHVlKCksIFtkb2N1bWVudFJlZmVyZW5jZSA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSldIChib29sIHdhc0dyYW50ZWQpIG11dGFibGUgewotICAgICAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBkb2N1bWVudFJlZmVyZW5jZS5nZXQoKTsKLSAgICAgICAg
aWYgKCFkb2N1bWVudCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIGlm
ICh3YXNHcmFudGVkKSB7Ci0gICAgICAgICAgICBkb2N1bWVudC0+c2V0SGFzRnJhbWVTcGVjaWZp
Y1N0b3JhZ2VBY2Nlc3ModHJ1ZSk7Ci0gICAgICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRo
cmVhZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Vm9pZE1pY3JvdGFzaz4oW2RvY3Vt
ZW50UmVmZXJlbmNlID0gbWFrZVdlYWtQdHIoKmRvY3VtZW50KV0gKCkgewotICAgICAgICAgICAg
ICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGRvY3VtZW50UmVmZXJlbmNlLmdldCgpKQotICAgICAg
ICAgICAgICAgICAgICBkb2N1bWVudC0+ZW5hYmxlVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCk7
Ci0gICAgICAgICAgICB9KSk7Ci0gICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7Ci0gICAg
ICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8Vm9pZE1pY3JvdGFzaz4oW2RvY3VtZW50UmVmZXJlbmNlID0gV1RGTW92ZShkb2N1
bWVudFJlZmVyZW5jZSldICgpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQg
PSBkb2N1bWVudFJlZmVyZW5jZS5nZXQoKSkKLSAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQt
PmNvbnN1bWVUZW1wb3JhcnlUaW1lVXNlckdlc3R1cmUoKTsKLSAgICAgICAgICAgIH0pKTsKLSAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoKTsKLSAgICB9KTsKLSNl
bHNlCi0gICAgcHJvbWlzZS0+cmVqZWN0KCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBEb2N1bWVudDo6
ZW5hYmxlVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCkKLXsKLSAgICBtX3RlbXBvcmFyeVVzZXJH
ZXN0dXJlID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyR2VzdHVyZUluZGljYXRvcj4oUHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlLCB0aGlzKTsKLX0KLQotdm9pZCBEb2N1bWVudDo6Y29uc3VtZVRlbXBvcmFy
eVRpbWVVc2VyR2VzdHVyZSgpCi17Ci0gICAgbV90ZW1wb3JhcnlVc2VyR2VzdHVyZSA9IG51bGxw
dHI7Ci19Ci0KIHZvaWQgRG9jdW1lbnQ6OnJlZ2lzdGVyQXJ0aWNsZUVsZW1lbnQoRWxlbWVudCYg
YXJ0aWNsZSkKIHsKICAgICBtX2FydGljbGVFbGVtZW50cy5hZGQoJmFydGljbGUpOwpAQCAtNzkz
OSwxNyArNzc5Nyw2IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZU1haW5BcnRpY2xlRWxlbWVudEFm
dGVyTGF5b3V0KCkKIH0KIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi1i
b29sIERvY3VtZW50OjpoYXNGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2VzcygpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fZnJhbWUgJiYgbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuaGFzRnJhbWVT
cGVjaWZpY1N0b3JhZ2VBY2Nlc3MoKTsKLX0KLSAgICAKLXZvaWQgRG9jdW1lbnQ6OnNldEhhc0Zy
YW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKGJvb2wgdmFsdWUpCi17Ci0gICAgaWYgKG1fZnJhbWUp
Ci0gICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnNldEhhc0ZyYW1lU3BlY2lmaWNT
dG9yYWdlQWNjZXNzKHZhbHVlKTsKLX0KLQogYm9vbCBEb2N1bWVudDo6aGFzUmVxdWVzdGVkUGFn
ZVNwZWNpZmljU3RvcmFnZUFjY2Vzc1dpdGhVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGRvbWFpbikKIHsKICAgICByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpblJlcXVl
c3RlZFBhZ2VTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NXaXRoVXNlckludGVyYWN0aW9uID09IGRvbWFp
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYTFmMWYzMDg1NTMyZWM0Y2JmNjkxODkwOTZjNDg2
YjkxZDAwYmQ5OC4uMTM1ZWYwYjZjZDhjZTU1MTVjZTQ3MWVhYzIwMjNmZmE4ZTQ4NzU3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKQEAgLTEwOCw3ICsxMDgsNiBAQCBjbGFzcyBET01XaW5kb3c7CiBj
bGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBEYXRhYmFzZTsKIGNsYXNzIERhdGFiYXNlVGhy
ZWFkOwotY2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNs
YXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOwpAQCAt
MTQ2NSwxMCArMTQ2NCw2IEBAIHB1YmxpYzoKIAogICAgIExvZ2dlciYgbG9nZ2VyKCk7CiAKLSAg
ICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwYXNzZWRQcm9t
aXNlKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+
JiYgcGFzc2VkUHJvbWlzZSk7Ci0gICAgdm9pZCBzZXRVc2VyR3JhbnRzU3RvcmFnZUFjY2Vzc092
ZXJyaWRlKGJvb2wgdmFsdWUpIHsgbV9ncmFudFN0b3JhZ2VBY2Nlc3NPdmVycmlkZSA9IHZhbHVl
OyB9Ci0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbnNvbGVNZXNzYWdlTGlzdGVuZXIo
UmVmUHRyPFN0cmluZ0NhbGxiYWNrPiYmKTsgLy8gRm9yIHRlc3RpbmcuCiAKICAgICBXRUJDT1JF
X0VYUE9SVCBEb2N1bWVudFRpbWVsaW5lJiB0aW1lbGluZSgpOwpAQCAtMTUwMiw4ICsxNDk3LDYg
QEAgcHVibGljOgogCiAgICAgU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmlu
Zyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBj
b25zdCBVUkwmKTsKIAotICAgIHZvaWQgY29uc3VtZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSgp
OwotCiAgICAgdm9pZCByZWdpc3RlckFydGljbGVFbGVtZW50KEVsZW1lbnQmKTsKICAgICB2b2lk
IHVucmVnaXN0ZXJBcnRpY2xlRWxlbWVudChFbGVtZW50Jik7CiAgICAgdm9pZCB1cGRhdGVNYWlu
QXJ0aWNsZUVsZW1lbnRBZnRlckxheW91dCgpOwpAQCAtMTY0NSw4ICsxNjM4LDYgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgcGxhdGZvcm1TdXNwZW5kT3JTdG9wQWN0aXZlRE9NT2JqZWN0cygpOwog
Ci0gICAgdm9pZCBlbmFibGVUZW1wb3JhcnlUaW1lVXNlckdlc3R1cmUoKTsKLQogICAgIGJvb2wg
aXNCb2R5UG90ZW50aWFsbHlTY3JvbGxhYmxlKEhUTUxCb2R5RWxlbWVudCYpOwogCiAgICAgY29u
c3QgUmVmPFNldHRpbmdzPiBtX3NldHRpbmdzOwpAQCAtMTg1MSwxMSArMTg0Miw2IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGRpZExvZ01lc3NhZ2UoY29uc3QgV1RGTG9nQ2hhbm5lbCYsIFdURkxv
Z0xldmVsLCBWZWN0b3I8SlNPTkxvZ1ZhbHVlPiYmKSBmaW5hbDsKIAotI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgYm9vbCBoYXNGcmFtZVNwZWNpZmljU3RvcmFnZUFj
Y2VzcygpIGNvbnN0OwotICAgIHZvaWQgc2V0SGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3Mo
Ym9vbCk7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGV2aWNlTW90aW9uQ2xpZW50
PiBtX2RldmljZU1vdGlvbkNsaWVudDsKQEAgLTIwMzMsOCArMjAxOSw2IEBAIHByaXZhdGU6CiAK
ICAgICBzdGF0aWMgYm9vbCBoYXNFdmVyQ3JlYXRlZEFuQVhPYmplY3RDYWNoZTsKIAotICAgIGJv
b2wgbV9ncmFudFN0b3JhZ2VBY2Nlc3NPdmVycmlkZSB7IGZhbHNlIH07Ci0KICAgICBSZWZQdHI8
RG9jdW1lbnRUaW1lbGluZT4gbV90aW1lbGluZTsKICAgICBEb2N1bWVudElkZW50aWZpZXIgbV9p
ZGVudGlmaWVyOwogCkBAIC0yMDQ4LDggKzIwMzIsNiBAQCBwcml2YXRlOgogICAgIFJlZ2lzdHJh
YmxlRG9tYWluIG1fcmVnaXN0cmFibGVEb21haW5SZXF1ZXN0ZWRQYWdlU3BlY2lmaWNTdG9yYWdl
QWNjZXNzV2l0aFVzZXJJbnRlcmFjdGlvbiB7IH07CiAjZW5kaWYKICAgICAKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8VXNlckdlc3R1cmVJbmRpY2F0b3I+IG1fdGVtcG9yYXJ5VXNlckdlc3R1cmU7Ci0K
ICAgICBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQgbV9DU1NSZWdpc3RlcmVkUHJvcGVy
dHlTZXQ7CiAKICNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aWRsCmluZGV4IDQzYjkxMTAyODI5NGFkM2ZiZjE3ODBkNzlhMDMyYjhlMDk1MzM0Y2UuLjU2NDli
NmMzYzcwODUwYTljZTQ2ODBlYzE4ZGU1YmZkYjIzMjcxYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmlkbApAQCAtMTczLDEwICsxNzMsNiBAQCB0eXBlZGVmICgKICAgICAvLyBGSVhNRTogVGhpcyBp
cyBub3Qgc3RhbmRhcmQgYW5kIGhhcyBiZWVuIGRyb3BwZWQgZnJvbSBCbGluayBhbHJlYWR5Lgog
ICAgIFJlbmRlcmluZ0NvbnRleHQ/IGdldENTU0NhbnZhc0NvbnRleHQoRE9NU3RyaW5nIGNvbnRl
eHRJZCwgRE9NU3RyaW5nIG5hbWUsIGxvbmcgd2lkdGgsIGxvbmcgaGVpZ2h0KTsKIAotICAgIC8v
IE5vbiBzdGFuZGFyZCwgdG8gYnJpbmcgdXAgd2l0aCBzdGFuZGFyZHMgd29ya2luZyBncm91cC4K
LSAgICBbRW5hYmxlZEJ5U2V0dGluZz1TdG9yYWdlQWNjZXNzQVBJXSBQcm9taXNlPGJvb2w+IGhh
c1N0b3JhZ2VBY2Nlc3MoKTsKLSAgICBbRW5hYmxlZEJ5U2V0dGluZz1TdG9yYWdlQWNjZXNzQVBJ
XSBQcm9taXNlPHZvaWQ+IHJlcXVlc3RTdG9yYWdlQWNjZXNzKCk7Ci0KICAgICAvLyBPYnNvbGV0
ZSBmZWF0dXJlcyBmcm9tIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL29i
c29sZXRlLmh0bWwKIAogICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1F
bXB0eVN0cmluZ10gRE9NU3RyaW5nIGZnQ29sb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudFN0b3JhZ2VBY2Nlc3MuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkMWY4YmJhOWM0NmMwZTg3YTI2ZmU1
MDAyYjM2MTRjOGQ4NzE5YzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcApAQCAtMCwwICsxLDIzMSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaCIK
KworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisKKyNpbmNsdWRlICJDaHJv
bWUuaCIKKyNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgor
I2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJG
cmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCisj
aW5jbHVkZSAiTWljcm90YXNrcy5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZWdp
c3RyYWJsZURvbWFpbi5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAi
U2V0dGluZ3MuaCIKKyNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK0RvY3VtZW50U3RvcmFnZUFjY2VzcyogRG9jdW1lbnRTdG9yYWdlQWNj
ZXNzOjpmcm9tKERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBhdXRvKiBzdXBwbGVtZW50ID0g
c3RhdGljX2Nhc3Q8RG9jdW1lbnRTdG9yYWdlQWNjZXNzKj4oU3VwcGxlbWVudDxEb2N1bWVudD46
OmZyb20oJmRvY3VtZW50LCBzdXBwbGVtZW50TmFtZSgpKSk7CisgICAgaWYgKCFzdXBwbGVtZW50
KSB7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RG9jdW1l
bnRTdG9yYWdlQWNjZXNzPihkb2N1bWVudCk7CisgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBw
bGVtZW50LmdldCgpOworICAgICAgICBwcm92aWRlVG8oJmRvY3VtZW50LCBzdXBwbGVtZW50TmFt
ZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKKyAgICB9CisgICAgcmV0dXJuIHN1cHBsZW1l
bnQ7Cit9CisKK2NvbnN0IGNoYXIqIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6c3VwcGxlbWVudE5h
bWUoKQoreworICAgIHJldHVybiAiRG9jdW1lbnRTdG9yYWdlQWNjZXNzIl9zOworfQorCit2b2lk
IERvY3VtZW50U3RvcmFnZUFjY2Vzczo6aGFzU3RvcmFnZUFjY2VzcyhEb2N1bWVudCYgZG9jdW1l
bnQsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3sKKyAgICBEb2N1bWVudFN0b3Jh
Z2VBY2Nlc3M6OmZyb20oZG9jdW1lbnQpLT5oYXNTdG9yYWdlQWNjZXNzKFdURk1vdmUocHJvbWlz
ZSkpOworfQorCit2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCit7
CisgICAgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpmcm9tKGRvY3VtZW50KS0+cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MoV1RGTW92ZShwcm9taXNlKSk7Cit9CisKK3ZvaWQgRG9jdW1lbnRTdG9yYWdlQWNj
ZXNzOjpoYXNTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3sK
KyAgICBBU1NFUlQobV9kb2N1bWVudC5zZXR0aW5ncygpLnN0b3JhZ2VBY2Nlc3NBUElFbmFibGVk
KCkpOworCisgICAgaWYgKG1fZG9jdW1lbnQuZnJhbWUoKSAmJiBoYXNGcmFtZVNwZWNpZmljU3Rv
cmFnZUFjY2VzcygpKSB7CisgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4odHJ1
ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKCFtX2RvY3VtZW50LmZy
YW1lKCkgfHwgbV9kb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmlzVW5pcXVlKCkpIHsKKyAgICAg
ICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPihmYWxzZSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgaWYgKG1fZG9jdW1lbnQuZnJhbWUoKS0+aXNNYWluRnJhbWUoKSkg
eworICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEJvb2xlYW4+KHRydWUpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIAorICAgIGF1dG8mIHNlY3VyaXR5T3JpZ2luID0gbV9kb2N1bWVu
dC5zZWN1cml0eU9yaWdpbigpOworICAgIGF1dG8mIHRvcFNlY3VyaXR5T3JpZ2luID0gbV9kb2N1
bWVudC50b3BEb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCk7CisgICAgaWYgKHNlY3VyaXR5T3Jp
Z2luLmVxdWFsKCZ0b3BTZWN1cml0eU9yaWdpbikpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2
ZTxJRExCb29sZWFuPih0cnVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBh
dXRvIGZyYW1lSUQgPSBtX2RvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLmZyYW1l
SUQoKTsKKyAgICBhdXRvIHBhZ2VJRCA9IG1fZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuY2xp
ZW50KCkucGFnZUlEKCk7CisgICAgaWYgKCFmcmFtZUlEIHx8ICFwYWdlSUQpIHsKKyAgICAgICAg
cHJvbWlzZS0+cmVqZWN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYg
KFBhZ2UqIHBhZ2UgPSBtX2RvY3VtZW50LnBhZ2UoKSkgeworICAgICAgICBhdXRvIHN1YkZyYW1l
RG9tYWluID0gUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHNlY3Vy
aXR5T3JpZ2luLmhvc3QoKSk7CisgICAgICAgIGF1dG8gdG9wRnJhbWVEb21haW4gPSBSZWdpc3Ry
YWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QodG9wU2VjdXJpdHlPcmlnaW4uaG9z
dCgpKTsKKyAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuaGFzU3RvcmFnZUFjY2VzcyhX
VEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQu
dmFsdWUoKSwgcGFnZUlELnZhbHVlKCksIFtkb2N1bWVudFJlZmVyZW5jZSA9IG1ha2VXZWFrUHRy
KCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChib29sIGhhc0FjY2Vzcykgewor
ICAgICAgICAgICAgRG9jdW1lbnRTdG9yYWdlQWNjZXNzKiBkb2N1bWVudCA9IGRvY3VtZW50UmVm
ZXJlbmNlLmdldCgpOworICAgICAgICAgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURM
Qm9vbGVhbj4oaGFzQWNjZXNzKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgCisgICAgcHJvbWlzZS0+cmVqZWN0KCk7Cit9CisKK3ZvaWQgRG9jdW1lbnRTdG9yYWdl
QWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
c2UpCit7CisgICAgQVNTRVJUKG1fZG9jdW1lbnQuc2V0dGluZ3MoKS5zdG9yYWdlQWNjZXNzQVBJ
RW5hYmxlZCgpKTsKKyAgICAKKyAgICBpZiAobV9kb2N1bWVudC5mcmFtZSgpICYmIGhhc0ZyYW1l
U3BlY2lmaWNTdG9yYWdlQWNjZXNzKCkpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmICghbV9kb2N1bWVudC5mcmFtZSgp
IHx8IG1fZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5pc1VuaXF1ZSgpKSB7CisgICAgICAgIHBy
b21pc2UtPnJlamVjdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmICht
X2RvY3VtZW50LmZyYW1lKCktPmlzTWFpbkZyYW1lKCkpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVz
b2x2ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGF1dG8mIHRvcERvY3Vt
ZW50ID0gbV9kb2N1bWVudC50b3BEb2N1bWVudCgpOworICAgIGF1dG8mIHRvcFNlY3VyaXR5T3Jp
Z2luID0gdG9wRG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKTsKKyAgICBhdXRvJiBzZWN1cml0eU9y
aWdpbiA9IG1fZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKTsKKyAgICBpZiAoc2VjdXJpdHlPcmln
aW4uZXF1YWwoJnRvcFNlY3VyaXR5T3JpZ2luKSkgeworICAgICAgICBwcm9taXNlLT5yZXNvbHZl
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgLy8gSWYgdGhlcmUgaXMgYSBz
YW5kYm94LCBpdCBoYXMgdG8gYWxsb3cgdGhlIHN0b3JhZ2UgYWNjZXNzIEFQSSB0byBiZSBjYWxs
ZWQuCisgICAgaWYgKG1fZG9jdW1lbnQuc2FuZGJveEZsYWdzKCkgIT0gU2FuZGJveE5vbmUgJiYg
bV9kb2N1bWVudC5pc1NhbmRib3hlZChTYW5kYm94U3RvcmFnZUFjY2Vzc0J5VXNlckFjdGl2YXRp
b24pKSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdCgpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIAorICAgIC8vIFRoZSBpZnJhbWUgaGFzIHRvIGJlIGEgZGlyZWN0IGNoaWxkIG9mIHRo
ZSB0b3AgZG9jdW1lbnQuCisgICAgaWYgKCZ0b3BEb2N1bWVudCAhPSBtX2RvY3VtZW50LnBhcmVu
dERvY3VtZW50KCkpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgaWYgKCFVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKCkpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBQYWdlKiBwYWdlID0gbV9kb2N1bWVudC5wYWdlKCk7CisgICAg
YXV0byBmcmFtZUlEID0gbV9kb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFt
ZUlEKCk7CisgICAgYXV0byBwYWdlSUQgPSBtX2RvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLmNs
aWVudCgpLnBhZ2VJRCgpOworICAgIGlmICghcGFnZSB8fCAhZnJhbWVJRCB8fCAhcGFnZUlEKSB7
CisgICAgICAgIHByb21pc2UtPnJlamVjdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IAorICAgIGF1dG8gc3ViRnJhbWVEb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2Vk
Q3JlYXRlRnJvbUhvc3Qoc2VjdXJpdHlPcmlnaW4uaG9zdCgpKTsKKyAgICBhdXRvIHRvcEZyYW1l
RG9tYWluID0gUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHRvcFNl
Y3VyaXR5T3JpZ2luLmhvc3QoKSk7CisgICAgCisgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCku
cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9w
RnJhbWVEb21haW4pLCBmcmFtZUlELnZhbHVlKCksIHBhZ2VJRC52YWx1ZSgpLCBbZG9jdW1lbnRS
ZWZlcmVuY2UgPSBtYWtlV2Vha1B0cigqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
XSAoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duIHByb21wdFdhc1Nob3duKSBtdXRhYmxlIHsKKyAgICAgICAgRG9jdW1lbnRTdG9y
YWdlQWNjZXNzKiBkb2N1bWVudCA9IGRvY3VtZW50UmVmZXJlbmNlLmdldCgpOworICAgICAgICBp
ZiAoIWRvY3VtZW50KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIENvbnN1bWUg
dGhlIHVzZXIgZ2VzdHVyZSBvbmx5IGlmIHRoZSB1c2VyIGV4cGxpY2l0bHkgZGVuaWVkIGFjY2Vz
cy4KKyAgICAgICAgYm9vbCBzaG91bGRQcmVzZXJ2ZVVzZXJHZXN0dXJlID0gd2FzR3JhbnRlZCA9
PSBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVzIHx8IHByb21wdFdhc1Nob3duID09IFN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm87CisKKyAgICAgICAgaWYgKHNob3VsZFByZXNlcnZl
VXNlckdlc3R1cmUpIHsKKyAgICAgICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVl
dWUoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxWb2lkTWljcm90YXNrPihbZG9jdW1lbnRSZWZl
cmVuY2UgPSBtYWtlV2Vha1B0cigqZG9jdW1lbnQpXSAoKSB7CisgICAgICAgICAgICAgICAgaWYg
KGF1dG8qIGRvY3VtZW50ID0gZG9jdW1lbnRSZWZlcmVuY2UuZ2V0KCkpCisgICAgICAgICAgICAg
ICAgICAgIGRvY3VtZW50LT5lbmFibGVUZW1wb3JhcnlUaW1lVXNlckdlc3R1cmUoKTsKKyAgICAg
ICAgICAgIH0pKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh3YXNHcmFudGVkID09IFN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LT5zZXRIYXNG
cmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzcyh0cnVlKTsKKyAgICAgICAgICAgIHByb21pc2UtPnJl
c29sdmUoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoKTsK
KworICAgICAgICBpZiAoc2hvdWxkUHJlc2VydmVVc2VyR2VzdHVyZSkgeworICAgICAgICAgICAg
TWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PFZvaWRNaWNyb3Rhc2s+KFtkb2N1bWVudFJlZmVyZW5jZSA9IFdURk1vdmUoZG9jdW1lbnRSZWZl
cmVuY2UpXSAoKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZG9jdW1l
bnRSZWZlcmVuY2UuZ2V0KCkpCisgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LT5jb25zdW1l
VGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCk7CisgICAgICAgICAgICB9KSk7CisgICAgICAgIH0K
KyAgICB9KTsKK30KKwordm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OmVuYWJsZVRlbXBvcmFy
eVRpbWVVc2VyR2VzdHVyZSgpCit7CisgICAgbV90ZW1wb3JhcnlVc2VyR2VzdHVyZSA9IHN0ZDo6
bWFrZV91bmlxdWU8VXNlckdlc3R1cmVJbmRpY2F0b3I+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSwg
Jm1fZG9jdW1lbnQpOworfQorCit2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6Y29uc3VtZVRl
bXBvcmFyeVRpbWVVc2VyR2VzdHVyZSgpCit7CisgICAgbV90ZW1wb3JhcnlVc2VyR2VzdHVyZSA9
IG51bGxwdHI7Cit9CisKK2Jvb2wgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpoYXNGcmFtZVNwZWNp
ZmljU3RvcmFnZUFjY2VzcygpIGNvbnN0Cit7CisgICAgYXV0byogZnJhbWUgPSBtX2RvY3VtZW50
LmZyYW1lKCk7CisgICAgcmV0dXJuIGZyYW1lICYmIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5o
YXNGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2VzcygpOworfQorCit2b2lkIERvY3VtZW50U3RvcmFn
ZUFjY2Vzczo6c2V0SGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MoYm9vbCB2YWx1ZSkKK3sK
KyAgICBpZiAoYXV0byogZnJhbWUgPSBtX2RvY3VtZW50LmZyYW1lKCkpCisgICAgICAgIGZyYW1l
LT5sb2FkZXIoKS5jbGllbnQoKS5zZXRIYXNGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzcyh2YWx1
ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRTdG9yYWdlQWNjZXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdl
QWNjZXNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmE2ZjhjMTlkMzhhYWMzMzBjZWY1YWQ0ZDMzODc1YWU1MzE1
YTQ1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3Jh
Z2VBY2Nlc3MuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorCisjaW5jbHVkZSAiU3VwcGxl
bWVudGFibGUuaCIKKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIERlZmVycmVkUHJvbWlzZTsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgVXNl
ckdlc3R1cmVJbmRpY2F0b3I7CisKK2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQg
OiBib29sIHsKKyAgICBObywKKyAgICBZZXMKK307CisKK2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vz
c1Byb21wdFdhc1Nob3duIDogYm9vbCB7CisgICAgTm8sCisgICAgWWVzCit9OworCitjbGFzcyBE
b2N1bWVudFN0b3JhZ2VBY2Nlc3MgZmluYWwgOiBwdWJsaWMgU3VwcGxlbWVudDxEb2N1bWVudD4s
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEb2N1bWVudFN0b3JhZ2VBY2Nlc3M+IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBEb2N1bWVudFN0b3Jh
Z2VBY2Nlc3MoRG9jdW1lbnQmIGRvY3VtZW50KQorICAgICAgICA6IG1fZG9jdW1lbnQoZG9jdW1l
bnQpCisgICAgeworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoRG9j
dW1lbnQmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKKyAgICBzdGF0aWMgdm9pZCByZXF1ZXN0
U3RvcmFnZUFjY2VzcyhEb2N1bWVudCYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOworCitwcml2
YXRlOgorICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsK
KyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwor
ICAgIHN0YXRpYyBEb2N1bWVudFN0b3JhZ2VBY2Nlc3MqIGZyb20oRG9jdW1lbnQmKTsKKyAgICBz
dGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKKyAgICBib29sIGhhc0ZyYW1lU3Bl
Y2lmaWNTdG9yYWdlQWNjZXNzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRIYXNGcmFtZVNwZWNpZmlj
U3RvcmFnZUFjY2Vzcyhib29sKTsKKyAgICB2b2lkIGVuYWJsZVRlbXBvcmFyeVRpbWVVc2VyR2Vz
dHVyZSgpOworICAgIHZvaWQgY29uc3VtZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSgpOworCisg
ICAgc3RkOjp1bmlxdWVfcHRyPFVzZXJHZXN0dXJlSW5kaWNhdG9yPiBtX3RlbXBvcmFyeVVzZXJH
ZXN0dXJlOworICAgIAorICAgIERvY3VtZW50JiBtX2RvY3VtZW50OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3Mu
aWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5pZGwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGRlM2M1ZjIwYzc0NTRkZTRmMGY0YTMzOTcyZjdiMGMwMWU3NzRlMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaWRsCkBA
IC0wLDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9UkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTLAorXSBwYXJ0aWFsIGludGVyZmFjZSBEb2N1bWVudCB7CisgICAgUHJv
bWlzZTxib29sPiBoYXNTdG9yYWdlQWNjZXNzKCk7CisgICAgUHJvbWlzZTx2b2lkPiByZXF1ZXN0
U3RvcmFnZUFjY2VzcygpOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IGNk
ZGYxM2NhZTg4OTMwZTIzNmU5NDA5ZjkyZWZjMmZmZDQwYmY1ZDkuLjg3MWU0MTUyM2UwYmFlMjg3
NzRiNzliNmVhNmEzNTg0OWVjMjFlMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApA
QCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJt
aXNzaW9uU3RhdGUuaCIKICNpbmNsdWRlICJEaXNhYmxlZEFkYXB0YXRpb25zLmgiCiAjaW5jbHVk
ZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRTdG9yYWdlQWNj
ZXNzLmgiCiAjaW5jbHVkZSAiRm9jdXNEaXJlY3Rpb24uaCIKICNpbmNsdWRlICJGcmFtZUxvYWRl
ci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtNDAsNiArNDEsNyBAQAogI2lu
Y2x1ZGUgIk1lZGlhUHJvZHVjZXIuaCIKICNpbmNsdWRlICJQb3B1cE1lbnUuaCIKICNpbmNsdWRl
ICJQb3B1cE1lbnVDbGllbnQuaCIKKyNpbmNsdWRlICJSZWdpc3RyYWJsZURvbWFpbi5oIgogI2lu
Y2x1ZGUgIlJlbmRlckVtYmVkZGVkT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIK
ICNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRvci5oIgpAQCAtNDgzLDggKzQ4NSwxMCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydFByb2Nlc3NDUFVUaW1lKFNlY29uZHMsIEFj
dGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZykgeyB9CiAgICAgdmlydHVhbCBSZWZQdHI8SWNvbj4g
Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKiBmaWxlbmFtZXMgKi8p
ID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFN0cmluZyYmIC8qc3Vi
RnJhbWVIb3N0Ki8sIFN0cmluZyYmIC8qdG9wRnJhbWVIb3N0Ki8sIHVpbnQ2NF90IC8qZnJhbWVJ
RCovLCB1aW50NjRfdCAvKnBhZ2VJRCovLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQgKGJv
b2wpPiYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKGZhbHNlKTsgfQotICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiAvKnN1YkZyYW1lSG9zdCovLCBTdHJpbmcmJiAv
KnRvcEZyYW1lSG9zdCovLCB1aW50NjRfdCAvKmZyYW1lSUQqLywgdWludDY0X3QgLypwYWdlSUQq
LywgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJiBjYWxsYmFjaykgeyBjYWxs
YmFjayhmYWxzZSk7IH0KKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAg
IHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgLypzdWJG
cmFtZURvbWFpbiovLCBSZWdpc3RyYWJsZURvbWFpbiYmIC8qdG9wRnJhbWVEb21haW4qLywgdWlu
dDY0X3QgLypmcmFtZUlEKi8sIHVpbnQ2NF90IC8qcGFnZUlEKi8sIFdURjo6Q29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxl
cihmYWxzZSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVnaXN0
cmFibGVEb21haW4mJiAvKnN1YkZyYW1lRG9tYWluKi8sIFJlZ2lzdHJhYmxlRG9tYWluJiYgLyp0
b3BGcmFtZURvbWFpbiovLCB1aW50NjRfdCAvKmZyYW1lSUQqLywgdWludDY0X3QgLypwYWdlSUQq
LywgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBs
ZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpObywgU3RvcmFnZUFjY2Vzc1By
b21wdFdhc1Nob3duOjpObyk7IH0KKyNlbmRpZgogCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRB
VElPTikKICAgICB2aXJ0dWFsIHZvaWQgc2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1v
dGlvbkFjY2VzcyhGcmFtZSYsIGJvb2wgLyogbWF5UHJvbXB0ICovLCBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZSk+JiYg
Y2FsbGJhY2spIHsgY2FsbGJhY2soRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25T
dGF0ZTo6RGVuaWVkKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGQ0
Y2Q0MGI3ZWI4ZDY0Y2E4YTM3OTIyNDBkMWJjMjAyOWZlNzA5YzguLjNiNzYxNGJkMTA4ZTJiMDBj
ODZjMjUyZmYzZmYwZWE0YzNjODhhNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKQEAgLTQzNzcsMTUgKzQzNzcsNiBAQCB2b2lkIEludGVybmFsczo6c2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGUpCiAgICAgRGVwcmVjYXRlZEdsb2JhbFNldHRp
bmdzOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGUpOwogfQogCi12b2lk
IEludGVybmFsczo6c2V0VXNlckdyYW50c1N0b3JhZ2VBY2Nlc3MoYm9vbCB2YWx1ZSkKLXsKLSAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBjb250ZXh0RG9jdW1lbnQoKTsKLSAgICBpZiAoIWRvY3Vt
ZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBkb2N1bWVudC0+c2V0VXNlckdyYW50c1N0b3Jh
Z2VBY2Nlc3NPdmVycmlkZSh2YWx1ZSk7Ci19Ci0KIFN0cmluZyBJbnRlcm5hbHM6OmNvbXBvc2Vk
VHJlZUFzVGV4dChOb2RlJiBub2RlKQogewogICAgIGlmICghaXM8Q29udGFpbmVyTm9kZT4obm9k
ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA0OTExOTdhODZkMTc3NjgwZWJl
N2Q1ODljODQwY2E5MTNkNzYwYjkwLi43ZGM1Mjc2NjFmMTE0MTg0NWQyYTQzZWZhZTg4NTg5MzJm
MTUyZDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTYzOSw3ICs2MzksNiBA
QCBwdWJsaWM6CiAKICAgICBTdHJpbmcgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclVSTChjb25z
dCBET01VUkwmKTsKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJv
b2wpOwotICAgIHZvaWQgc2V0VXNlckdyYW50c1N0b3JhZ2VBY2Nlc3MoYm9vbCk7CiAKICNpZiBF
TkFCTEUoU1RSRUFNU19BUEkpCiAgICAgYm9vbCBpc1JlYWRhYmxlU3RyZWFtRGlzdHVyYmVkKEpT
Qzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbAppbmRleCA3OGQ0Yjg4YTY1MTgyMTU4YTM1Yzc4YjViY2QyZGRlYzQ1NTFlMzlkLi41Yzdi
MjM2MjY2MDhhYmI1MzY2OTRmMDk0NjhlZjNiODQ0N2JkYzZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsCkBAIC02MjUsNyArNjI1LDYgQEAgZW51bSBDb21wb3NpdGluZ1BvbGlj
eSB7CiAKICAgICBET01TdHJpbmcgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclVSTChET01VUkwg
dXJsKTsKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2xlYW4g
ZW5hYmxlKTsKLSAgICBbRW5hYmxlZEJ5U2V0dGluZz1TdG9yYWdlQWNjZXNzQVBJXSB2b2lkIHNl
dFVzZXJHcmFudHNTdG9yYWdlQWNjZXNzKGJvb2xlYW4gdmFsdWUpOwogCiAgICAgW01heVRocm93
RXhjZXB0aW9uXSB2b2lkIHNldENhblNob3dNb2RhbERpYWxvZ092ZXJyaWRlKGJvb2xlYW4gYWxs
b3cpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlLmNwcAppbmRleCA1YzI3NmFiYThiYmYyMGM5ZmZmYWViMTBmYTE4MWNmZGEzNzNmMjVk
Li5jNmI4NDVmNDRhMjBiYzI3YWZmMDM4NWM3MjViNWRmOTVjZjIyZTFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFT
dG9yZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9LZXllZENvZGluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Lmg+CkBAIC00NTMsNyArNDU0LDcgQEAgdW5zaWduZWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmRvbWFpbklEKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJgogICAgIHJldHVy
biBkb21haW5JRDsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6aW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwcyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzJiBsb2FkU3RhdGlzdGljcykKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6Omluc2VydERvbWFpblJlbGF0aW9uc2hpcHMoY29uc3QgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyYgbG9hZFN0YXRpc3RpY3MpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiAKQEAgLTc2OCw3ICs3NjksNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmCiAgICAg
fTsKIAogICAgIGF1dG8gdXNlcldhc1Byb21wdGVkRWFybGllciA9IGhhc1VzZXJHcmFudGVkU3Rv
cmFnZUFjY2Vzc1Rocm91Z2hQcm9tcHQoc3ViRnJhbWVTdGF0dXMuc2Vjb25kLCB0b3BGcmFtZURv
bWFpbik7Ci0gICAgaWYgKCF1c2VyV2FzUHJvbXB0ZWRFYXJsaWVyKSB7CisgICAgaWYgKHVzZXJX
YXNQcm9tcHRlZEVhcmxpZXIgPT0gU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObykgewog
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICBSRUxFQVNFX0xPR19JTkZPX0lGKGRl
YnVnTG9nZ2luZ0VuYWJsZWQoKSwgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnLCAiQWJvdXQg
dG8gYXNrIHRoZSB1c2VyIHdoZXRoZXIgdGhleSB3YW50IHRvIGdyYW50IHN0b3JhZ2UgYWNjZXNz
IHRvICV7cHVibGljfXMgdW5kZXIgJXtwdWJsaWN9cyBvciBub3QuIiwgc3ViRnJhbWVEb21haW4u
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdG9wRnJhbWVEb21haW4uc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAjZW5kaWYKQEAgLTc3Nyw3ICs3NzgsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYm
CiAgICAgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgaWYgKHVzZXJXYXNQcm9t
cHRlZEVhcmxpZXIpCisgICAgaWYgKHVzZXJXYXNQcm9tcHRlZEVhcmxpZXIgPT0gU3RvcmFnZUFj
Y2Vzc1Byb21wdFdhc1Nob3duOjpZZXMpCiAgICAgICAgIFJFTEVBU0VfTE9HX0lORk9fSUYoZGVi
dWdMb2dnaW5nRW5hYmxlZCgpLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWcsICJTdG9yYWdl
IGFjY2VzcyB3YXMgZ3JhbnRlZCB0byAle3B1YmxpY31zIHVuZGVyICV7cHVibGljfXMuIiwgc3Vi
RnJhbWVEb21haW4uc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdG9wRnJhbWVEb21haW4uc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKIApAQCAtNzg4LDggKzc4OSw4IEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1
YkZyYW1lRG9tYWluJiYKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAg
IAotICAgIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoc3ViRnJhbWVEb21haW4p
LCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgcGFnZUlELCB1c2VyV2FzUHJvbXB0
ZWRFYXJsaWVyLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKGJvb2wgd2FzR3JhbnRlZEFjY2VzcykgbXV0YWJsZSB7Ci0gICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHdhc0dyYW50ZWRBY2Nlc3MgPyBTdG9yYWdlQWNjZXNzU3RhdHVzOjpIYXNBY2Nlc3Mg
OiBTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5ub3RSZXF1ZXN0QWNjZXNzKTsKKyAgICBncmFudFN0
b3JhZ2VBY2Nlc3NJbnRlcm5hbChXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BG
cmFtZURvbWFpbiksIGZyYW1lSUQsIHBhZ2VJRCwgdXNlcldhc1Byb21wdGVkRWFybGllciwgW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIod2FzR3JhbnRlZCA9PSBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVzID8gU3RvcmFn
ZUFjY2Vzc1N0YXR1czo6SGFzQWNjZXNzIDogU3RvcmFnZUFjY2Vzc1N0YXR1czo6Q2Fubm90UmVx
dWVzdEFjY2Vzcyk7CiAgICAgfSk7CiB9CiAKQEAgLTgwOSw0NiArODEwLDQ2IEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5k
ZXJPcGVuZXIoRG9tYWluCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgUkVMRUFTRV9M
T0dfSU5GT19JRihkZWJ1Z0xvZ2dpbmdFbmFibGVkKCksIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
ZWJ1ZywgIltUZW1wb3JhcnkgY29tYmF0aWJpbGl0eSBmaXhdIFN0b3JhZ2UgYWNjZXNzIHdhcyBn
cmFudGVkIGZvciAle3B1YmxpY31zIHVuZGVyIG9wZW5lciBwYWdlIGZyb20gJXtwdWJsaWN9cywg
d2l0aCB1c2VyIGludGVyYWN0aW9uIGluIHRoZSBvcGVuZWQgd2luZG93LiIsIGRvbWFpbkluTmVl
ZE9mU3RvcmFnZUFjY2Vzcy5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBvcGVuZXJEb21haW4uc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKLSAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRl
cm5hbChXVEZNb3ZlKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyksIFdURk1vdmUob3BlbmVy
RG9tYWluKSwgV1RGOjpudWxsb3B0LCBvcGVuZXJQYWdlSUQsIGZhbHNlLCBbXShib29sKSB7IH0p
OworICAgIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoZG9tYWluSW5OZWVkT2ZT
dG9yYWdlQWNjZXNzKSwgV1RGTW92ZShvcGVuZXJEb21haW4pLCBXVEY6Om51bGxvcHQsIG9wZW5l
clBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObywgW10oU3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQpIHsgfSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9t
YWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkTm93LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYg
c3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHBy
b21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFu
dGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKIAotICAgIGlmICh1c2VyV2FzUHJvbXB0ZWROb3cpIHsKKyAgICBpZiAocHJvbXB0V2Fz
U2hvd24gPT0gU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpZZXMpIHsKICAgICAgICAgYXV0
byBzdWJGcmFtZVN0YXR1cyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxl
RG9tYWluKHN1YkZyYW1lRG9tYWluKTsKICAgICAgICAgQVNTRVJUKHN1YkZyYW1lU3RhdHVzLmZp
cnN0ID09IEFkZGVkUmVjb3JkOjpObyk7CiAgICAgICAgIEFTU0VSVChoYXNIYWRVc2VySW50ZXJh
Y3Rpb24oc3ViRnJhbWVEb21haW4sIE9wZXJhdGluZ0RhdGVzV2luZG93OjpMb25nKSk7CiAgICAg
ICAgIGluc2VydERvbWFpblJlbGF0aW9uc2hpcChtX3N0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1l
RG9tYWluc1N0YXRlbWVudCwgc3ViRnJhbWVTdGF0dXMuc2Vjb25kLCB0b3BGcmFtZURvbWFpbik7
CiAgICAgfQogCi0gICAgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShzdWJGcmFt
ZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBwYWdlSUQsIHVzZXJX
YXNQcm9tcHRlZE5vdywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGdyYW50U3Rv
cmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZy
YW1lRG9tYWluKSwgZnJhbWVJRCwgcGFnZUlELCBwcm9tcHRXYXNTaG93biwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmIHN1YkZy
YW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDxGcmFt
ZUlEPiBmcmFtZUlELCBQYWdlSUQgcGFnZUlELCBib29sIHVzZXJXYXNQcm9tcHRlZE5vd09yRWFy
bGllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVy
bmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9w
RnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJRCBwYWdlSUQsIFN0
b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bk5vd09yRWFybGllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAo
c3ViRnJhbWVEb21haW4gPT0gdG9wRnJhbWVEb21haW4pIHsKLSAgICAgICAgY2FsbGJhY2sodHJ1
ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZ
ZXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHVzZXJXYXNQcm9tcHRlZE5v
d09yRWFybGllcikgeworICAgIGlmIChwcm9tcHRXYXNTaG93bk5vd09yRWFybGllciA9PSBTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd246OlllcykgewogI2lmbmRlZiBOREVCVUcKICAgICAgICAg
YXV0byBzdWJGcmFtZVN0YXR1cyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJh
YmxlRG9tYWluKHN1YkZyYW1lRG9tYWluKTsKICAgICAgICAgQVNTRVJUKHN1YkZyYW1lU3RhdHVz
LmZpcnN0ID09IEFkZGVkUmVjb3JkOjpObyk7CiAgICAgICAgIEFTU0VSVChoYXNIYWRVc2VySW50
ZXJhY3Rpb24oc3ViRnJhbWVEb21haW4sIE9wZXJhdGluZ0RhdGVzV2luZG93OjpMb25nKSk7Ci0g
ICAgICAgIEFTU0VSVChoYXNVc2VyR3JhbnRlZFN0b3JhZ2VBY2Nlc3NUaHJvdWdoUHJvbXB0KHN1
YkZyYW1lU3RhdHVzLnNlY29uZCwgdG9wRnJhbWVEb21haW4pKTsKKyAgICAgICAgQVNTRVJUKGhh
c1VzZXJHcmFudGVkU3RvcmFnZUFjY2Vzc1Rocm91Z2hQcm9tcHQoc3ViRnJhbWVTdGF0dXMuc2Vj
b25kLCB0b3BGcmFtZURvbWFpbikgPT0gU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpZZXMp
OwogI2VuZGlmCiAgICAgICAgIHNldFVzZXJJbnRlcmFjdGlvbihzdWJGcmFtZURvbWFpbiwgdHJ1
ZSwgV2FsbFRpbWU6Om5vdygpKTsKICAgICB9CiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW3N1YkZyYW1lRG9tYWluID0gc3ViRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIHRvcEZy
YW1lRG9tYWluID0gdG9wRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIGZyYW1lSUQsIHBhZ2VJ
RCwgc3RvcmUgPSBtYWtlUmVmKHN0b3JlKCkpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XSgpIG11dGFibGUgewotICAgICAgICBzdG9yZS0+Y2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRs
ZXIoc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBzdG9yZSA9IHN0b3JlLmNvcHlSZWYoKV0oYm9vbCB2
YWx1ZSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBzdG9yZS0+c3RhdGlzdGljc1F1ZXVlKCkuZGlz
cGF0Y2goW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHZhbHVlXSAoKSBtdXRhYmxlIHsK
LSAgICAgICAgICAgICAgICBjYWxsYmFjayh2YWx1ZSk7CisgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCB0
b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCBmcmFtZUlELCBw
YWdlSUQsIHN0b3JlID0gbWFrZVJlZihzdG9yZSgpKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgc3RvcmUtPmNhbGxH
cmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwg
ZnJhbWVJRCwgcGFnZUlELCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgc3RvcmUgPSBzdG9yZS5jb3B5UmVmKCldKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
IHdhc0dyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgc3RvcmUtPnN0YXRpc3RpY3NRdWV1
ZSgpLmRpc3BhdGNoKFt3YXNHcmFudGVkLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcih3YXNHcmFudGVkKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9
KTsKQEAgLTEzNDksNyArMTM1MCw3IEBAIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpDb29raWVUcmVhdG1lbnRSZXN1bHQgUmVzb3VyY2VMb2FkU3RhdGlzdGljCiAgICAgcmV0
dXJuIGhhZFVzZXJJbnRlcmFjdGlvbiA/IENvb2tpZVRyZWF0bWVudFJlc3VsdDo6QmxvY2tBbmRL
ZWVwIDogQ29va2llVHJlYXRtZW50UmVzdWx0OjpCbG9ja0FuZFB1cmdlOwogfQogICAgIAotYm9v
bCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzVXNlckdyYW50ZWRTdG9y
YWdlQWNjZXNzVGhyb3VnaFByb21wdCh1bnNpZ25lZCByZXF1ZXN0aW5nRG9tYWluSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluKSBjb25zdAorU3RvcmFnZUFjY2Vz
c1Byb21wdFdhc1Nob3duIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNV
c2VyR3JhbnRlZFN0b3JhZ2VBY2Nlc3NUaHJvdWdoUHJvbXB0KHVuc2lnbmVkIHJlcXVlc3RpbmdE
b21haW5JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4pIGNvbnN0
CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTEzNTgsOSArMTM1OSw5
IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1VzZXJHcmFu
dGVkU3RvcmFnZUFjY2Vzc1Rocm91Z2hQcm9tCiAgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVu
dChtX2RhdGFiYXNlLCBtYWtlU3RyaW5nKCJTRUxFQ1QgQ09VTlQoKikgRlJPTSBTdG9yYWdlQWNj
ZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMgV0hFUkUgZG9tYWluSUQgPSAiLCBTdHJpbmc6Om51bWJl
cihyZXF1ZXN0aW5nRG9tYWluSUQpLCAiIEFORCB0b3BMZXZlbERvbWFpbklEID0gIiwgU3RyaW5n
OjpudW1iZXIoZmlyc3RQYXJ0eVByaW1hcnlEb21haW5JRCkpKTsKICAgICBpZiAoc3RhdGVtZW50
LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgc3RhdGVtZW50LnN0ZXAoKSAhPSBT
UUxJVEVfUk9XKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vOwogCi0gICAgcmV0dXJuICFzdGF0ZW1lbnQuZ2V0Q29s
dW1uSW50KDApOworICAgIHJldHVybiAhc3RhdGVtZW50LmdldENvbHVtbkludCgwKSA/IFN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6WWVzIDogU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3du
OjpObzsKIH0KIAogVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluc1RvQmxvY2soKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRleCAxMjk0NmE2YjA1
NzM3YjUyYmU4MDMxNWY0MmJlNGQ4NmY2MTc2MjRlLi5iYWIyYjdhZWFiNzYwZDJhM2UxZWNiZGU4
Yjc1ODUzNzU1ZTNhZTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmUuaApAQCAtMzksNiArMzksOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgU1FMaXRlRGF0YWJhc2U7CiBjbGFzcyBTUUxpdGVTdGF0ZW1lbnQ7CitlbnVtIGNs
YXNzIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biA6IGJvb2w7CitlbnVtIGNsYXNzIFN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkIDogYm9vbDsKIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
OwogfQogCkBAIC05MSw3ICs5Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaGFzU3RvcmFnZUFj
Y2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9u
YWw8RnJhbWVJRD4sIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBU
b3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZ3JhbnRTdG9yYWdl
QWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFBhZ2VJ
RCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWROb3csIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWlu
JiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFBhZ2VJRCwgV2ViQ29yZTo6U3RvcmFnZUFj
Y2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkKT4mJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGxvZ0ZyYW1lTmF2
aWdhdGlvbihjb25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwg
Y29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGJvb2wgaXNSZWRpcmVjdCwgYm9vbCBpc01haW5G
cmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJh
bWVEb21haW4mKSBvdmVycmlkZTsKQEAgLTEyOCw3ICsxMzAsNyBAQCBwcml2YXRlOgogICAgIFZl
Y3Rvcjx1bnNpZ25lZD4gZmluZEV4cGlyZWRVc2VySW50ZXJhY3Rpb25zKCkgY29uc3Q7CiAgICAg
dm9pZCBjbGVhckV4cGlyZWRVc2VySW50ZXJhY3Rpb25zKCk7CiAgICAgdm9pZCBjbGVhckdyYW5k
ZmF0aGVyaW5nKFZlY3Rvcjx1bnNpZ25lZD4mJik7Ci0gICAgYm9vbCBoYXNVc2VyR3JhbnRlZFN0
b3JhZ2VBY2Nlc3NUaHJvdWdoUHJvbXB0KHVuc2lnbmVkIGRvbWFpbklELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYpIGNvbnN0OworICAgIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNT
aG93biBoYXNVc2VyR3JhbnRlZFN0b3JhZ2VBY2Nlc3NUaHJvdWdoUHJvbXB0KHVuc2lnbmVkIGRv
bWFpbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OwogICAgIHZvaWQgaW5jcmVt
ZW50UmVjb3Jkc0RlbGV0ZWRDb3VudEZvckRvbWFpbnMoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFp
bj4mJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlY2xhc3NpZnlSZXNvdXJjZXMoKTsKQEAgLTE1
MCw3ICsxNTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoY29u
c3QgUmVnaXN0cmFibGVEb21haW4mLCBSZXNvdXJjZUxvYWRQcmV2YWxlbmNlKTsKICAgICB1bnNp
Z25lZCByZWN1cnNpdmVseUZpbmROb25QcmV2YWxlbnREb21haW5zVGhhdFJlZGlyZWN0ZWRUb1Ro
aXNEb21haW4odW5zaWduZWQgcHJpbWFyeURvbWFpbklELCBTdGRTZXQ8dW5zaWduZWQ+JiBub25Q
cmV2YWxlbnRSZWRpcmVjdGlvblNvdXJjZXMsIHVuc2lnbmVkIG51bWJlck9mUmVjdXJzaXZlQ2Fs
bHMpOwogICAgIHZvaWQgc2V0RG9tYWluc0FzUHJldmFsZW50KFN0ZFNldDx1bnNpZ25lZD4mJik7
Ci0gICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmLCBU
b3BGcmFtZURvbWFpbiYmLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBib29sIHVzZXJXYXNQ
cm9tcHRlZE5vd09yRWFybGllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Cisg
ICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmLCBUb3BG
cmFtZURvbWFpbiYmLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3Rv
cmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsKICAgICB2b2lkIG1hcmtBc1ByZXZhbGVudElmSGFz
UmVkaXJlY3RlZFRvUHJldmFsZW50KCk7CiAgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBl
bnN1cmVQcmV2YWxlbnRSZXNvdXJjZXNGb3JEZWJ1Z01vZGUoKSBvdmVycmlkZTsKICAgICB2b2lk
IHJlbW92ZURhdGFSZWNvcmRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCmluZGV4IDY5
Zjc5MjQzMGZmZTY1YjM2ODMzMzI1NzRjZjI0M2UwZmM3YjA5MTcuLmY4ZjY4ODI0NjQ0YzgyZTUz
ZGZiMzk2YjkwOWYwYmZhMTQ3Njg2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rl
bGVtZXRyeS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvS2V5ZWRDb2Rp
bmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oPgpAQCAtMjQ0LDcgKzI0NSw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFj
Y2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1CiAgICAgfQogCiAgICAgYXV0byB1c2VyV2FzUHJvbXB0
ZWRFYXJsaWVyID0gaGFzVXNlckdyYW50ZWRTdG9yYWdlQWNjZXNzVGhyb3VnaFByb21wdChzdWJG
cmFtZVN0YXRpc3RpYywgdG9wRnJhbWVEb21haW4pOwotICAgIGlmICghdXNlcldhc1Byb21wdGVk
RWFybGllcikgeworICAgIGlmICh1c2VyV2FzUHJvbXB0ZWRFYXJsaWVyID09IFN0b3JhZ2VBY2Nl
c3NQcm9tcHRXYXNTaG93bjo6Tm8pIHsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAg
ICAgUkVMRUFTRV9MT0dfSU5GT19JRihkZWJ1Z0xvZ2dpbmdFbmFibGVkKCksIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEZWJ1ZywgIkFib3V0IHRvIGFzayB0aGUgdXNlciB3aGV0aGVyIHRoZXkgd2Fu
dCB0byBncmFudCBzdG9yYWdlIGFjY2VzcyB0byAle3B1YmxpY31zIHVuZGVyICV7cHVibGljfXMg
b3Igbm90LiIsIHN1YkZyYW1lRG9tYWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHRvcEZyYW1l
RG9tYWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCkBAIC0yNTMsMTQgKzI1NCwx
NCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiBzdQogICAgIH0KIAogI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAotICAgIGlmICh1c2VyV2FzUHJvbXB0ZWRFYXJsaWVyKQorICAgIGlmICh1c2VyV2Fz
UHJvbXB0ZWRFYXJsaWVyID09IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6WWVzKQogICAg
ICAgICBSRUxFQVNFX0xPR19JTkZPX0lGKGRlYnVnTG9nZ2luZ0VuYWJsZWQoKSwgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RlYnVnLCAiU3RvcmFnZSBhY2Nlc3Mgd2FzIGdyYW50ZWQgdG8gJXtwdWJs
aWN9cyB1bmRlciAle3B1YmxpY31zLiIsIHN1YkZyYW1lRG9tYWluLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCksIHRvcEZyYW1lRG9tYWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAK
ICAgICBzdWJGcmFtZVN0YXRpc3RpYy50aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9y
YWdlQWNjZXNzQVBJKys7CiAKLSAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChXVEZNb3Zl
KHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIHBhZ2VJ
RCwgdXNlcldhc1Byb21wdGVkRWFybGllciwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildIChib29sIHdhc0dyYW50ZWRBY2Nlc3MpIG11dGFibGUgewotICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcih3YXNHcmFudGVkQWNjZXNzID8gU3RvcmFnZUFjY2Vzc1N0
YXR1czo6SGFzQWNjZXNzIDogU3RvcmFnZUFjY2Vzc1N0YXR1czo6Q2Fubm90UmVxdWVzdEFjY2Vz
cyk7CisgICAgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShzdWJGcmFtZURvbWFp
biksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBwYWdlSUQsIHVzZXJXYXNQcm9t
cHRlZEVhcmxpZXIsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRlZCkgbXV0YWJsZSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHdhc0dyYW50ZWQgPT0gU3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQ6OlllcyA/IFN0b3JhZ2VBY2Nlc3NTdGF0dXM6Okhhc0FjY2VzcyA6IFN0b3JhZ2VBY2Nlc3NT
dGF0dXM6OkNhbm5vdFJlcXVlc3RBY2Nlc3MpOwogICAgIH0pOwogfQogCkBAIC0yODIsNDEgKzI4
Myw0MSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0
b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5JbgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAogICAgIFJFTEVBU0VfTE9HX0lORk9fSUYoZGVidWdMb2dnaW5nRW5hYmxlZCgpLCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGVidWcsICJbVGVtcG9yYXJ5IGNvbWJhdGliaWxpdHkgZml4XSBTdG9y
YWdlIGFjY2VzcyB3YXMgZ3JhbnRlZCBmb3IgJXtwdWJsaWN9cyB1bmRlciBvcGVuZXIgcGFnZSBm
cm9tICV7cHVibGljfXMsIHdpdGggdXNlciBpbnRlcmFjdGlvbiBpbiB0aGUgb3BlbmVkIHdpbmRv
dy4iLCBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3Muc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwg
b3BlbmVyRG9tYWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCi0gICAgZ3JhbnRT
dG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3Mp
LCBXVEZNb3ZlKG9wZW5lckRvbWFpbiksIFdURjo6bnVsbG9wdCwgb3BlbmVyUGFnZUlELCBmYWxz
ZSwgW10oYm9vbCkgeyB9KTsKKyAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChXVEZNb3Zl
KGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyksIFdURk1vdmUob3BlbmVyRG9tYWluKSwgV1RG
OjpudWxsb3B0LCBvcGVuZXJQYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8s
IFtdKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKSB7IH0pOwogfQogCi12b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWlu
JiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWROb3csIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZy
YW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21h
aW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duIHByb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGlmICh1c2VyV2FzUHJvbXB0ZWROb3cpIHsKKyAgICBp
ZiAocHJvbXB0V2FzU2hvd24gPT0gU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpZZXMpIHsK
ICAgICAgICAgYXV0byYgc3ViRnJhbWVTdGF0aXN0aWMgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3Rp
Y3NGb3JSZWdpc3RyYWJsZURvbWFpbihzdWJGcmFtZURvbWFpbik7CiAgICAgICAgIEFTU0VSVChz
dWJGcmFtZVN0YXRpc3RpYy5oYWRVc2VySW50ZXJhY3Rpb24pOwogICAgICAgICBzdWJGcmFtZVN0
YXRpc3RpYy5zdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMuYWRkKHRvcEZyYW1lRG9t
YWluKTsKICAgICB9Ci0gICAgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShzdWJG
cmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBwYWdlSUQsIHVz
ZXJXYXNQcm9tcHRlZE5vdywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGdyYW50
U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRv
cEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgcGFnZUlELCBwcm9tcHRXYXNTaG93biwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiBzdWJG
cmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJh
bWVJRD4gZnJhbWVJRCwgUGFnZUlEIHBhZ2VJRCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWROb3dPckVh
cmxpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJu
YWwoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BG
cmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlEIHBhZ2VJRCwgU3Rv
cmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duTm93T3JFYXJsaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGlmIChz
dWJGcmFtZURvbWFpbiA9PSB0b3BGcmFtZURvbWFpbikgewotICAgICAgICBjYWxsYmFjayh0cnVl
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Olll
cyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAodXNlcldhc1Byb21wdGVkTm93
T3JFYXJsaWVyKSB7CisgICAgaWYgKHByb21wdFdhc1Nob3duTm93T3JFYXJsaWVyID09IFN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6WWVzKSB7CiAgICAgICAgIGF1dG8mIHN1YkZyYW1lU3Rh
dGlzdGljID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oc3Vi
RnJhbWVEb21haW4pOwogICAgICAgICBBU1NFUlQoc3ViRnJhbWVTdGF0aXN0aWMuaGFkVXNlcklu
dGVyYWN0aW9uKTsKICAgICAgICAgQVNTRVJUKHN1YkZyYW1lU3RhdGlzdGljLnN0b3JhZ2VBY2Nl
c3NVbmRlclRvcEZyYW1lRG9tYWlucy5jb250YWlucyh0b3BGcmFtZURvbWFpbikpOwogICAgICAg
ICBzdWJGcmFtZVN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA9IFdhbGxU
aW1lOjpub3coKTsKICAgICB9CiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N1YkZy
YW1lRG9tYWluID0gc3ViRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWlu
ID0gdG9wRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIGZyYW1lSUQsIHBhZ2VJRCwgc3RvcmUg
PSBtYWtlUmVmKHN0b3JlKCkpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFi
bGUgewotICAgICAgICBzdG9yZS0+Y2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoc3ViRnJh
bWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIFtjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCBzdG9yZSA9IHN0b3JlLmNvcHlSZWYoKV0oYm9vbCB2YWx1ZSkgbXV0
YWJsZSB7Ci0gICAgICAgICAgICBzdG9yZS0+c3RhdGlzdGljc1F1ZXVlKCkuZGlzcGF0Y2goW2Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHZhbHVlXSAoKSBtdXRhYmxlIHsKLSAgICAgICAg
ICAgICAgICBjYWxsYmFjayh2YWx1ZSk7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtz
dWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCB0b3BGcmFtZURv
bWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCBmcmFtZUlELCBwYWdlSUQsIHN0
b3JlID0gbWFrZVJlZihzdG9yZSgpKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgc3RvcmUtPmNhbGxHcmFudFN0b3Jh
Z2VBY2Nlc3NIYW5kbGVyKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRCwg
cGFnZUlELCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
c3RvcmUgPSBzdG9yZS5jb3B5UmVmKCldKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50
ZWQpIG11dGFibGUgeworICAgICAgICAgICAgc3RvcmUtPnN0YXRpc3RpY3NRdWV1ZSgpLmRpc3Bh
dGNoKFt3YXNHcmFudGVkLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3
YXNHcmFudGVkKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9KTsKQEAgLTc0
MSw5ICs3NDIsOSBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6c2hv
dWxkQmxvY2tBbmRQdXJnZUNvb2tpZXMoY29uc3QgUmVzb3VyYwogICAgIHJldHVybiBzdGF0aXN0
aWMuaXNQcmV2YWxlbnRSZXNvdXJjZSAmJiAhc3RhdGlzdGljLmhhZFVzZXJJbnRlcmFjdGlvbjsK
IH0KIAotYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omhhc1VzZXJHcmFu
dGVkU3RvcmFnZUFjY2Vzc1Rocm91Z2hQcm9tcHQoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyYgc3RhdGlzdGljLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbikK
K1N0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmU6Omhhc1VzZXJHcmFudGVkU3RvcmFnZUFjY2Vzc1Rocm91Z2hQcm9tcHQoY29uc3QgUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyYgc3RhdGlzdGljLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
Zmlyc3RQYXJ0eURvbWFpbikKIHsKLSAgICByZXR1cm4gc3RhdGlzdGljLnN0b3JhZ2VBY2Nlc3NV
bmRlclRvcEZyYW1lRG9tYWlucy5jb250YWlucyhmaXJzdFBhcnR5RG9tYWluKTsKKyAgICByZXR1
cm4gc3RhdGlzdGljLnN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucy5jb250YWlucyhm
aXJzdFBhcnR5RG9tYWluKSA/IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6WWVzIDogU3Rv
cmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObzsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmU6OnVwZGF0ZUNvb2tpZUJsb2NraW5nKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaAppbmRleCBmMWRkMmQ4MzY1Y2MxNWJiZDhiOGVjMThi
MWU2YThlMmQ0NmFkOWYyLi40NGVmYmY0ZGVjMTRmMjAyNzAyYWNhZDA3NzY4ZjVhYzgyMGI4MDVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5o
CkBAIC0zNyw2ICszNyw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBLZXllZERlY29k
ZXI7CiBjbGFzcyBLZXllZEVuY29kZXI7CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NQcm9tcHRX
YXNTaG93biA6IGJvb2w7CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIDogYm9v
bDsKIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogfQogCkBAIC05Nyw3ICs5OSw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFp
biYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXF1ZXN0
U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlE
LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYs
IFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFBhZ2VJRCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWRO
b3csIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQg
Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZy
YW1lSUQsIFBhZ2VJRCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJikg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBOYXZpZ2F0ZWRU
b0RvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFp
biYsIGJvb2wgaXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4mKSBvdmVycmlkZTsKQEAg
LTExMyw3ICsxMTUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIHNob3Vs
ZEJsb2NrQW5kS2VlcENvb2tpZXMoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAg
IHN0YXRpYyBib29sIHNob3VsZEJsb2NrQW5kUHVyZ2VDb29raWVzKGNvbnN0IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MmKTsKLSAgICBzdGF0aWMgYm9vbCBoYXNVc2VyR3JhbnRlZFN0b3JhZ2VBY2Nl
c3NUaHJvdWdoUHJvbXB0KGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYpOworICAgIHN0YXRpYyBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd24gaGFzVXNlckdyYW50ZWRTdG9yYWdlQWNjZXNzVGhyb3VnaFByb21wdChjb25zdCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKICAgICBi
b29sIGhhc0hhZFVuZXhwaXJlZFJlY2VudFVzZXJJbnRlcmFjdGlvbihSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzJiwgT3BlcmF0aW5nRGF0ZXNXaW5kb3cpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkUmVt
b3ZlQWxsV2Vic2l0ZURhdGFGb3IoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYsIGJvb2wgc2hvdWxk
Q2hlY2tGb3JHcmFuZGZhdGhlcmluZykgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRSZW1vdmVBbGxC
dXRDb29raWVzRm9yKFJlc291cmNlTG9hZFN0YXRpc3RpY3MmLCBib29sIHNob3VsZENoZWNrRm9y
R3JhbmRmYXRoZXJpbmcpIGNvbnN0OwpAQCAtMTIxLDcgKzEyMyw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBpbmNyZW1lbnRSZWNvcmRzRGVsZXRlZENvdW50Rm9yRG9tYWlucyhIYXNoU2V0PFJlZ2lz
dHJhYmxlRG9tYWluPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNl
KFJlc291cmNlTG9hZFN0YXRpc3RpY3MmLCBSZXNvdXJjZUxvYWRQcmV2YWxlbmNlKTsKICAgICB1
bnNpZ25lZCByZWN1cnNpdmVseUdldEFsbERvbWFpbnNUaGF0SGF2ZVJlZGlyZWN0ZWRUb1RoaXNE
b21haW4oY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYsIEhhc2hTZXQ8UmVkaXJlY3RlZFRv
RG9tYWluPiYsIHVuc2lnbmVkIG51bWJlck9mUmVjdXJzaXZlQ2FsbHMpIGNvbnN0OwotICAgIHZv
aWQgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVE
b21haW4mJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWRO
b3dPckVhcmxpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQg
Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21h
aW4mJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1By
b21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkKT4mJik7CiAgICAgdm9pZCBtYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGlyZWN0
ZWRUb1ByZXZhbGVudChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAgICAgYm9vbCBpc1ByZXZh
bGVudER1ZVRvRGVidWdNb2RlKFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKICAgICBWZWN0b3I8
UmVnaXN0cmFibGVEb21haW4+IGVuc3VyZVByZXZhbGVudFJlc291cmNlc0ZvckRlYnVnTW9kZSgp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4
IGQzMGFhOWY1ZGRhZWE5ZGNmNzBjMmIwODZjMzQyMmM2MzMyZjMxYmUuLjIyMGIzYzZiZjY1NWQy
ZjA2Yjk3NmMxNDFjMzdkN2NjZTkyNjBhNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmgKQEAgLTQxLDYgKzQxLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEtleWVkRGVjb2RlcjsKIGNsYXNzIEtleWVkRW5jb2RlcjsKK2VudW0gY2xhc3MgU3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duIDogYm9vbDsKK2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQgOiBib29sOwogc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3M7CiB9CiAKQEAg
LTE2MSw3ICsxNjMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgaGFzU3RvcmFnZUFj
Y2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9u
YWw8RnJhbWVJRD4sIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYm
LCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ3JhbnRT
dG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQs
IFBhZ2VJRCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWROb3csIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZy
YW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFBhZ2VJRCwgV2ViQ29yZTo6
U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNv
cmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lk
IGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYsIGNvbnN0IFRvcEZy
YW1lRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGJvb2wgaXNSZWRpcmVjdCwg
Ym9vbCBpc01haW5GcmFtZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsb2dVc2VySW50ZXJhY3Rp
b24oY29uc3QgVG9wRnJhbWVEb21haW4mKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IGI3OThmZDBjNDdjM2Y3NmFmMGVkMDNhOWMw
Y2FjYjA4MGI2ZjdmZmYuLjI1MmZlMWNhMDMxNjMxMGYzYTRkZjFmZThiOTJkNjg0MWM1Yzk2OTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBA
IC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVKYXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9E
aWFnbm9zdGljTG9nZ2luZ0tleXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50U3RvcmFn
ZUFjY2Vzcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CkBAIC0zMTQsNTIgKzMxNSw0NyBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEhhc1N0b3JhZ2VBY2Nlc3NGb3JG
cmFtZUhhbmRsZXIoY29uc3QgUgogICAgIGNhbGxiYWNrKGZhbHNlKTsKIH0KIAotdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzR3JhbnRlZChj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VB
Y2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgaWYgKHN1
YkZyYW1lRG9tYWluID09IHRvcEZyYW1lRG9tYWluKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNT
aG93bjo6Tm8pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogICAgIGF1dG8gc3RhdHVz
SGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN1YkZyYW1l
RG9tYWluID0gc3ViRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0g
dG9wRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIGZyYW1lSUQsIHBhZ2VJRCwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU3RvcmFnZUFjY2Vzc1N0YXR1
cyBzdGF0dXMpIG11dGFibGUgewogICAgICAgICBzd2l0Y2ggKHN0YXR1cykgewogICAgICAgICBj
YXNlIFN0b3JhZ2VBY2Nlc3NTdGF0dXM6OkNhbm5vdFJlcXVlc3RBY2Nlc3M6Ci0gICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6Tm8sIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93
bjo6Tm8pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFN0b3JhZ2VBY2Nlc3NT
dGF0dXM6OlJlcXVpcmVzVXNlclByb21wdDoKICAgICAgICAgICAgIHsKICAgICAgICAgICAgIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+IHJlcXVlc3RDb25maXJtYXRpb25Db21wbGV0aW9u
SGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVmKCks
IHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCB1c2VyRGlkR3Jh
bnRBY2Nlc3MpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICh1c2VyRGlkR3JhbnRBY2Nl
c3MpCi0gICAgICAgICAgICAgICAgICAgIGdyYW50U3RvcmFnZUFjY2VzcyhzdWJGcmFtZURvbWFp
biwgdG9wRnJhbWVEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgdXNlckRpZEdyYW50QWNjZXNzLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICAgICAgICAgIGdyYW50U3Rv
cmFnZUFjY2VzcyhzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIGZyYW1lSUQsIHBhZ2VJ
RCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpZZXMsIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Ok5vLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hv
d246Olllcyk7CiAgICAgICAgICAgICB9OwogICAgICAgICAgICAgbV9uZXR3b3JrU2Vzc2lvbi0+
bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlJlcXVlc3RTdG9yYWdlQWNjZXNz
Q29uZmlybShwYWdlSUQsIGZyYW1lSUQsIHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiks
IFdURk1vdmUocmVxdWVzdENvbmZpcm1hdGlvbkNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgU3RvcmFnZUFjY2Vzc1N0
YXR1czo6SGFzQWNjZXNzOgotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7Cisg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVz
LCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgIH07CiAKLSAgICByZXF1ZXN0U3RvcmFnZUFjY2VzcyhzdWJGcmFtZURv
bWFpbiwgdG9wRnJhbWVEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShzdGF0dXNIYW5k
bGVyKSk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0
U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdl
QWNjZXNzU3RhdHVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBpZiAoc3ViRnJhbWVE
b21haW4gPT0gdG9wRnJhbWVEb21haW4pIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3Rv
cmFnZUFjY2Vzc1N0YXR1czo6SGFzQWNjZXNzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIHBvc3RUYXNrKFt0aGlzLCBzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlzb2xh
dGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgp
LCBmcmFtZUlELCBwYWdlSUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgcG9zdFRhc2soW3RoaXMsIHN1YkZyYW1lRG9tYWlu
ID0gc3ViRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gdG9wRnJh
bWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIGZyYW1lSUQsIHBhZ2VJRCwgc3RhdHVzSGFuZGxlciA9
IFdURk1vdmUoc3RhdHVzSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghbV9zdGF0
aXN0aWNzU3RvcmUpIHsKLSAgICAgICAgICAgIHBvc3RUYXNrUmVwbHkoW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3RvcmFnZUFjY2Vzc1N0YXR1czo6Q2Fubm90UmVxdWVz
dEFjY2Vzcyk7CisgICAgICAgICAgICBwb3N0VGFza1JlcGx5KFtzdGF0dXNIYW5kbGVyID0gV1RG
TW92ZShzdGF0dXNIYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBzdGF0dXNI
YW5kbGVyKFN0b3JhZ2VBY2Nlc3NTdGF0dXM6OkNhbm5vdFJlcXVlc3RBY2Nlc3MpOwogICAgICAg
ICAgICAgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
bV9zdGF0aXN0aWNzU3RvcmUpIHsKLSAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5yZXF1
ZXN0U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFt
ZURvbWFpbiksIGZyYW1lSUQudmFsdWUoKSwgcGFnZUlELCBbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU3RvcmFnZUFjY2Vzc1N0YXR1cyBzdGF0dXMpIG11
dGFibGUgewotICAgICAgICAgICAgICAgIHBvc3RUYXNrUmVwbHkoW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHN0YXR1c10oKSBtdXRhYmxlIHsKLSAgICAg
ICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdHVzKTsKKyAgICAgICAgICAgIG1f
c3RhdGlzdGljc1N0b3JlLT5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lRG9t
YWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIHBhZ2VJRCwgW3N0YXR1c0hh
bmRsZXIgPSBXVEZNb3ZlKHN0YXR1c0hhbmRsZXIpXShTdG9yYWdlQWNjZXNzU3RhdHVzIHN0YXR1
cykgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgcG9zdFRhc2tSZXBseShbc3RhdHVzSGFuZGxl
ciA9IFdURk1vdmUoc3RhdHVzSGFuZGxlciksIHN0YXR1c10oKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgICAgICAgICAgc3RhdHVzSGFuZGxlcihzdGF0dXMpOwogICAgICAgICAgICAgICAgIH0pOwog
ICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KQEAgLTM3OSwyOCArMzc1LDI4IEBAIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3Bl
bmVyKFJlZ2lzdHJhYmxlCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1
YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWROb3cs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFN0
b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwotICAgIHBvc3RUYXNrKFt0aGlzLCBzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWlu
Lmlzb2xhdGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVk
Q29weSgpLCBmcmFtZUlELCBwYWdlSUQsIHVzZXJXYXNQcm9tcHRlZE5vdywgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBwb3N0
VGFzayhbdGhpcywgc3ViRnJhbWVEb21haW4gPSBzdWJGcmFtZURvbWFpbi5pc29sYXRlZENvcHko
KSwgdG9wRnJhbWVEb21haW4gPSB0b3BGcmFtZURvbWFpbi5pc29sYXRlZENvcHkoKSwgZnJhbWVJ
RCwgcGFnZUlELCBwcm9tcHRXYXNTaG93biwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFtX3N0YXRpc3RpY3NT
dG9yZSkgewotICAgICAgICAgICAgcG9zdFRhc2tSZXBseShbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgICAgICBwb3N0VGFza1JlcGx5KFtwcm9t
cHRXYXNTaG93biwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZDo6Tm8sIHByb21wdFdhc1Nob3duKTsKICAgICAgICAgICAgIH0pOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fc3RhdGlzdGlj
c1N0b3JlKSB7Ci0gICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+Z3JhbnRTdG9yYWdlQWNj
ZXNzKFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJh
bWVJRCwgcGFnZUlELCB1c2VyV2FzUHJvbXB0ZWROb3csIFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShib29sIHdhc0dyYW50ZWRBY2Nlc3MpIG11dGFibGUg
ewotICAgICAgICAgICAgICAgIHBvc3RUYXNrUmVwbHkoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIHdhc0dyYW50ZWRBY2Nlc3NdKCkgbXV0YWJsZSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdhc0dyYW50ZWRBY2Nlc3MpOwor
ICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPmdyYW50U3RvcmFnZUFjY2VzcyhXVEZNb3Zl
KHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIHBhZ2VJ
RCwgcHJvbXB0V2FzU2hvd24sIFtwcm9tcHRXYXNTaG93biwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3Jh
bnRlZEFjY2VzcykgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgcG9zdFRhc2tSZXBseShbd2Fz
R3JhbnRlZEFjY2VzcywgcHJvbXB0V2FzU2hvd24sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHdhc0dyYW50ZWRBY2Nlc3MsIHByb21wdFdhc1Nob3duKTsKICAgICAg
ICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgfSk7CiB9CiAK
LWJvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3Mo
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCkKK1N0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21h
aW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpCiB7CiAgICAg
Ym9vbCBpc1N0b3JhZ2VHcmFudGVkID0gZmFsc2U7CiAKQEAgLTQxMCwxNCArNDA2LDE0IEBAIGJv
b2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29u
c3QgUmVnaXN0cmFibGVEb21haW4mCiAgICAgICAgIGlzU3RvcmFnZUdyYW50ZWQgPSB0cnVlOwog
ICAgIH0KIAotICAgIHJldHVybiBpc1N0b3JhZ2VHcmFudGVkOworICAgIHJldHVybiBpc1N0b3Jh
Z2VHcmFudGVkID8gU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6OlllcyA6IFN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkOjpObzsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OmNhbGxHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBz
dWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OmNhbGxHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1l
RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgY2FsbGJh
Y2soZ3JhbnRTdG9yYWdlQWNjZXNzKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJh
bWVJRCwgcGFnZUlEKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoZ3JhbnRTdG9yYWdlQWNjZXNz
KHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRCwgcGFnZUlEKSk7CiB9CiAK
IHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkaWRDcmVhdGVOZXR3b3JrUHJv
Y2VzcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5k
ZXggYTBmZThlY2U4ZDhmOGU1ZWExM2UwODZjM2VmZDVlYmJkMmZjOGFhMi4uZjU2OWRjMzY0MzFh
NGRkZGM0YjdmZmI0NDFiMzQwZTA1OWVkZGQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtNDgsNiArNDgsOCBAQCBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CiBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKIGVudW0gY2xhc3MgU2hvdWxk
U2FtcGxlIDogYm9vbDsKIGVudW0gY2xhc3MgSW5jbHVkZUh0dHBPbmx5Q29va2llcyA6IGJvb2w7
CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biA6IGJvb2w7CitlbnVtIGNs
YXNzIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIDogYm9vbDsKIH0KIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC04Myw2ICs4NSw4IEBAIHB1YmxpYzoKICAgICB1c2luZyBPcGVuZXJQYWdlSUQgPSB1
aW50NjRfdDsKICAgICB1c2luZyBQYWdlSUQgPSB1aW50NjRfdDsKICAgICB1c2luZyBGcmFtZUlE
ID0gdWludDY0X3Q7CisgICAgdXNpbmcgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgPSBXZWJDb3Jl
OjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDsKKyAgICB1c2luZyBTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd24gPSBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd247CiAKICAgICBz
dGF0aWMgUmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gY3JlYXRlKE5ldHdvcmtT
ZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5LCBTaG91bGRJbmNsdWRlTG9jYWxob3N0IHNob3VsZEluY2x1ZGVMb2NhbGhv
c3QpCiAgICAgewpAQCAtMTAwLDcgKzEwNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNob3Vs
ZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKGJvb2wsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRTaG91bGRTdWJtaXRUZWxlbWV0cnko
Ym9vbCk7CiAKLSAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFp
biYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgUGFnZUlELCBib29sIHVzZXJXYXNQ
cm9tcHRlZE5vdywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBn
cmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURv
bWFpbiYsIEZyYW1lSUQsIFBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNz
UHJvbXB0V2FzU2hvd24pPiYmKTsKIAogICAgIHZvaWQgYXBwbGljYXRpb25XaWxsVGVybWluYXRl
KCk7CiAKQEAgLTExNCwxMiArMTE4LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyVXNlcklu
dGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBXZWJz
aXRlRGF0YVRvUmVtb3ZlPiYmLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4mJik7CiAgICAgdm9p
ZCByZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4sIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNo
U2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJik7Ci0gICAgYm9vbCBncmFudFN0b3JhZ2VBY2Nl
c3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFs
PEZyYW1lSUQ+LCBQYWdlSUQpOworICAgIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIGdyYW50U3Rv
cmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwg
T3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCk7CiAgICAgdm9pZCBoYXNIYWRVc2VySW50ZXJhY3Rp
b24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKTsKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBj
b25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spOworICAgIHZvaWQgaGFzU3RvcmFnZUFj
Y2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9u
YWw8RnJhbWVJRD4sIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAg
ICAgYm9vbCBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoY29uc3QgU3ViRnJhbWVEb21haW4mLCBj
b25zdCBUb3BGcmFtZURvbWFpbiYsIEZyYW1lSUQsIFBhZ2VJRCk7Ci0gICAgdm9pZCByZXF1ZXN0
U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWlu
JiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9y
YWdlQWNjZXNzU3RhdHVzKT4mJik7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc0dyYW50
ZWQoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIEZyYW1lSUQs
IFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCByZXF1
ZXN0U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKICAgICB2b2lk
IHNldExhc3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgU2Vjb25kcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0xNjIsNyArMTY1LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBsb2dU
ZXN0aW5nRXZlbnQoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBjYWxsR3JhbnRTdG9yYWdlQWNj
ZXNzSGFuZGxlcihjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwg
T3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CisgICAgdm9pZCBjYWxsR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25zdCBTdWJGcmFt
ZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJ
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpOwog
ICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgY2FsbFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0Zv
ckhhbmRsZXIoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjYWxsUmVtb3ZlRG9tYWluc0hhbmRsZXIoY29uc3Qg
VmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApp
bmRleCBkYzc0YTYxM2I5ZDljNGM0ODlkNjcxZTMwYWE4YTY3MzQ2MDQ1NWZiLi5lOWM5OGYyZTIy
MjdmZTFjNTI1MTc3MGQwNjBkMmVkMmUzY2NkZTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcApAQCAtNTcsNiArNTcsNyBAQAogI2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KQEAgLTY4MCwx
MiArNjgxLDE4IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlc291cmNl
TG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlCiAKIHZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
cGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewotICAgIG5ldHdvcmtQcm9jZXNzKCkuaGFzU3RvcmFnZUFjY2VzcyhzZXNzaW9uSUQsIHN1
YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CisgICAgaWYgKGF1dG8gbmV0d29ya1Nlc3Npb24gPSBuZXR3b3Jr
UHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8q
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpKQorICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aGFzU3RvcmFn
ZUFjY2VzcyhzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFp
biwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQsIFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgbmV0d29ya1Byb2Nlc3MoKS5yZXF1ZXN0U3RvcmFnZUFjY2Vzc0dy
YW50ZWQoc2Vzc2lvbklELCBzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIGZyYW1lSUQs
IHBhZ2VJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmIChhdXRvIG5ldHdv
cmtTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7
CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Np
b24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MtPnJlcXVlc3RTdG9yYWdlQWNjZXNzKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURv
bWFpbiwgZnJhbWVJRCwgcGFnZUlELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAg
fQogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9w
ZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggYzY5ZTMyNWU2MThlOWNlODZiYThhZjJjMzEwMzZl
YWVhZWMxMmEwZi4uMDkwM2ExNjQ1ODlkYTE5NTRjZTYzZmMzMWJlZDIwYmViMjFhZWQ4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNDgsNiArNDgsOCBAQCBjbGFzcyBCbG9iRGF0YUZp
bGVSZWZlcmVuY2U7CiBjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOwogY2xhc3MgUmVzb3VyY2VFcnJv
cjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKK2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duIDogYm9vbDsKK2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgOiBi
b29sOwogc3RydWN0IFNhbWVTaXRlSW5mbzsKIAogZW51bSBjbGFzcyBJbmNsdWRlU2VjdXJlQ29v
a2llcyA6IGJvb2w7CkBAIC0yMjEsNyArMjIzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxvZ1N1
YnJlc291cmNlUmVkaXJlY3QoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0YXJnZXREb21haW4pOwog
ICAgIHZvaWQgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcmU6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3M+JiYpOwogICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhQQUw6
OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9p
ZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVE
b21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNz
V2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJik7CiAg
ICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklELCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzcywg
dWludDY0X3Qgb3BlbmVyUGFnZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5l
ckRvbWFpbik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KaW5kZXggMTZlZDM0YWQ5ODc4OTA0MTgzNzFhMzljYWRlNjQ4NmYzNzFkNmNlMy4uZmQ4
NDhlM2FkMDQ2YzgwYzNhZTNmNDZkMzkwMTVhMDJmMDAzYzk1MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC02NCw3ICs2NCw3IEBAIG1lc3NhZ2VzIC0+
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBMb2dT
dWJyZXNvdXJjZVJlZGlyZWN0KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gc291cmNlRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0
YXJnZXREb21haW4pCiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdl
YkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+IHN0YXRpc3RpY3MpCiAgICAgSGFzU3RvcmFn
ZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURv
bWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKSAtPiAoYm9vbCBoYXNTdG9y
YWdlQWNjZXNzKSBBc3luYwotICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBwYWdlSUQpIC0+IChib29sIGFjY2Vzc0dyYW50ZWQpIEFzeW5jCisgICAgUmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
dG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkgLT4gKGVu
dW06Ym9vbCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBlbnVt
OmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3du
KSBBc3luYwogICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW5Jbk5lZWRPZlN0
b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gb3BlbmVyRG9tYWluKQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggYTYwYjJjNTViZjFlMzQ4M2I5ZDMzYTUz
MmY4ODFjNjNhODNlYWJhZi4uMGU3MTgwZGIyYmNmNDEwOTAyZDQ0OWM3YzI2Mzg4YWQ1ZjQ2ZTg3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKQEAgLTk1MCwxNyArOTUwLDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0TGFzdFNlZW4o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWEKICAgICB9CiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFp
biwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCi17Ci0gICAgYm9vbCBoYXNTdG9yYWdlQWNjZXNzID0gZmFsc2U7Ci0g
ICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Np
b25JRCkpCi0gICAgICAgIGhhc1N0b3JhZ2VBY2Nlc3MgPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24t
Pmhhc1N0b3JhZ2VBY2Nlc3Moc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlE
LCBwYWdlSUQpOwotICAgIGVsc2UKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAg
ICBjb21wbGV0aW9uSGFuZGxlcihoYXNTdG9yYWdlQWNjZXNzKTsKLX0KLQogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+IGRvbWFpbnMpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24g
PSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQpAQCAtOTcxLDY0ICs5NjAsNiBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIENvbXBsZQogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6aGFzU3Rv
cmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9t
YWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmIChh
dXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsK
LSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lv
bi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy0+aGFzU3RvcmFnZUFjY2VzcyhzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4s
IGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGZhbHNlKTsKLSAgICB9Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlcXVlc3RTdG9yYWdl
QWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4s
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17
Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5l
dHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAgICAgICAgICByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLT5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhzdWJGcmFtZURvbWFpbiwg
dG9wRnJhbWVEb21haW4sIGZyYW1lSUQudmFsdWUoKSwgcGFnZUlELCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFN0b3JhZ2VBY2Nlc3NTdGF0dXM6OkNhbm5vdFJlcXVlc3RBY2Nlc3MpOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5ub3RSZXF1ZXN0QWNjZXNzKTsKLSAgICB9Ci19Ci0K
LXZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzR3JhbnRlZChQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFp
biwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+
bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VM
b2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkp
Ci0gICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5yZXF1ZXN0U3RvcmFnZUFjY2Vz
c0dyYW50ZWQoc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELCBwYWdlSUQs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgfQot
fQotCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpncmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgLy8gRklY
TUU6IFdlIHNob3VsZCBub3QgYWNjZXB0IGFuIG9wdGlvbmFsIGZyYW1lIElEIHNpbmNlIHdlIGNh
bGwgZnJhbWVJRC52YWx1ZSgpIHVuY29uZGl0aW9uYWxseS4KLSAgICBpZiAoIWZyYW1lSUQpIHsK
LSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9
IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAgICAgICAgICBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5ncmFudFN0b3JhZ2VBY2Nlc3Moc3ViRnJhbWVEb21haW4s
IHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELnZhbHVlKCksIHBhZ2VJRCwgdXNlcldhc1Byb21wdGVk
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAgICB9IGVsc2UgewotICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAgIH0K
LX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRnJhbWVOYXZpZ2F0aW9uKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbiwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgc291cmNlRG9tYWluLCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJhbWUpCiB7
CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKSkgewpAQCAtMTA3NywxNSArMTAwOCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNs
ZWFyVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0
CiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVBbGxTdG9yYWdlQWNjZXNz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24g
PSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Np
b24tPnJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoKTsKLSAgICBlbHNlCi0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci19Ci0KIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnJlbW92ZVByZXZhbGVudERvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zKQogewogICAgIGlmIChh
dXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGQw
MWJjNzc1MWJjOGFhZTYzMDMwMjIzYTRiNDdlYTg5MDg5ZDk4ZGYuLjJkNmVmZmNmNzUwNGRlMmFh
ZmJkOTY3ZTk3YmQxODcwYzNiY2Y0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTc5LDYgKzc5LDggQEAgY2xhc3MgUmVzb3VyY2VFcnJv
cjsKIGNsYXNzIFNXU2VydmVyOwogZW51bSBjbGFzcyBJbmNsdWRlSHR0cE9ubHlDb29raWVzIDog
Ym9vbDsKIGVudW0gY2xhc3MgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgOiB1aW50OF90OworZW51
bSBjbGFzcyBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gOiBib29sOworZW51bSBjbGFzcyBT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA6IGJvb2w7CiBzdHJ1Y3QgQ2xpZW50T3JpZ2luOwogc3Ry
dWN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzOwogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsK
QEAgLTIyNSwxNiArMjI3LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFZlcnlQcmV2YWxlbnRS
ZXNvdXJjZShQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UHJ1bmVFbnRyaWVzRG93blRvKFBB
TDo6U2Vzc2lvbklELCB1aW50NjRfdCBwcnVuZVRhcmdldENvdW50LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgaGFkVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOwotICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgUGFn
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGdldEFsbFN0
b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxTdHJpbmc+IGRvbWFpbnMpPiYmKTsKLSAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vz
cyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURv
bWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nl
c3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVE
b21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKICAgICB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihQQUw6OlNlc3Npb25JRCwg
Y29uc3QgTmF2aWdhdGVkVG9Eb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IE5h
dmlnYXRlZEZyb21Eb21haW4mLCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJhbWUpOwog
ICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBUb3BGcmFt
ZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCByZW1vdmVB
bGxTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgcmVtb3ZlUHJldmFsZW50RG9tYWlucyhQQUw6OlNlc3Npb25JRCwgY29u
c3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VB
Y2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJh
bWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNj
ZXNzR3JhbnRlZChQQUw6OlNlc3Npb25JRCwgY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBU
b3BGcmFtZURvbWFpbiYsIEZyYW1lSUQsIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CiAgICAgdm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3Vy
Y2VzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgcmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5k
UGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCwgT3B0aW9uYWw8V2FsbFRpbWU+IG1vZGlmaWVkU2lu
Y2UsIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDZmNzYzNzlhNzdlOTEzZjVlNThiNjZkYWRhZmVhODAy
YmY5ZGQzMDAuLjczZmRiMzM1YTQ2YWI2NGQyZjY5NTMyMzg5YTMwN2YxYTQ1ZThiOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbgpAQCAtOTgsMTggKzk4LDEzIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNz
IExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlRG9tYWluKSAt
PiAoKSBBc3luYwogICAgIFNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21h
aW4pIC0+ICgpIEFzeW5jCiAgICAgSGFkVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4pIC0+IChi
b29sIGhhZFVzZXJJbnRlcmFjdGlvbikgQXN5bmMKLSAgICBIYXNTdG9yYWdlQWNjZXNzRm9yRnJh
bWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBz
dWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4s
IHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkgLT4gKGJvb2wgaGFzU3RvcmFnZUFj
Y2VzcykgQXN5bmMKLSAgICBIYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4sIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgdWludDY0X3QgcGFnZUlEKSAtPiAoYm9vbCBoYXNTdG9yYWdlQWNjZXNzKSBBc3luYwogICAg
IEdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4g
KFZlY3RvcjxTdHJpbmc+IGRvbWFpbnMpIEFzeW5jCi0gICAgR3JhbnRTdG9yYWdlQWNjZXNzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJh
bWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBPcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHVzZXJXYXNQcm9t
cHRlZCkgLT4gKGJvb2wgYWNjZXNzR3JhbnRlZCkgQXN5bmMKICAgICBJc1JlZ2lzdGVyZWRBc1Jl
ZGlyZWN0aW5nVG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiByZWRpcmVjdGVkRnJvbURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
cmVkaXJlY3RlZFRvRG9tYWluKSAtPiAoYm9vbCBpc1JlZGlyZWN0aW5nVG8pIEFzeW5jCiAgICAg
SXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHRvcEZyYW1lRG9tYWluKSAtPiAoYm9vbCBpc1N1YmZyYW1lVW5kZXIpIEFzeW5j
CiAgICAgSXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3VicmVzb3VyY2VEb21haW4sIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluKSAtPiAoYm9vbCBpc1N1YnJlc291
cmNlVW5kZXIpIEFzeW5jCiAgICAgTG9nRnJhbWVOYXZpZ2F0aW9uKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdGFyZ2V0RG9tYWluLCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gc291cmNlRG9tYWluLCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJhbWUpCiAg
ICAgTG9nVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4pIC0+ICgpIEFzeW5jCi0gICAgUmVtb3Zl
QWxsU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAg
ICAgUmVtb3ZlUHJldmFsZW50RG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3Rv
cjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1dpdGhJbnRlcmFjdGlvbikKLSAg
ICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90
IHBhZ2VJRCkgLT4gKGVudW06dWludDhfdCBXZWJLaXQ6OlN0b3JhZ2VBY2Nlc3NTdGF0dXMgc3Rv
cmFnZUFjY2Vzc1N0YXR1cykgQXN5bmMKICAgICBSZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1
ZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogICAgIFNjaGVkdWxlQ2xl
YXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25h
bDxXYWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgZW51bTpib29sIFdlYktpdDo6U2hvdWxkR3JhbmRm
YXRoZXJTdGF0aXN0aWNzIHNob3VsZEdyYW5kZmF0aGVyKSAtPiAoKSBBc3luYwogICAgIFNjaGVk
dWxlQ29va2llQmxvY2tpbmdVcGRhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBB
c3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggOGU1MmFj
MDNjMjgwNTIxOGI5YWFjYWVjOGIzNjYwOTM3OWUxNjVkZi4uYTM3NzNiMTQxMmZlMzY1YTRhMTI3
ZTg2YWNhOWNhNjZjZTZmMjA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CkBAIC00NTYsNiArNDU2LDggQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAg
ICAgICAgICdXZWJDb3JlOjpTaGlwcGluZ01ldGhvZFVwZGF0ZSc6IFsnPFdlYkNvcmUvQXBwbGVQ
YXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlNob3VsZE5v
dGlmeVdoZW5SZXNvbHZlZCc6IFsnPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+J10sCiAg
ICAgICAgICdXZWJDb3JlOjpTaG91bGRTYW1wbGUnOiBbJzxXZWJDb3JlL0RpYWdub3N0aWNMb2dn
aW5nQ2xpZW50Lmg+J10sCisgICAgICAgICdXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2Fz
U2hvd24nOiBbJzxXZWJDb3JlL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5oPiddLAorICAgICAgICAn
V2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQnOiBbJzxXZWJDb3JlL0RvY3VtZW50U3Rv
cmFnZUFjY2Vzcy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6U3VwcG9ydGVkUGx1Z2luSWRlbnRp
Zmllcic6IFsnPFdlYkNvcmUvUGx1Z2luRGF0YS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6VGV4
dENoZWNraW5nUmVxdWVzdERhdGEnOiBbJzxXZWJDb3JlL1RleHRDaGVja2luZy5oPiddLAogICAg
ICAgICAnV2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0JzogWyc8V2ViQ29yZS9UZXh0Q2hlY2tl
ckNsaWVudC5oPiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggYzM0NGQxNjM4MjczNWIwYjY4M2M2OTZm
OWI2NjI2NzEwNzFkODQ2NC4uYWY4NTlhZWMwMzYyZTkxZjkzMGIyODZiOGY0MmZjMjBmYTg4MzA0
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCkBAIC03MjYsMzYgKzcyNiw2IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6c2V0R3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
U2V0R3JhbmRmYXRoZXJlZChzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBpc0dyYW5kZmF0aGVy
ZWQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBh
Z2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
LXsKLSAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZmFsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6SGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHNl
c3Npb25JRCwgcmVzb3VyY2VEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELCBwYWdlSUQp
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6aGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQot
ewotICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6SGFzU3RvcmFnZUFjY2VzcyhzZXNzaW9u
SUQsIHJlc291cmNlRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRCwgcGFnZUlEKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotfQotCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
dG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdl
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7Ci0gICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NTdGF0dXM6OkNhbm5vdFJlcXVlc3RBY2Nlc3Mp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3Moc2Vzc2lvbklELCByZXNv
dXJjZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0
U3RvcmFnZUFjY2Vzc0NvbmZpcm0odWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiB0b3BGcmFtZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNz
UHJveHk6OndlYlBhZ2UocGFnZUlEKTsKQEAgLTc2NywzMiArNzM3LDYgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm0odWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdAogICAgIHBhZ2UtPnJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybShzdWJGcmFt
ZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIGZyYW1lSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpncmFudFN0b3JhZ2VBY2Nlc3Mo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3Vy
Y2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCB1c2VyV2FzUHJvbXB0
ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17
Ci0gICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgbm90IGFjY2VwdCBhbiBvcHRpb25hbCBmcmFtZSBJRCBzaW5jZSB3ZSBjYWxsIGZyYW1lSUQu
dmFsdWUoKSB1bmNvbmRpdGlvbmFsbHkuCi0gICAgaWYgKCFmcmFtZUlEKSB7Ci0gICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkdyYW50U3RvcmFnZUFj
Y2VzcyhzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRC52
YWx1ZSgpLCBwYWdlSUQsIHVzZXJXYXNQcm9tcHRlZCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKLX0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZW1vdmVBbGxTdG9yYWdlQWNj
ZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgewotICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVtb3ZlQWxsU3Rv
cmFnZUFjY2VzcyhzZXNzaW9uSUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19Ci0K
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJp
bmc+IGRvbWFpbnMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2FuU2VuZE1l
c3NhZ2UoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBmY2IyYjc4YjQ1ZGM1NzJjMzc4ODNlOGU2YTgwZmJi
ZjhkYjFhNmMzLi5hYzNkZDgzMjU5NTVhOGI2ZmExNDgwODA4YjMwZmUzYmZjNjEzY2Q3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaApAQCAtNDksNiArNDksOCBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsK
IGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGVudW0gY2xh
c3MgU2hvdWxkU2FtcGxlIDogYm9vbDsKK2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duIDogYm9vbDsKK2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgOiBib29s
OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogfQpA
QCAtMTI1LDE0ICsxMjcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJj
ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01v
ZGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShQQUw6
OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwotICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJh
bWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lk
IGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+IGRvbWFpbnMpPiYmKTsKLSAgICB2b2lkIGdyYW50U3Rv
cmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25z
dCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIGJvb2wgdXNlcldh
c1Byb21wdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGhh
c1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
Y29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNz
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dG9yYWdlQWNjZXNzU3RhdHVzKT4mJik7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc0Nv
bmZpcm0oUGFnZUlELCBGcmFtZUlELCBjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZy
YW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBy
ZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCByZW1vdmVBbGxTdG9yYWdlQWNjZXNzKFBBTDo6
U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1
bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCwgU2hvdWxkR3JhbmRm
YXRoZXJTdGF0aXN0aWNzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCwgT3B0aW9u
YWw8V2FsbFRpbWU+IG1vZGlmaWVkU2luY2UsIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlQ29va2llQmxv
Y2tpbmdVcGRhdGUoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwCmluZGV4IDAwNjQxYTEzOWY1M2JiNDYyNDkzOTY4NDM1NjhkMDRhMzNj
MjE2OWEuLjU2ZTE4YWFhNDVhYmFjN2M0OTAzYjZjODk0N2M3ZThmMDdlOWJiMmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwCkBAIC0xNjgzLDU2ICsxNjgzLDYgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpn
ZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyh1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW4K
ICAgICBuZXR3b3JrUHJvY2Vzcy5nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhtX3Nlc3Npb25J
RCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3RyaW5nJiBzdWJGcmFtZUhvc3QsIGNvbnN0IFN0
cmluZyYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAg
aWYgKCFyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpKSB7Ci0gICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8qIHdl
YlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKTsKLSAgICBpZiAoIXdlYlBh
Z2UpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKGF1dG8gbmV0d29ya1Byb2Nlc3MgPSB3ZWJQYWdlLT5wcm9jZXNz
KCkucHJvY2Vzc1Bvb2woKS5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICBuZXR3b3JrUHJvY2Vz
cy0+aGFzU3RvcmFnZUFjY2VzcyhtX3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHN1YkZyYW1lSG9zdCksIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdCh0b3BGcmFtZUhvc3QpLCBmcmFt
ZUlELCBwYWdlSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLX0KLQotdm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyhjb25zdCBTdHJpbmcmIHN1YkZyYW1l
SG9zdCwgY29uc3QgU3RyaW5nJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBpZiAoIXJlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkKCkpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3RvcmFnZUFjY2Vzc1N0YXR1
czo6Q2Fubm90UmVxdWVzdEFjY2Vzcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0g
ICAgYXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOwotICAg
IGlmICghd2ViUGFnZSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNz
U3RhdHVzOjpDYW5ub3RSZXF1ZXN0QWNjZXNzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChhdXRvIG5ldHdvcmtQcm9jZXNzID0gd2ViUGFnZS0+cHJvY2VzcygpLnByb2Nlc3NQ
b29sKCkubmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnJlcXVlc3RT
dG9yYWdlQWNjZXNzKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6dW5j
aGVja2VkQ3JlYXRlRnJvbUhvc3Qoc3ViRnJhbWVIb3N0KSwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHRvcEZyYW1lSG9zdCksIGZyYW1lSUQsIHBh
Z2VJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotfQotCi12b2lkIFdlYnNpdGVEYXRh
U3RvcmU6OmdyYW50U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYm
IHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHVz
ZXJXYXNQcm9tcHRlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKLXsKLSAgICBpZiAoIXJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkpIHsK
LSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIAotICAgIGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFn
ZUlEKTsKLSAgICBpZiAoIXdlYlBhZ2UpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFs
c2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF1dG8gbmV0d29ya1Byb2Nl
c3MgPSB3ZWJQYWdlLT5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5uZXR3b3JrUHJvY2VzcygpKQot
ICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+Z3JhbnRTdG9yYWdlQWNjZXNzKG1fc2Vzc2lvbklELCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qoc3ViRnJh
bWVIb3N0KSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21I
b3N0KHRvcEZyYW1lSG9zdCksIGZyYW1lSUQsIHBhZ2VJRCwgdXNlcldhc1Byb21wdGVkLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19CiAKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0
VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCBjMjhi
NzMxYjU4NTNhZTcwZDQ1MmUwMzY1NTBhYzY1YzI5MzA0NTZiLi43N2YwNDhhNDU0ZjM0ZTVlMDkx
NmZhMTkwYWQxMTI5MzA2OWFmYzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0xNjksOSArMTY5LDYgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVj
b3Jkc1JlbW92YWwoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lk
IHNldFN0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0
cmluZyYpPiYmIGNhbGxiYWNrKSB7IG1fc3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spOyB9CiAgICAgdm9pZCBzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3Qg
VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGhhc1N0b3JhZ2VB
Y2Nlc3MoY29uc3QgU3RyaW5nJiBzdWJGcmFtZUhvc3QsIGNvbnN0IFN0cmluZyYgdG9wRnJhbWVI
b3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3Ry
aW5nJiBzdWJGcmFtZUhvc3QsIGNvbnN0IFN0cmluZyYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFj
Y2Vzc1N0YXR1cyk+JiYpOwotICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1
YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKICAgICB2b2lkIHNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbihjb25z
dCBVUkwmIHN1YmZyYW1lLCBjb25zdCBVUkwmIHRvcEZyYW1lKTsKICAgICB2b2lkIHNldENyb3Nz
U2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKGNvbnN0IFVSTCYgZnJvbVVSTCwg
Y29uc3QgVVJMJiB0b1VSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lk
IHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDliYWE4NGQz
OGFlMDgwMTExOGExMmI4MWUyMDRlYTJlOGYwZTllZjQuLjZiY2EyNzUzNWY0MzY4YjhlZDhiMGU4
MzVhOTdmYmYxZmViMzhkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC02Miw2ICs2Miw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1l
bnRMb2FkZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZUNob29zZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVJ
Y29uTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgpAQCAtNzYsNiArNzcsNyBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvSWNvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVt
ZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jl
Z2lzdHJhYmxlRG9tYWluLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW5EYXRhLmg+CkBAIC0xMzExLDE0ICsxMzEzLDE0IEBAIHZvaWQgV2ViQ2hy
b21lQ2xpZW50OjpkaWRJbnZhbGlkYXRlRG9jdW1lbnRNYXJrZXJSZWN0cygpCiB9CiAKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotdm9pZCBXZWJDaHJvbWVDbGllbnQ6Omhh
c1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhv
c3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJDaHJvbWVDbGllbnQ6Omhhc1N0b3JhZ2VBY2Nlc3Mo
UmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0
b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9wYWdlLmhhc1N0
b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZUhvc3QpLCBXVEZNb3ZlKHRvcEZyYW1lSG9zdCks
IGZyYW1lSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBtX3BhZ2UuaGFzU3RvcmFnZUFjY2Vz
cyhXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1l
SUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJDaHJvbWVDbGll
bnQ6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYg
dG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZXF1ZXN0
U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBSZWdpc3Ry
YWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFj
Y2Vzc1Byb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3BhZ2Uu
cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZUhvc3QpLCBXVEZNb3ZlKHRvcEZy
YW1lSG9zdCksIGZyYW1lSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBtX3BhZ2UucmVxdWVz
dFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVE
b21haW4pLCBmcmFtZUlELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDcwNWIyNWU5ZmM5MTJhNjNiNWI0NTc3ZWYyYjhkNWUw
NzE3YTM1NDAuLjc5MjUzMzFlYzhlNjcwZTEwNWZmNGQyZTZlNDc4OTBiZTk3MWQ2ZmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgKQEAgLTI4LDYgKzI4LDEyIEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0No
cm9tZUNsaWVudC5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZWdpc3RyYWJsZURv
bWFpbjsKK2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIDogYm9vbDsKK2Vu
dW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgOiBib29sOworfQorCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgV2ViRnJhbWU7CkBAIC0zNjMsOCArMzY5LDggQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZEludmFsaWRhdGVEb2N1bWVudE1hcmtlclJlY3RzKCkgZmluYWw7CiAKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHZvaWQgaGFzU3RvcmFnZUFj
Y2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQg
KGJvb2wpPiYmKSBmaW5hbDsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYm
IHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYpIGZp
bmFsOworICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYmIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1l
RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFj
Y2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9y
YWdlQWNjZXNzV2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3du
KT4mJikgZmluYWw7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDQzNzAy
MjJhZThkMzg3NzY3OTkzMDdmODkwMzkxNjczNWNmODBhODAuLjU4YWMzOGJkOTM3YjYyNzNjZjMx
ZThlM2NjZjlhMjU1YjA4NTg3YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC0xNDcsNiArMTQ3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Rv
Y3VtZW50RnJhZ21lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0Nv
bnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9FZGl0aW5nLmg+CkBAIC02NDQwLDE0ICs2NDQxLDE0IEBAIHZvaWQgV2ViUGFnZTo6ZnJh
bWVCZWNhbWVSZW1vdGUodWludDY0X3QgZnJhbWVJRCwgR2xvYmFsRnJhbWVJZGVudGlmaWVyJiYg
cmVtb3RlCiB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotdm9pZCBX
ZWJQYWdlOjpoYXNTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYg
dG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlOjpoYXNTdG9yYWdlQWNjZXNz
KFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYg
dG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Okhhc1N0
b3JhZ2VBY2Nlc3Moc2Vzc2lvbklEKCksIFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVh
dGVGcm9tSG9zdChzdWJGcmFtZUhvc3QpLCBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3Jl
YXRlRnJvbUhvc3QodG9wRnJhbWVIb3N0KSwgZnJhbWVJRCwgbV9wYWdlSUQpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Okhhc1N0b3JhZ2VBY2Nlc3Mo
c2Vzc2lvbklEKCksIFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9t
YWluKSwgZnJhbWVJRCwgbV9wYWdlSUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
Ci0gICAgCi12b2lkIFdlYlBhZ2U6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZy
YW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorCit2b2lkIFdlYlBh
Z2U6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21h
aW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQs
IFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlcXVlc3RTdG9yYWdlQWNjZXNzKHNlc3Npb25J
RCgpLCBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qoc3ViRnJhbWVI
b3N0KSwgUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHRvcEZyYW1l
SG9zdCksIGZyYW1lSUQsIG1fcGFnZUlEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpSZXF1ZXN0U3RvcmFnZUFjY2VzcyhzZXNzaW9uSUQoKSwgV1RG
TW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBt
X3BhZ2VJRCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZDlkODA0Y2JkNjM3
OTkxMDUyYzhjNmQyYzFjZTIyOWU2N2QzNmE5OC4uYzkzOTAzZjdiYjMxZjRjOTM5MDQ0NWM4Njgw
NmVlZDljZWI5M2NhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaApAQCAtMTc3LDYgKzE3Nyw4IEBAIGVudW0gU3ludGhldGljQ2xpY2tUeXBlIDogaW50OF90
OwogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKIGVudW0gY2xh
c3MgRHJhZ0hhbmRsaW5nTWV0aG9kIDogdWludDhfdDsKIGVudW0gY2xhc3MgU2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkIDogYm9vbDsKK2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duIDogYm9vbDsKK2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgOiBib29s
OwogZW51bSBjbGFzcyBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbiA6IHVpbnQ4
X3Q7CiBlbnVtIGNsYXNzIFdyaXRpbmdEaXJlY3Rpb24gOiB1aW50OF90OwogCkBAIC0xMTE4LDgg
KzExMjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBmbHVzaFBlbmRpbmdFZGl0b3JTdGF0ZVVwZGF0
ZSgpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICB2b2lkIGhh
c1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhv
c3QsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2Fs
bGJhY2spOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVI
b3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spOworICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vz
cyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNj
ZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFdl
YkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE2NDhjNmIwMjU5YWY3YzRkMmExYjc2
Y2Y3NTA4ZGE4MDQ0NzgxMzcuLmJlMTk5NTMwY2Y0Nzg4ZWRmNjNkMmRkMzkxMjExMDlhMTRhMzQy
NGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxOS0wNS0wNiAgSm9obiBXaWxhbmRlciAgPHdp
bGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBTdG9yYWdlIEFjY2VzcyBBUEk6IE1ha2UgdHdv
IGNoYW5nZXMgcmVxdWVzdGVkIGJ5IGRldmVsb3BlcnMgYW5kIGNvbXBsZXRlIHJlZmFjdG9yaW5n
IGFuZCBjbGVhbnVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTc2NDgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUwNTI3NDkzPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjaGFuZ2VkIHRlc3Qg
Y2FzZXMgaGF2ZSBoYWQgY2FsbHMgdG8gV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRVc2VyR3JhbnRz
U3RvcmFnZUFjY2VzcygpIHJlbW92ZWQKKyAgICAgICAgc2luY2UgaXQgd2FzIGRlYWQgY29kZS4K
KworICAgICAgICBPbmUgb2YgdGhlIG5ldyB0ZXN0cywgZGVueS13aXRoLXByb21wdC1kb2VzLW5v
dC1wcmVzZXJ2ZS1nZXN0dXJlLmh0bWwsIGlzIG1hcmtlZCBbIFNraXAgXSBmb3Igbm93IHNpbmNl
CisgICAgICAgIHdlIGxhY2sgdGhlIGFiaWxpdHkgdG8gY2xpY2sgIkRvbid0IGFsbG93IiBpbiB0
aGUgcHJvbXB0LiBJIHdhbnRlZCB0byBpbmNsdWRlIHRoZSB0ZXN0IGFueXdheSBzbyB0aGF0Cisg
ICAgICAgIHdlIGhhdmUgaXQuIEkgaGF2ZSBkb25lIGEgbWFudWFsIHRlc3QgdG8gbWFrZSBzdXJl
IHRoZSBjb2RlIGRvZXMgdGhlIHJpZ2h0IHRoaW5nIGZvciB0aGlzIGNhc2UuCisKKyAgICAgICAg
KiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZGVueS13aXRoLXByb21wdC1kb2VzLW5vdC1wcmVz
ZXJ2ZS1nZXN0dXJlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9z
dG9yYWdlQWNjZXNzL2Rlbnktd2l0aC1wcm9tcHQtZG9lcy1ub3QtcHJlc2VydmUtZ2VzdHVyZS5o
dG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVx
dWVzdC1hbmQtZ3JhbnQtYWNjZXNzLWNyb3NzLW9yaWdpbi1ub24tc2FuZGJveGVkLWlmcmFtZS1w
b3Atd2luZG93Lmh0bWwuCisgICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnkt
d2l0aG91dC1wcm9tcHQtcHJlc2VydmVzLWdlc3R1cmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZGVueS13aXRob3V0LXByb21wdC1wcmVz
ZXJ2ZXMtZ2VzdHVyZS5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0
b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtYWNjZXNzLWNyb3NzLW9yaWdpbi1ub24tc2Fu
ZGJveGVkLWlmcmFtZS1wb3Atd2luZG93Lmh0bWwuCisgICAgICAgICogaHR0cC90ZXN0cy9zdG9y
YWdlQWNjZXNzL2dyYW50LXdpdGgtcHJvbXB0LXByZXNlcnZlcy1nZXN0dXJlLWV4cGVjdGVkLnR4
dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1
ZXN0LWFuZC1ncmFudC1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLW5vbi1zYW5kYm94ZWQtaWZyYW1lLXBv
cC13aW5kb3ctZXhwZWN0ZWQudHh0LgorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vz
cy9ncmFudC13aXRoLXByb21wdC1wcmVzZXJ2ZXMtZ2VzdHVyZS5odG1sOiBSZW5hbWVkIGZyb20g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LWFj
Y2Vzcy1jcm9zcy1vcmlnaW4tbm9uLXNhbmRib3hlZC1pZnJhbWUtcG9wLXdpbmRvdy5odG1sLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1hY2Nlc3MtdHJ1
ZS1pZi1mZWF0dXJlLW9mZi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1hY2Nlc3MtdHJ1ZS1pZi1mZWF0dXJlLW9mZi5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2Vz
L3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtYW5kLWltbWVkaWF0ZWx5LXBvc3RtZXNzYWdlLWlmcmFt
ZS5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvcmVx
dWVzdC1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUtYW5kLXBvcC13aW5kb3cuaHRtbDoKKyAgICAgICAg
KiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nl
c3MtaWZyYW1lLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jlc291
cmNlcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXdpdGhvdXQtdXNlci1nZXN0dXJlLWlmcmFtZS5o
dG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvc2VsZi1u
YXZpZ2F0aW5nLWZyYW1lLWFmdGVyLWdyYW50ZWQtYWNjZXNzLmh0bWw6CisgICAgICAgICogcGxh
dGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAgICAgQWRkZWQgZXhwZWN0
YXRpb25zIGZvciB0aGUgbmV3IHRlc3RzLgorCiAyMDE5LTA1LTA2ICBBbmRyZXMgR29uemFsZXog
IDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBIaXRwb2ludCBmb3IgbGluayB3aGlj
aCBzcGFucyB0d28gbGluZXMgaW4gd2ViIGNvbnRlbnQgaXMgaW5jb3JyZWN0CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZGVueS13aXRoLXByb21wdC1k
b2VzLW5vdC1wcmVzZXJ2ZS1nZXN0dXJlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc3RvcmFnZUFjY2Vzcy9kZW55LXdpdGgtcHJvbXB0LWRvZXMtbm90LXByZXNlcnZlLWdl
c3R1cmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllOTc5NzU2Nzc5NTllMmUxM2VkNzQ0NDlj
NGFhZmY2ZjFiMDAzODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3N0b3JhZ2VBY2Nlc3MvZGVueS13aXRoLXByb21wdC1kb2VzLW5vdC1wcmVzZXJ2ZS1nZXN0dXJl
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitUZXN0cyB0aGF0IGEgY3Jvc3Mtb3JpZ2lu
IGlmcmFtZSBjYW4gbm90IG9wZW4gYSB3aW5kb3cgaWYgc3RvcmFnZSBhY2Nlc3MgaXMgZXhwbGlj
aXRseSBkZW5pZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIFdpbmRv
dyB3YXMgc3VjY2Vzc2Z1bGx5IG9wZW5lZCB3aXRoIHVzZXIgaW50ZXJhY3Rpb24gc2luY2UgdGhl
IHVzZXIgd2FzIG5ldmVyIGNvbnN1bHRlZC9wcm9tcHRlZC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKK1NvbWUgdGVzdHMgZmFpbGVkLgorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9kZW55LXdpdGgtcHJv
bXB0LWRvZXMtbm90LXByZXNlcnZlLWdlc3R1cmUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc3RvcmFnZUFjY2Vzcy9kZW55LXdpdGgtcHJvbXB0LWRvZXMtbm90LXByZXNlcnZlLWdlc3R1
cmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lOTdhMjBkOWY4MjQxZmM4NjM0YWIxZjgwZTNhM2IzZmEwYTAx
MjZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNj
ZXNzL2Rlbnktd2l0aC1wcm9tcHQtZG9lcy1ub3QtcHJlc2VydmUtZ2VzdHVyZS5odG1sCkBAIC0w
LDAgKzEsNzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0
IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL3V0aWwuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGEg
Y3Jvc3Mtb3JpZ2luIGlmcmFtZSBjYW4gbm90IG9wZW4gYSB3aW5kb3cgaWYgc3RvcmFnZSBhY2Nl
c3MgaXMgZXhwbGljaXRseSBkZW5pZWQuIik7CisgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVl
OworCisgICAgICAgIGNvbnN0IGhvc3RVbmRlclRlc3QgPSAibG9jYWxob3N0OjgwMDAiOworICAg
ICAgICBjb25zdCBzdGF0aXN0aWNzVXJsID0gImh0dHA6Ly8iICsgaG9zdFVuZGVyVGVzdCArICIv
dGVtcCI7CisKKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWNl
aXZlTWVzc2FnZSwgZmFsc2UpOworCisgICAgICAgIGZ1bmN0aW9uIHJlY2VpdmVNZXNzYWdlKGV2
ZW50KSB7CisgICAgICAgICAgICBpZiAoZXZlbnQub3JpZ2luID09PSAiaHR0cDovL2xvY2FsaG9z
dDo4MDAwIikgeworICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLmluZGV4T2YoIlBBU1Mg
IikgIT09IC0xKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKGV2ZW50LmRhdGEucmVw
bGFjZSgiUEFTUyAiLCAiIikpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZChldmVudC5kYXRhLnJlcGxhY2UoIkZBSUwgIiwgIiIpKTsKKyAgICAg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlJlY2VpdmVkIGEgbWVz
c2FnZSBmcm9tIGFuIHVuZXhwZWN0ZWQgb3JpZ2luOiAiICsgZXZlbnQub3JpZ2luKTsKKyAgICAg
ICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElkKSB7CisgICAgICAg
ICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7Cisg
ICAgICAgICAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zm
c2V0V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9mZnNldFRv
cCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIFVJSGVscGVyLmFjdGl2
YXRlQXQoY2VudGVyWCwgY2VudGVyWSkudGhlbigKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAg
ICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJlc2NhcGUiKTsKKyAgICAgICAg
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJO
byBldmVudFNlbmRlci4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1
cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiUHJvbWlzZSByZWplY3RlZC4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcnVuVGVz
dCgpIHsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRDYW5PcGVuV2luZG93cyhmYWxzZSk7CisgICAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRQb3B1cEJsb2NraW5nRW5hYmxlZCh0cnVlKTsKKyAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShz
dGF0aXN0aWNzVXJsLCB0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwp
KQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQgbm90IGdldCBz
ZXQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOworICAgICAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLnNldFN0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oc3RhdGlzdGljc1VybCwgdHJ1
ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIu
aXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKHN0YXRpc3RpY3NVcmwpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgbG9nZ2Vk
IGZvciB1c2VyIGludGVyYWN0aW9uLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5zdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmcoZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGV0IGlmcmFtZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJpZnJhbWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZnJhbWVFbGVt
ZW50Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhY3RpdmF0ZUVsZW1lbnQoIlRoZUlmcmFtZVRoYXRSZXF1ZXN0c1N0b3JhZ2VBY2Nlc3MiKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmcmFtZUVsZW1lbnQuaWQgPSAiVGhlSWZyYW1lVGhhdFJlcXVlc3RzU3RvcmFnZUFjY2Vz
cyI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5zcmMgPSAiaHR0
cDovL2xvY2FsaG9zdDo4MDAwL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFn
ZS1hY2Nlc3MtaWZyYW1lLWFuZC1wb3Atd2luZG93Lmh0bWwjdXNlclNob3VsZE5vdEdyYW50QWNj
ZXNzLHVzZXJTaG91bGRCZUNvbnN1bHRlZCxwb2xpY3lTaG91bGROb3RHcmFudEFjY2Vzcyxpc05v
dFNhbWVPcmlnaW5JZnJhbWUiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lRWxlbWVudCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25s
b2FkPSJydW5UZXN0KCkiPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9k
ZW55LXdpdGhvdXQtcHJvbXB0LXByZXNlcnZlcy1nZXN0dXJlLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9kZW55LXdpdGhvdXQtcHJvbXB0LXByZXNl
cnZlcy1nZXN0dXJlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGFmZGUzNGQ3NDI2M2NjNTJl
YmZjZDY0MzcxMTYxNjAxZjYzMjEwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnktd2l0aG91dC1wcm9tcHQtcHJlc2VydmVzLWdlc3R1
cmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIHRoYXQgYSBjcm9zcy1vcmln
aW4gaWZyYW1lIGNhbiBvcGVuIGEgd2luZG93IGlmIHN0b3JhZ2UgYWNjZXNzIGlzIGRlbmllZCB3
aXRob3V0IHByb21wdC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgV2lu
ZG93IHdhcyBzdWNjZXNzZnVsbHkgb3BlbmVkIHdpdGggdXNlciBpbnRlcmFjdGlvbiBzaW5jZSB0
aGUgdXNlciB3YXMgbmV2ZXIgY29uc3VsdGVkL3Byb21wdGVkLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9kZW55LXdpdGhvdXQtcHJvbXB0LXByZXNlcnZlcy1n
ZXN0dXJlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZGVueS13
aXRob3V0LXByb21wdC1wcmVzZXJ2ZXMtZ2VzdHVyZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxZmM0ZDhi
ZGViNjI2MGFhZTlhZWMwYTI0NmJlYTVmMjE2YTAxNmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZGVueS13aXRob3V0LXByb21wdC1wcmVz
ZXJ2ZXMtZ2VzdHVyZS5odG1sCkBAIC0wLDAgKzEsNzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVs
cGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGRl
c2NyaXB0aW9uKCJUZXN0cyB0aGF0IGEgY3Jvc3Mtb3JpZ2luIGlmcmFtZSBjYW4gb3BlbiBhIHdp
bmRvdyBpZiBzdG9yYWdlIGFjY2VzcyBpcyBkZW5pZWQgd2l0aG91dCBwcm9tcHQuIik7CisgICAg
ICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIGNvbnN0IGhvc3RVbmRlclRlc3Qg
PSAibG9jYWxob3N0OjgwMDAiOworICAgICAgICBjb25zdCBzdGF0aXN0aWNzVXJsID0gImh0dHA6
Ly8iICsgaG9zdFVuZGVyVGVzdCArICIvdGVtcCI7CisKKyAgICAgICAgd2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWNlaXZlTWVzc2FnZSwgZmFsc2UpOworCisgICAgICAgIGZ1
bmN0aW9uIHJlY2VpdmVNZXNzYWdlKGV2ZW50KSB7CisgICAgICAgICAgICBpZiAoZXZlbnQub3Jp
Z2luID09PSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIikgeworICAgICAgICAgICAgICAgIGlmIChl
dmVudC5kYXRhLmluZGV4T2YoIlBBU1MgIikgIT09IC0xKQorICAgICAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKGV2ZW50LmRhdGEucmVwbGFjZSgiUEFTUyAiLCAiIikpOworICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChldmVudC5kYXRhLnJlcGxh
Y2UoIkZBSUwgIiwgIiIpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoIlJlY2VpdmVkIGEgbWVzc2FnZSBmcm9tIGFuIHVuZXhwZWN0ZWQgb3JpZ2luOiAi
ICsgZXZlbnQub3JpZ2luKTsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZp
bmlzaEpTVGVzdCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1l
bnQoZWxlbWVudElkKSB7CisgICAgICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKGVsZW1lbnRJZCk7CisgICAgICAgICAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQu
b2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIGNl
bnRlclkgPSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAg
ICAgICAgICAgIFVJSGVscGVyLmFjdGl2YXRlQXQoY2VudGVyWCwgY2VudGVyWSkudGhlbigKKyAg
ICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlE
b3duKCJlc2NhcGUiKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJObyBldmVudFNlbmRlci4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiUHJvbWlzZSByZWplY3Rl
ZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNo
SlNUZXN0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICApOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1
cmUodHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRDYW5P
cGVuV2luZG93cyhmYWxzZSk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRQb3B1cEJs
b2NraW5nRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRp
c3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsLCB0cnVlLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVu
dFJlc291cmNlKHN0YXRpc3RpY3NVcmwpKQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiSG9zdCBkaWQgbm90IGdldCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOworICAg
ICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJh
Y3Rpb24oc3RhdGlzdGljc1VybCwgZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9u
KHN0YXRpc3RpY3NVcmwpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
Ikhvc3QgZGlkIGdldCBsb2dnZWQgZm9yIHVzZXIgaW50ZXJhY3Rpb24uIik7CisgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NVcGRhdGVDb29raWVCbG9ja2luZyhm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWZyYW1lRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmcmFtZUVsZW1lbnQub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFjdGl2YXRlRWxlbWVudCgiVGhlSWZyYW1lVGhhdFJlcXVl
c3RzU3RvcmFnZUFjY2VzcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5pZCA9ICJUaGVJZnJhbWVUaGF0
UmVxdWVzdHNTdG9yYWdlQWNjZXNzIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZnJh
bWVFbGVtZW50LnNyYyA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvc3RvcmFnZUFjY2Vzcy9yZXNv
dXJjZXMvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUtYW5kLXBvcC13aW5kb3cuaHRtbCN1
c2VyU2hvdWxkTm90R3JhbnRBY2Nlc3MsdXNlclNob3VsZE5vdEJlQ29uc3VsdGVkLHBvbGljeVNo
b3VsZE5vdEdyYW50QWNjZXNzLGlzTm90U2FtZU9yaWdpbklmcmFtZSI7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWVFbGVtZW50KTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2JvZHk+Cis8L2h0bWw+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2dyYW50LXdpdGgtcHJvbXB0LXByZXNlcnZlcy1nZXN0dXJl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFu
dC13aXRoLXByb21wdC1wcmVzZXJ2ZXMtZ2VzdHVyZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDdlYzRjZjdmNzg0MWQ1N2M2OGRkYjVmYTY2Y2I1NjM0YjMxZGEzYgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC13aXRoLXByb21w
dC1wcmVzZXJ2ZXMtZ2VzdHVyZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMg
dGhhdCBjcm9zcy1vcmlnaW4gaWZyYW1lIGNhbiBkaXNwbGF5IGEgd2luZG93IGlmIHN0b3JhZ2Ug
YWNjZXNzIGlzIGdyYW50ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IFdpbmRvdyB3YXMgc3VjY2Vzc2Z1bGx5IG9wZW5lZCB3aXRoIHVzZXIgaW50ZXJhY3Rpb24uCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2dyYW50LXdpdGgtcHJv
bXB0LXByZXNlcnZlcy1nZXN0dXJlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3Jh
Z2VBY2Nlc3MvZ3JhbnQtd2l0aC1wcm9tcHQtcHJlc2VydmVzLWdlc3R1cmUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44MzQxMjgzODE2ZTA3OWRkNjNjNGM5YjY2Mzk3NTJiNmYyYTNiY2M3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2dyYW50LXdpdGgt
cHJvbXB0LXByZXNlcnZlcy1nZXN0dXJlLmh0bWwKQEAgLTAsMCArMSw3NCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291
cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4K
KyAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgY3Jvc3Mtb3JpZ2luIGlmcmFtZSBjYW4g
ZGlzcGxheSBhIHdpbmRvdyBpZiBzdG9yYWdlIGFjY2VzcyBpcyBncmFudGVkLiIpOworICAgICAg
ICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICBjb25zdCBob3N0VW5kZXJUZXN0ID0g
ImxvY2FsaG9zdDo4MDAwIjsKKyAgICAgICAgY29uc3Qgc3RhdGlzdGljc1VybCA9ICJodHRwOi8v
IiArIGhvc3RVbmRlclRlc3QgKyAiL3RlbXAiOworCisgICAgICAgIHdpbmRvdy5hZGRFdmVudExp
c3RlbmVyKCJtZXNzYWdlIiwgcmVjZWl2ZU1lc3NhZ2UsIGZhbHNlKTsKKworICAgICAgICBmdW5j
dGlvbiByZWNlaXZlTWVzc2FnZShldmVudCkgeworICAgICAgICAgICAgaWYgKGV2ZW50Lm9yaWdp
biA9PT0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXZl
bnQuZGF0YS5pbmRleE9mKCJQQVNTICIpICE9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgdGVz
dFBhc3NlZChldmVudC5kYXRhLnJlcGxhY2UoIlBBU1MgIiwgIiIpKTsKKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoZXZlbnQuZGF0YS5yZXBsYWNl
KCJGQUlMICIsICIiKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJSZWNlaXZlZCBhIG1lc3NhZ2UgZnJvbSBhbiB1bmV4cGVjdGVkIG9yaWdpbjogIiAr
IGV2ZW50Lm9yaWdpbik7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5p
c2hKU1Rlc3QpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gYWN0aXZhdGVFbGVtZW50
KGVsZW1lbnRJZCkgeworICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZChlbGVtZW50SWQpOworICAgICAgICAgICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9m
ZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciBjZW50
ZXJZID0gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAg
ICAgICAgICBVSUhlbHBlci5hY3RpdmF0ZUF0KGNlbnRlclgsIGNlbnRlclkpLnRoZW4oCisgICAg
ICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93
LmV2ZW50U2VuZGVyKQorICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93
bigiZXNjYXBlIik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiTm8gZXZlbnRTZW5kZXIuIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlByb21pc2UgcmVqZWN0ZWQu
Iik7CisgICAgICAgICAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpT
VGVzdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJl
KHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3Bl
bldpbmRvd3MoZmFsc2UpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0UG9wdXBCbG9j
a2luZ0VuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0
aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCwgdHJ1ZSwgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRS
ZXNvdXJjZShzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0
aW9uKHN0YXRpc3RpY3NVcmwsIHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihz
dGF0aXN0aWNzVXJsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJI
b3N0IGRpZCBub3QgZ2V0IGxvZ2dlZCBmb3IgdXNlciBpbnRlcmFjdGlvbi4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNvb2tpZUJsb2NraW5n
KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpZnJhbWVFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZhdGVFbGVtZW50KCJUaGVJZnJhbWVUaGF0UmVx
dWVzdHNTdG9yYWdlQWNjZXNzIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50LmlkID0gIlRoZUlmcmFtZVRo
YXRSZXF1ZXN0c1N0b3JhZ2VBY2Nlc3MiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
cmFtZUVsZW1lbnQuc3JjID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zdG9yYWdlQWNjZXNzL3Jl
c291cmNlcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLWlmcmFtZS1hbmQtcG9wLXdpbmRvdy5odG1s
I3VzZXJTaG91bGRHcmFudEFjY2Vzcyx1c2VyU2hvdWxkQmVDb25zdWx0ZWQscG9saWN5U2hvdWxk
R3JhbnRBY2Nlc3MsaXNOb3RTYW1lT3JpZ2luSWZyYW1lIjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZUVsZW1lbnQpOworICAgICAg
ICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3N0b3JhZ2VBY2Nlc3MvaGFzLXN0b3JhZ2UtYWNjZXNzLXRydWUtaWYtZmVhdHVyZS1vZmYtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9y
YWdlLWFjY2Vzcy10cnVlLWlmLWZlYXR1cmUtb2ZmLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
NDk2MzFiMTRjOGM2NDQwYTAzNjgzMjU2MjUwNWUxMjA5ODZjNDhlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vz
cy10cnVlLWlmLWZlYXR1cmUtb2ZmLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0
cyB0aGF0IGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3MoKSByZXR1cm5zIHRydWUgZm9yIGEgM3Jk
LXBhcnR5IGlmcmFtZSBpZiB0aGVyZSBpcyBubyB3YXkgdG8gcmVxdWVzdCBhY2Nlc3MgKGZlYXR1
cmUgb2ZmKS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgSGFzIHN0b3Jh
Z2UgYWNjZXNzLiBkb2N1bWVudC5jb29raWUgPT0gLCBjb29raWVzIHNlZW4gc2VydmVyLXNpZGUg
PT0gIk5vIGNvb2tpZXMiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNj
ZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy10cnVlLWlmLWZlYXR1cmUtb2ZmLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvaGFzLXN0b3JhZ2UtYWNjZXNzLXRydWUtaWYt
ZmVhdHVyZS1vZmYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kM2ZjYjUyZDEwNDRjNzkyZjI3NjE2N2QwNjE3
ZWZlYmJhOTViMjgxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
dG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy10cnVlLWlmLWZlYXR1cmUtb2ZmLmh0bWwK
QEAgLTAsMCArMSwzOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxz
Y3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvdXRpbC5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRo
YXQgZG9jdW1lbnQuaGFzU3RvcmFnZUFjY2VzcygpIHJldHVybnMgdHJ1ZSBmb3IgYSAzcmQtcGFy
dHkgaWZyYW1lIGlmIHRoZXJlIGlzIG5vIHdheSB0byByZXF1ZXN0IGFjY2VzcyAoZmVhdHVyZSBv
ZmYpLiIpOworICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB3aW5kb3cu
YWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY2VpdmVNZXNzYWdlLCBmYWxzZSk7CisKKyAg
ICAgICAgZnVuY3Rpb24gcmVjZWl2ZU1lc3NhZ2UoZXZlbnQpIHsKKyAgICAgICAgICAgIGlmIChl
dmVudC5vcmlnaW4gPT09ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiKSB7CisgICAgICAgICAgICAg
ICAgaWYgKGV2ZW50LmRhdGEuaW5kZXhPZigiUEFTUyIpICE9PSAtMSkKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZChldmVudC5kYXRhLnJlcGxhY2UoIlBBU1MgIiwgIiIpKTsKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoZXZlbnQuZGF0
YS5yZXBsYWNlKCJGQUlMICIsICIiKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJSZWNlaXZlZCBhIG1lc3NhZ2UgZnJvbSBhbiB1bmV4cGVjdGVkIG9y
aWdpbjogIiArIGV2ZW50Lm9yaWdpbik7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZh
bHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgaG9zdFVuZGVy
VGVzdCA9ICJsb2NhbGhvc3Q6ODAwMCI7CisgICAgICAgIGNvbnN0IHN0YXRpc3RpY3NVcmwgPSAi
aHR0cDovLyIgKyBob3N0VW5kZXJUZXN0ICsgIi90ZW1wIjsKKyAgICAgICAgZnVuY3Rpb24gcnVu
VGVzdCgpIHsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgIGxldCBpZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiaWZyYW1lIik7CisgICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5pZCA9ICJUaGVJ
ZnJhbWVUaGF0UmVxdWVzdHNTdG9yYWdlQWNjZXNzIjsKKyAgICAgICAgICAgICAgICBpZnJhbWVF
bGVtZW50LnNyYyA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvc3RvcmFnZUFjY2Vzcy9yZXNvdXJj
ZXMvaGFzLXN0b3JhZ2UtYWNjZXNzLWlmcmFtZS5odG1sI3BvbGljeVNob3VsZEdyYW50QWNjZXNz
IjsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZUVsZW1l
bnQpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3Jh
Z2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtYWNjZXNzLWNyb3NzLW9yaWdpbi1ub24tc2FuZGJv
eGVkLWlmcmFtZS1wb3Atd2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLW5v
bi1zYW5kYm94ZWQtaWZyYW1lLXBvcC13aW5kb3ctZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBkN2VjNGNmN2Y3ODQxZDU3YzY4ZGRiNWZhNjZjYjU2MzRiMzFkYTNi
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1hY2Nlc3MtY3Jv
c3Mtb3JpZ2luLW5vbi1zYW5kYm94ZWQtaWZyYW1lLXBvcC13aW5kb3ctZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotVGVzdHMgdGhhdCBjcm9zcy1vcmlnaW4gaWZy
YW1lIGNhbiBkaXNwbGF5IGEgd2luZG93IGlmIHN0b3JhZ2UgYWNjZXNzIGlzIGdyYW50ZWQuCi0K
LU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIFdpbmRvdyB3YXMgc3VjY2Vzc2Z1
bGx5IG9wZW5lZCB3aXRoIHVzZXIgaW50ZXJhY3Rpb24uCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LWFjY2Vzcy1jcm9zcy1vcmln
aW4tbm9uLXNhbmRib3hlZC1pZnJhbWUtcG9wLXdpbmRvdy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LWFjY2Vzcy1jcm9zcy1vcmln
aW4tbm9uLXNhbmRib3hlZC1pZnJhbWUtcG9wLXdpbmRvdy5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAyOTFmOWZiYjQxN2FmNzZkZTY2YjVmOTQ4NzEzZGQwODYxYzk2YzM2Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1hY2Nlc3MtY3Jvc3Mt
b3JpZ2luLW5vbi1zYW5kYm94ZWQtaWZyYW1lLXBvcC13aW5kb3cuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDc1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8
c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgotICAg
IDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4K
LSAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL3V0aWwu
anMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQ+Ci0gICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0
aGF0IGNyb3NzLW9yaWdpbiBpZnJhbWUgY2FuIGRpc3BsYXkgYSB3aW5kb3cgaWYgc3RvcmFnZSBh
Y2Nlc3MgaXMgZ3JhbnRlZC4iKTsKLSAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7Ci0KLSAg
ICAgICAgY29uc3QgaG9zdFVuZGVyVGVzdCA9ICJsb2NhbGhvc3Q6ODAwMCI7Ci0gICAgICAgIGNv
bnN0IHN0YXRpc3RpY3NVcmwgPSAiaHR0cDovLyIgKyBob3N0VW5kZXJUZXN0ICsgIi90ZW1wIjsK
LQotICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY2VpdmVNZXNz
YWdlLCBmYWxzZSk7Ci0KLSAgICAgICAgZnVuY3Rpb24gcmVjZWl2ZU1lc3NhZ2UoZXZlbnQpIHsK
LSAgICAgICAgICAgIGlmIChldmVudC5vcmlnaW4gPT09ICJodHRwOi8vbG9jYWxob3N0OjgwMDAi
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuaW5kZXhPZigiUEFTUyAiKSAhPT0g
LTEpCi0gICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJQ
QVNTICIsICIiKSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKGV2ZW50LmRhdGEpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiUmVjZWl2ZWQgYSBtZXNzYWdlIGZyb20gYW4gdW5leHBlY3RlZCBvcmln
aW46ICIgKyBldmVudC5vcmlnaW4pOwotICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxz
ZSwgZmluaXNoSlNUZXN0KTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGFjdGl2YXRl
RWxlbWVudChlbGVtZW50SWQpIHsKLSAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKLSAgICAgICAgICAgIHZhciBjZW50ZXJYID0gZWxl
bWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7Ci0gICAgICAgICAgICB2
YXIgY2VudGVyWSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAy
OwotICAgICAgICAgICAgVUlIZWxwZXIuYWN0aXZhdGVBdChjZW50ZXJYLCBjZW50ZXJZKS50aGVu
KAotICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KHdpbmRvdy5ldmVudFNlbmRlcikKLSAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmtleURvd24oImVzY2FwZSIpOwotICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk5vIGV2ZW50U2VuZGVyLiIpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKLSAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAg
ZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJQcm9taXNlIHJl
amVjdGVkLiIpOwotICAgICAgICAgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBm
aW5pc2hKU1Rlc3QpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICk7Ci0gICAgICAg
IH0KLQotICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgewotICAgICAgICAgICAgc2V0RW5hYmxl
RmVhdHVyZSh0cnVlLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dENhbk9wZW5XaW5kb3dzKGZhbHNlKTsKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFBv
cHVwQmxvY2tpbmdFbmFibGVkKHRydWUpOwotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwsIHRydWUsIGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJl
dmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCkpCi0gICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7
Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0hhc0hhZFVzZXJJ
bnRlcmFjdGlvbihzdGF0aXN0aWNzVXJsLCB0cnVlLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJh
Y3Rpb24oc3RhdGlzdGljc1VybCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiSG9zdCBkaWQgbm90IGdldCBsb2dnZWQgZm9yIHVzZXIgaW50ZXJhY3Rpb24uIik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NVcGRhdGVDb29raWVC
bG9ja2luZyhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWZy
YW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQub25sb2FkID0gZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2YXRlRWxlbWVudCgiVGhlSWZyYW1l
VGhhdFJlcXVlc3RzU3RvcmFnZUFjY2VzcyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5pZCA9ICJUaGVJ
ZnJhbWVUaGF0UmVxdWVzdHNTdG9yYWdlQWNjZXNzIjsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZnJhbWVFbGVtZW50LnNyYyA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvc3RvcmFnZUFj
Y2Vzcy9yZXNvdXJjZXMvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUtYW5kLXBvcC13aW5k
b3cuaHRtbCN1c2VyU2hvdWxkR3JhbnRBY2Nlc3MsdXNlclNob3VsZEJlQ29uc3VsdGVkLHBvbGlj
eVNob3VsZEdyYW50QWNjZXNzLGlzTm90U2FtZU9yaWdpbklmcmFtZSI7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWVFbGVtZW50KTsK
LQotICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwot
ICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICA8L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTwvYm9keT4KLTwvaHRt
bD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mt
YW5kLWltbWVkaWF0ZWx5LXBvc3RtZXNzYWdlLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLWFu
ZC1pbW1lZGlhdGVseS1wb3N0bWVzc2FnZS1pZnJhbWUuaHRtbAppbmRleCAyODQwZmMxMzUwOTRm
NjBkMTVhYzlhMTI2YmEyN2Q3YWNjNjNiY2U1Li41ZDk0ODAxNWUwNzUyMjgwNzFkMjRiZDNjN2Mz
YTAxN2E3MjA3MzE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VB
Y2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtYW5kLWltbWVkaWF0ZWx5LXBv
c3RtZXNzYWdlLWlmcmFtZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFn
ZUFjY2Vzcy9yZXNvdXJjZXMvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1hbmQtaW1tZWRpYXRlbHkt
cG9zdG1lc3NhZ2UtaWZyYW1lLmh0bWwKQEAgLTEsOSArMSw2IEBACiA8aHRtbD4KIDxoZWFkPgog
ICAgIDxzY3JpcHQ+Ci0gICAgICAgIGlmIChpbnRlcm5hbHMpCi0gICAgICAgICAgICBpbnRlcm5h
bHMuc2V0VXNlckdyYW50c1N0b3JhZ2VBY2Nlc3ModHJ1ZSk7Ci0KICAgICAgICAgZnVuY3Rpb24g
bWFrZVJlcXVlc3RXaXRoVXNlckdlc3R1cmUoKSB7CiAgICAgICAgICAgICBkb2N1bWVudC5yZXF1
ZXN0U3RvcmFnZUFjY2VzcygpOwogICAgICAgICAgICAgdG9wLnBvc3RNZXNzYWdlKCJBUEkgY2Fs
bGVkLiIsICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvcmVxdWVzdC1zdG9yYWdlLWFjY2Vz
cy1pZnJhbWUtYW5kLXBvcC13aW5kb3cuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3Rv
cmFnZUFjY2Vzcy9yZXNvdXJjZXMvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUtYW5kLXBv
cC13aW5kb3cuaHRtbAppbmRleCA4ZGE1MmJmZmIwOGQ2OWU1ZmY2ZDZmZjk2NzczMTc2OTJkZmQ0
OTM0Li40NjcxNGZlZGZiOTA3Zjk4ZGJmZjQwY2E2MGUyMjcyNTE4ZjhhNzRiIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qt
c3RvcmFnZS1hY2Nlc3MtaWZyYW1lLWFuZC1wb3Atd2luZG93Lmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9yZXF1ZXN0LXN0b3JhZ2UtYWNj
ZXNzLWlmcmFtZS1hbmQtcG9wLXdpbmRvdy5odG1sCkBAIC04LDkgKzgsNiBAQAogICAgICAgICBj
b25zdCBpc1NhbWVPcmlnaW5JZnJhbWUgPSBoYXNoQXJndW1lbnRzWzNdID09PSAiaXNTYW1lT3Jp
Z2luSWZyYW1lIjsKICAgICAgICAgY29uc3Qgb3JpZ2luSXNOdWxsID0gaGFzaEFyZ3VtZW50c1s0
XSA9PT0gIm9yaWdpbklzTnVsbCI7CiAKLSAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0g
ICAgICAgICAgICBpbnRlcm5hbHMuc2V0VXNlckdyYW50c1N0b3JhZ2VBY2Nlc3ModXNlclNob3Vs
ZEdyYW50QWNjZXNzKTsKLQogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3MoZmFsc2UpOwogICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRQb3B1cEJsb2NraW5nRW5hYmxlZCh0cnVlKTsKQEAgLTI1LDEwICsyMiwx
NCBAQAogCiAgICAgICAgIGZ1bmN0aW9uIHdpbmRvd1dhc09wZW5lZCgpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICh1c2VyU2hvdWxkR3JhbnRBY2Nlc3MpCisgICAgICAgICAgICBpZiAodXNl
clNob3VsZEJlQ29uc3VsdGVkICYmIHVzZXJTaG91bGRHcmFudEFjY2VzcykKICAgICAgICAgICAg
ICAgICBtZXNzYWdlVG9Ub3AoIlBBU1MgV2luZG93IHdhcyBzdWNjZXNzZnVsbHkgb3BlbmVkIHdp
dGggdXNlciBpbnRlcmFjdGlvbi4iKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHVzZXJTaG91bGRC
ZUNvbnN1bHRlZCAmJiAhdXNlclNob3VsZEdyYW50QWNjZXNzKQorICAgICAgICAgICAgICAgIG1l
c3NhZ2VUb1RvcCgiRkFJTCBXaW5kb3cgd2FzIG9wZW5lZCBldmVuIHRob3VnaCB0aGUgdXNlciBl
eHBsaWNpdGx5IGRlY2xpbmVkIHBlcm1pc3Npb24uIik7CisgICAgICAgICAgICBlbHNlIGlmICgh
dXNlclNob3VsZEJlQ29uc3VsdGVkICYmICF1c2VyU2hvdWxkR3JhbnRBY2Nlc3MpCisgICAgICAg
ICAgICAgICAgbWVzc2FnZVRvVG9wKCJQQVNTIFdpbmRvdyB3YXMgc3VjY2Vzc2Z1bGx5IG9wZW5l
ZCB3aXRoIHVzZXIgaW50ZXJhY3Rpb24gc2luY2UgdGhlIHVzZXIgd2FzIG5ldmVyIGNvbnN1bHRl
ZC9wcm9tcHRlZC4iKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtZXNzYWdl
VG9Ub3AoIldpbmRvdyB3YXMgb3BlbmVkIGV2ZW4gdGhvdWdoIHRoZSB1c2VyIGRlY2xpbmVkIHBl
cm1pc3Npb24uIik7CisgICAgICAgICAgICAgICAgbWVzc2FnZVRvVG9wKCJGQUlMIENvbmZsaWN0
aW5nIGluc3RydWN0aW9uczogIXVzZXJTaG91bGRCZUNvbnN1bHRlZCAmJiB1c2VyU2hvdWxkR3Jh
bnRBY2Nlc3MgLiIpOwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gbWFrZVJlcXVlc3RX
aXRoVXNlckdlc3R1cmUoKSB7CkBAIC00OCwxMiArNDksMTQgQEAKICAgICAgICAgZnVuY3Rpb24g
Y29udGludWVBZnRlclJlcXVlc3RXaXRoVXNlckdlc3R1cmUoKSB7CiAgICAgICAgICAgICB2YXIg
d2luID0gd2luZG93Lm9wZW4oInJlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mtc2Vjb25kLXdpbmRvdy5o
dG1sIiwgInRlc3Qgd2luZG93Iik7CiAgICAgICAgICAgICBpZiAoIXdpbikgewotICAgICAgICAg
ICAgICAgIGlmICh1c2VyU2hvdWxkR3JhbnRBY2Nlc3MpCi0gICAgICAgICAgICAgICAgICAgIG1l
c3NhZ2VUb1RvcCgiV2luZG93IHdhcyBub3Qgb3BlbmVkIGV2ZW4gdGhvdWdoIHRoZSB1c2VyIGdy
YW50ZWQgcGVybWlzc2lvbi4iKTsKLSAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgaWYgKHVzZXJTaG91bGRCZUNvbnN1bHRlZCAmJiB1c2VyU2hvdWxkR3JhbnRBY2Nlc3MpCisg
ICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VUb1RvcCgiRkFJTCBXaW5kb3cgd2FzIG5vdCBvcGVu
ZWQgZXZlbiB0aG91Z2ggdGhlIHVzZXIgZXhwbGljaXRseSBncmFudGVkIHBlcm1pc3Npb24uIik7
CisgICAgICAgICAgICAgICAgZWxzZSBpZiAodXNlclNob3VsZEJlQ29uc3VsdGVkICYmICF1c2Vy
U2hvdWxkR3JhbnRBY2Nlc3MpCiAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VUb1RvcCgiUEFT
UyBXaW5kb3cgd2FzIGJsb2NrZWQgZnJvbSBvcGVuaW5nLiIpOwotICAgICAgICAgICAgfSBlbHNl
IGlmICghdXNlclNob3VsZEdyYW50QWNjZXNzKSB7Ci0gICAgICAgICAgICAgICAgbWVzc2FnZVRv
VG9wKCJXaW5kb3cgd2FzIG9wZW5lZCBldmVuIHRob3VnaCB0aGUgdXNlciBkaWQgbm90IGdyYW50
IHBlcm1pc3Npb24uIik7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoIXVzZXJTaG91bGRCZUNv
bnN1bHRlZCAmJiAhdXNlclNob3VsZEdyYW50QWNjZXNzKQorICAgICAgICAgICAgICAgICAgICBt
ZXNzYWdlVG9Ub3AoIkZBSUwgV2luZG93IHdhcyBibG9ja2VkIGZyb20gb3BlbmluZyBldmVuIHRo
b3VnaCB0aGUgdXNlciB3YXMgbmV2ZXIgY29uc3VsdGVkL3Byb21wdGVkLiIpOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVRvVG9wKCJGQUlMIENvbmZs
aWN0aW5nIGluc3RydWN0aW9uczogIXVzZXJTaG91bGRCZUNvbnN1bHRlZCAmJiB1c2VyU2hvdWxk
R3JhbnRBY2Nlc3MgLiIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3Vy
Y2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtaWZy
YW1lLmh0bWwKaW5kZXggNmFmZDZjOGIxYjJmZTE0ZDdmMTQ3YTRmNmUxODc1ZjEwNzJlZWEwNy4u
NTQzMTMyYzQ2NjExNjA4MmFiMTE3YjNlZjIwODI1YjBhNTI0NDRhZiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9yZXF1ZXN0LXN0b3Jh
Z2UtYWNjZXNzLWlmcmFtZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFn
ZUFjY2Vzcy9yZXNvdXJjZXMvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUuaHRtbApAQCAt
OCw5ICs4LDYgQEAKICAgICAgICAgY29uc3QgaXNTYW1lT3JpZ2luSWZyYW1lID0gaGFzaEFyZ3Vt
ZW50c1szXSA9PT0gImlzU2FtZU9yaWdpbklmcmFtZSI7CiAgICAgICAgIGNvbnN0IG9yaWdpbklz
TnVsbCA9IGhhc2hBcmd1bWVudHNbNF0gPT09ICJvcmlnaW5Jc051bGwiOwogCi0gICAgICAgIGlm
IChpbnRlcm5hbHMgJiYgdXNlclNob3VsZEdyYW50QWNjZXNzKQotICAgICAgICAgICAgICAgIGlu
dGVybmFscy5zZXRVc2VyR3JhbnRzU3RvcmFnZUFjY2Vzcyh0cnVlKTsKLQogICAgICAgICB2YXIg
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXNvbHZlZDsKIAogICAgICAgICBmdW5jdGlvbiBtZXNzYWdl
VG9Ub3AobWVzc2FnZVByZWZpeCwgZmV0Y2hEYXRhKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nl
c3Mtd2l0aG91dC11c2VyLWdlc3R1cmUtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mtd2l0aG91
dC11c2VyLWdlc3R1cmUtaWZyYW1lLmh0bWwKaW5kZXggNjRmZDRhNGZhMDAxNzIwNzlkZjE4N2Y2
NTk5NTZjOGUxMjg0ZTM2MS4uYTdiNDBjODUzNGU2NDI3NWYzZDhmMjQ3NTdiZWNlZjNhNGU5MGIx
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jlc291
cmNlcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXdpdGhvdXQtdXNlci1nZXN0dXJlLWlmcmFtZS5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMv
cmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy13aXRob3V0LXVzZXItZ2VzdHVyZS1pZnJhbWUuaHRtbApA
QCAtNiw5ICs2LDYgQEAKICAgICAgICAgY29uc3QgdXNlclNob3VsZEJlQ29uc3VsdGVkID0gaGFz
aEFyZ3VtZW50c1sxXSA9PT0gInVzZXJTaG91bGRCZUNvbnN1bHRlZCI7CiAgICAgICAgIGNvbnN0
IHBvbGljeVNob3VsZEdyYW50QWNjZXNzID0gaGFzaEFyZ3VtZW50c1syXSA9PT0gInBvbGljeVNo
b3VsZEdyYW50QWNjZXNzIjsKIAotICAgICAgICBpZiAoaW50ZXJuYWxzICYmIHVzZXJTaG91bGRH
cmFudEFjY2VzcykKLSAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0VXNlckdyYW50c1N0b3Jh
Z2VBY2Nlc3ModHJ1ZSk7Ci0KICAgICAgICAgdmFyIHJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzb2x2
ZWQ7CiAKICAgICAgICAgZnVuY3Rpb24gbWFrZVJlcXVlc3RXaXRob3V0VXNlckdlc3R1cmUoKSB7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3Vy
Y2VzL3NlbGYtbmF2aWdhdGluZy1mcmFtZS1hZnRlci1ncmFudGVkLWFjY2Vzcy5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9zZWxmLW5hdmlnYXRp
bmctZnJhbWUtYWZ0ZXItZ3JhbnRlZC1hY2Nlc3MuaHRtbAppbmRleCBkYmRhN2VhMjQzMGI2ODdh
Y2ZkNTdmZTM1M2JjMDQ0OGI4NWEzN2QzLi41MjU2NWMyYzUxYzYzM2U5YWMyNWZlYjYxOGI1Yjdi
ZDYzZmQ1ZDllIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nl
c3MvcmVzb3VyY2VzL3NlbGYtbmF2aWdhdGluZy1mcmFtZS1hZnRlci1ncmFudGVkLWFjY2Vzcy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMv
c2VsZi1uYXZpZ2F0aW5nLWZyYW1lLWFmdGVyLWdyYW50ZWQtYWNjZXNzLmh0bWwKQEAgLTcsOSAr
Nyw2IEBACiAgICAgICAgIGNvbnN0IHBvbGljeVNob3VsZEdyYW50QWNjZXNzID0gaGFzaEFyZ3Vt
ZW50c1syXSA9PT0gInBvbGljeVNob3VsZEdyYW50QWNjZXNzIjsKICAgICAgICAgY29uc3Qgc2Ft
ZVNpdGVOYXZpZ2F0aW9uID0gaGFzaEFyZ3VtZW50c1szXSA9PT0gInNhbWVTaXRlTmF2aWdhdGlv
biI7CiAKLSAgICAgICAgaWYgKGludGVybmFscyAmJiB1c2VyU2hvdWxkR3JhbnRBY2Nlc3MpCi0g
ICAgICAgICAgICBpbnRlcm5hbHMuc2V0VXNlckdyYW50c1N0b3JhZ2VBY2Nlc3ModHJ1ZSk7Ci0K
ICAgICAgICAgdmFyIHJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzb2x2ZWQ7CiAKICAgICAgICAgZnVu
Y3Rpb24gbWFrZVJlcXVlc3RXaXRoVXNlckdlc3R1cmUoKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZjRjMTkwZGFmYzc5ZTUzMjJhMGIx
ZGNlYTJmODNlNzJlNjAyYmNlMS4uNjFlM2I0ZGI5Yjk4OWIzOGEwNWJmN2I2YjUyMzllYmRiNzc4
OGY3YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0
YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9u
cwpAQCAtNzI2LDYgKzcyNiw5IEBAIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy91
c2VyLWludGVyYWN0aW9uLXJlcG9ydGVkLWFmdGVyLXdlYnNpdGUtZGF0YS1yCiBbIEhpZ2hTaWVy
cmErIF0gaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LWFjY2Vzcy10
aGVuLW5hdmlnYXRlLXNhbWUtc2l0ZS1zaG91bGQtaGF2ZS1hY2Nlc3MuaHRtbCBbIFBhc3MgXQog
WyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9kZW55LXN0b3JhZ2UtYWNj
ZXNzLXVuZGVyLW9wZW5lci5odG1sIFsgUGFzcyBdCiBbIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0
cy9zdG9yYWdlQWNjZXNzL2Rlbnktc3RvcmFnZS1hY2Nlc3MtdW5kZXItb3BlbmVyLWlmLWF1dG8t
ZGlzbWlzcy5odG1sIFsgUGFzcyBdCitbIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9zdG9yYWdl
QWNjZXNzL2dyYW50LXdpdGgtcHJvbXB0LXByZXNlcnZlcy1nZXN0dXJlLmh0bWwgWyBQYXNzIF0K
K1sgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZGVueS13aXRoLXByb21w
dC1kb2VzLW5vdC1wcmVzZXJ2ZS1nZXN0dXJlLmh0bWwgWyBTa2lwIF0KK1sgSGlnaFNpZXJyYSsg
XSBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZGVueS13aXRob3V0LXByb21wdC1wcmVzZXJ2ZXMt
Z2VzdHVyZS5odG1sIFsgUGFzcyBdCiAKICMgQXMgb2YgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzIyNzc2MiB0aGUgdGltZXN0YW1wUmVzb2x1dGlvbiBpcyBqdXN0IDUgc2Vjb25k
cyB3aGljaCBtYWtlcyB0aGlzIHRlc3QgZmxha3kKIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy91c2VyLWludGVyYWN0aW9uLW9ubHktcmVwb3J0ZWQtb25jZS13aXRoaW4tc2hvcnQt
cGVyaW9kLW9mLXRpbWUuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>369300</attachid>
            <date>2019-05-07 10:34:25 -0700</date>
            <delta_ts>2019-05-07 12:14:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197648-20190507103425.patch</filename>
            <type>text/plain</type>
            <size>157068</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1MDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDQyNGM5ZWM3MGU5YzBh
NTYwNjg3MjFmNTc4OTZhZWIyNzc0YWE5Ny4uZmYxODUzN2I5ZDg1MGUyN2VlMjY5OGJjYjFiNGQy
YjhlMTBkY2IxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE5LTA1LTA3ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3JhZ2UgQWNjZXNz
IEFQSTogTWFrZSB0d28gY2hhbmdlcyByZXF1ZXN0ZWQgYnkgZGV2ZWxvcGVycyBhbmQgY29tcGxl
dGUgcmVmYWN0b3JpbmcgYW5kIGNsZWFudXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5NzY0OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTA1Mjc0
OTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGV2
ZWxvcGVycyBoYXZlIHJlcXVlc3RlZCB0d28gbWlub3IgY2hhbmdlcyB0byB0aGUgU3RvcmFnZSBB
Y2Nlc3MgQVBJOgorICAgICAgICAtIE9ubHkgY29uc3VtZSB0aGUgdXNlciBnZXN0dXJlIHdoZW4g
dGhlIHVzZXIgZXhwbGljaXRseSBkZW5pZXMgYWNjZXNzLgorICAgICAgICAtIE1ha2UgZG9jdW1l
bnQuaGFzU3RvcmFnZUFjY2VzcygpIHJldHVybiB0cnVlIGluc3RlYWQgb2YgZmFsc2Ugd2hlbiB0
aGUgZmVhdHVyZSBpcyBvZmYuCisKKyAgICAgICAgSW4gYWRkaXRpb24gdG8gdGhpcywgd2UgaGF2
ZSByZWZhY3RvcmluZyBhbmQgY2xlYW51cCB0byBkby4gTmFtZWx5OgorICAgICAgICAtIE1ha2Ug
dXNlIG9mIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGFsbCB0aGUgd2F5LgorICAgICAgICAt
IFJlbW92ZSBkZWFkIGNvZGUgaW4gV2ViS2l0OjpOZXR3b3JrUHJvY2VzcyBzaW5jZSB0aGUgY2Fs
bHMgbm93IGdvIHRocm91Z2ggTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuCisgICAgICAg
IC0gSW50cm9kdWNlIGJvb2xlYW4gZW51bXMgZm9yIHN0YXRlIGhhbmRsaW5nLgorICAgICAgICAt
IEJyZWFrIG91dCB0aGUgU3RvcmFnZSBBY2Nlc3MgQVBJIGZ1bmN0aW9uYWxpdHkgaW50byBhIHN1
cHBsZW1lbnQgb2YgV2ViQ29yZTo6RG9jdW1lbnQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9k
ZW55LXdpdGgtcHJvbXB0LWRvZXMtbm90LXByZXNlcnZlLWdlc3R1cmUuaHRtbAorICAgICAgICAg
ICAgICAgaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnktd2l0aG91dC1wcm9tcHQtcHJlc2Vy
dmVzLWdlc3R1cmUuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNz
L2dyYW50LXdpdGgtcHJvbXB0LXByZXNlcnZlcy1nZXN0dXJlLmh0bWwKKyAgICAgICAgICAgICAg
IGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1hY2Nlc3MtdHJ1ZS1pZi1mZWF0
dXJlLW9mZi5odG1sCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAg
KiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpoYXNTdG9yYWdlQWNjZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6ZW5hYmxlVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpjb25zdW1lVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpoYXNGcmFtZVNwZWNpZmljU3Rv
cmFnZUFjY2VzcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
c2V0SGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldFVzZXJHcmFudHNT
dG9yYWdlQWNjZXNzT3ZlcnJpZGUpOiBEZWxldGVkLgorICAgICAgICAgICAgQWxsIG9mIHRoaXMg
aGFzIGJlZW4gbW92ZWQgdG8gdGhlIHN1cHBsZW1lbnQgV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdl
QWNjZXNzLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5pZGw6CisgICAgICAgICAgICBUaGUgU3Rv
cmFnZSBBY2Nlc3MgQVBJIGhhcyBiZWVuIG1vdmVkIHRvIERvY3VtZW50U3RvcmFnZUFjY2Vzcy5p
ZGwuCisgICAgICAgICogZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpmcm9tKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50U3RvcmFnZUFjY2Vzczo6c3VwcGxlbWVudE5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpoYXNTdG9yYWdlQWNjZXNzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3Mp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjplbmFibGVUZW1wb3Jh
cnlUaW1lVXNlckdlc3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNj
ZXNzOjpjb25zdW1lVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50U3RvcmFnZUFjY2Vzczo6aGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpzZXRIYXNGcmFt
ZVNwZWNpZmljU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgICogZG9tL0RvY3VtZW50U3RvcmFnZUFj
Y2Vzcy5oOiBBZGRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmlkbDog
QWRkZWQuCisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldFVzZXJHcmFu
dHNTdG9yYWdlQWNjZXNzKTogRGVsZXRlZC4KKyAgICAgICAgICAgIFRoaXMgd2FzIGRlYWQgY29k
ZS4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxzLmlkbDoKKwogMjAxOS0wNS0wNiAgSmFtZXMgU2F2YWdlICA8amFtZXMuc2F2YWdlQGFw
cGxlLmNvbT4KIAogICAgICAgICBJbXByb3ZlIGNvb3JkaW5hdGlvbiBmb3IgY3JlYXRpbmcgVUlX
aW5kb3cgaW5zdGFuY2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3NWMzNzNkMDg4ZmU3YjJkMTgzOGU3NjhhOGFl
YWUwOWRhNGVlNGRmLi44NDliNzdiMDQzMDY0OTY1MmMyODUzMTczZmMzZDAwZmI4NDdlM2U1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxOS0wNS0wNyAgSm9obiBXaWxhbmRlciAgPHdp
bGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBTdG9yYWdlIEFjY2VzcyBBUEk6IE1ha2UgdHdv
IGNoYW5nZXMgcmVxdWVzdGVkIGJ5IGRldmVsb3BlcnMgYW5kIGNvbXBsZXRlIHJlZmFjdG9yaW5n
IGFuZCBjbGVhbnVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTc2NDgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUwNTI3NDkzPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERldmVsb3BlcnMgaGF2ZSBy
ZXF1ZXN0ZWQgdHdvIG1pbm9yIGNoYW5nZXMgdG8gdGhlIFN0b3JhZ2UgQWNjZXNzIEFQSToKKyAg
ICAgICAgLSBPbmx5IGNvbnN1bWUgdGhlIHVzZXIgZ2VzdHVyZSB3aGVuIHRoZSB1c2VyIGV4cGxp
Y2l0bHkgZGVuaWVzIGFjY2Vzcy4KKyAgICAgICAgLSBNYWtlIGRvY3VtZW50Lmhhc1N0b3JhZ2VB
Y2Nlc3MoKSByZXR1cm4gdHJ1ZSBpbnN0ZWFkIG9mIGZhbHNlIHdoZW4gdGhlIGZlYXR1cmUgaXMg
b2ZmLgorCisgICAgICAgIEluIGFkZGl0aW9uIHRvIHRoaXMsIHdlIGhhdmUgcmVmYWN0b3Jpbmcg
YW5kIGNsZWFudXAgdG8gZG8uIE5hbWVseToKKyAgICAgICAgLSBNYWtlIHVzZSBvZiBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiBhbGwgdGhlIHdheS4KKyAgICAgICAgLSBSZW1vdmUgZGVhZCBj
b2RlIGluIFdlYktpdDo6TmV0d29ya1Byb2Nlc3Mgc2luY2UgdGhlIGNhbGxzIG5vdyBnbyB0aHJv
dWdoIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLgorICAgICAgICAtIEludHJvZHVjZSBi
b29sZWFuIGVudW1zIGZvciBzdGF0ZSBoYW5kbGluZy4KKyAgICAgICAgLSBCcmVhayBvdXQgdGhl
IFN0b3JhZ2UgQWNjZXNzIEFQSSBmdW5jdGlvbmFsaXR5IGludG8gYSBzdXBwbGVtZW50IG9mIFdl
YkNvcmU6OkRvY3VtZW50LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnREb21haW5SZWxhdGlv
bnNoaXBzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVu
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKToKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1VzZXJH
cmFudGVkU3RvcmFnZUFjY2Vzc1Rocm91Z2hQcm9tcHQgY29uc3QpOgorICAgICAgICAgICAgVGhl
c2UgY2hhbmdlcyBhcmUgZHVlIHRvIHRoZSBuZXcgZW51bXMgV2ViQ29yZTo6U3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQgYW5kCisgICAgICAgICAgICBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd24uCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZXF1ZXN0U3RvcmFn
ZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlT
dG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcik6CisgICAgICAgIChXZWJLaXQ6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKToK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpncmFu
dFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzVXNlckdyYW50ZWRTdG9yYWdlQWNjZXNzVGhyb3VnaFBy
b21wdCk6CisgICAgICAgICAgICBUaGVzZSBjaGFuZ2VzIGFyZSBkdWUgdG8gdGhlIG5ldyBlbnVt
cyBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBhbmQKKyAgICAgICAgICAgIFdlYkNv
cmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bi4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
Lmg6CisgICAgICAgICAgICBUaGVzZSBjaGFuZ2VzIGFyZSBkdWUgdG8gdGhlIG5ldyBlbnVtcyBX
ZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBhbmQKKyAgICAgICAgICAgIFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bi4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omdy
YW50U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6Y2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIpOgorICAgICAgICAgICAg
VGhlc2UgY2hhbmdlcyBhcmUgZHVlIHRvIHRoZSBuZXcgZW51bXMgV2ViQ29yZTo6U3RvcmFnZUFj
Y2Vzc1dhc0dyYW50ZWQgYW5kCisgICAgICAgICAgICBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJv
bXB0V2FzU2hvd24uCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NHcmFudGVkKTogRGVsZXRlZC4KKyAgICAgICAgICAg
IFRoaXMgZnVuY3Rpb24gaXMgbm93IG5vIGxvbmdlciBleHBvc2VkIGFuZCBpdHMgZnVuY3Rpb25h
bGl0eSBjb3VsZCBiZSBmb2xkZWQgaW50bworICAgICAgICAgICAgdGhlIGV4aXN0aW5nIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoKSB3aGljaCBp
cyBtb3JlCisgICAgICAgICAgICBjbGVhcmx5IG5hbWVkLgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzU3RvcmFnZUFj
Y2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpy
ZXF1ZXN0U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgICAgICBUaGVzZSBjaGFuZ2VzIGFyZSBkdWUg
dG8gdGhlIG5ldyBlbnVtcyBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBhbmQKKyAg
ICAgICAgICAgIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bi4KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlcXVlc3RTdG9y
YWdlQWNjZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJl
cXVlc3RTdG9yYWdlQWNjZXNzR3JhbnRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpncmFudFN0b3JhZ2VBY2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlQWxsU3RvcmFnZUFjY2Vzcyk6IERlbGV0ZWQuCisg
ICAgICAgICAgICBUaGVzZSBmdW5jdGlvbnMgd2VyZSBsZWZ0IGJlaGluZCBpbiB0aGUgbW92ZSBv
ZiBJVFAgdG8gdGhlIG5ldHdvcmsgcHJvY2Vzcy4KKyAgICAgICAgICAgIFRoaXMgY29tbXVuaWNh
dGlvbiBnb2VzIHRocm91Z2ggV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBz
aW5jZSBhIHdoaWxlIGJhY2suCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgICAgIElu
c3RydWN0aW9ucyBmb3IgZGVyaXZlZCBJUEMgY29kZSBvbiBob3cgdG8gaW5jbHVkZSB0aGUgbmV3
IGVudW1zCisgICAgICAgICAgICBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBhbmQg
V2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLgorICAgICAgICAqIFVJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpoYXNTdG9yYWdlQWNjZXNzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpncmFudFN0b3JhZ2VBY2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpyZW1vdmVBbGxTdG9yYWdlQWNjZXNzKTogRGVsZXRlZC4KKyAgICAgICAg
ICAgIFRoZXNlIGZ1bmN0aW9ucyB3ZXJlIGxlZnQgYmVoaW5kIGluIHRoZSBtb3ZlIG9mIElUUCB0
byB0aGUgbmV0d29yayBwcm9jZXNzLgorICAgICAgICAgICAgVGhpcyBjb21tdW5pY2F0aW9uIGdv
ZXMgdGhyb3VnaCBXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHNpbmNlIGEg
d2hpbGUgYmFjay4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVxdWVzdFN0
b3JhZ2VBY2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpncmFudFN0b3JhZ2VBY2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAgICAgVGhlc2UgZnVuY3Rp
b25zIHdlcmUgbGVmdCBiZWhpbmQgaW4gdGhlIG1vdmUgb2YgSVRQIHRvIHRoZSBuZXR3b3JrIHBy
b2Nlc3MuCisgICAgICAgICAgICBUaGlzIGNvbW11bmljYXRpb24gZ29lcyB0aHJvdWdoIFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mgc2luY2UgYSB3aGlsZSBiYWNrLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6Omhhc1N0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAg
ICAgIFRoZXNlIGNoYW5nZXMgYXJlIGR1ZSB0byB0aGUgbmV3IGVudW1zIFdlYkNvcmU6OlN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkIGFuZAorICAgICAgICAgICAgV2ViQ29yZTo6U3RvcmFnZUFjY2Vz
c1Byb21wdFdhc1Nob3duLiBUaGV5IGFsc28gcmVjZWl2ZSBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbgorICAgICAgICAgICAgb2JqZWN0cyBpbnN0ZWFkIG9mIFN0cmluZ3Mgbm93LgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpoYXNTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVz
dFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAgICAgVGhlc2UgY2hhbmdlcyBhcmUgZHVlIHRvIHRo
ZSBuZXcgZW51bXMgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgYW5kCisgICAgICAg
ICAgICBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24uIFRoZXkgYWxzbyByZWNl
aXZlIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluCisgICAgICAgICAgICBvYmplY3RzIGluc3Rl
YWQgb2YgU3RyaW5ncyBub3cuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aDoKKwogMjAxOS0wNS0wNiAgSmFtZXMgU2F2YWdlICA8amFtZXMuc2F2YWdlQGFwcGxlLmNvbT4K
IAogICAgICAgICBJbXByb3ZlIGNvb3JkaW5hdGlvbiBmb3IgY3JlYXRpbmcgVUlXaW5kb3cgaW5z
dGFuY2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3QKaW5kZXggYzM1MTMzZTBjY2I3MmQzNDQzNDM0YzRlMTllNzEwZmY0NDk1NzFiNi4uZWYyODRm
NWM2ZmE4YzYxNzQ2N2IzOTFmMDE3NjNjYTJlYzc4NWY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC01NjIsNiArNTYyLDcgQEAgJChQ
Uk9KRUNUX0RJUikvZG9tL0RvY3VtZW50QW5kRWxlbWVudEV2ZW50SGFuZGxlcnMuaWRsCiAkKFBS
T0pFQ1RfRElSKS9kb20vRG9jdW1lbnRGcmFnbWVudC5pZGwKICQoUFJPSkVDVF9ESVIpL2RvbS9E
b2N1bWVudEZ1bGxzY3JlZW4uaWRsCiAkKFBST0pFQ1RfRElSKS9kb20vRG9jdW1lbnRPclNoYWRv
d1Jvb3QuaWRsCiskKFBST0pFQ1RfRElSKS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmlkbAog
JChQUk9KRUNUX0RJUikvZG9tL0RvY3VtZW50VG91Y2guaWRsCiAkKFBST0pFQ1RfRElSKS9kb20v
RG9jdW1lbnRUeXBlLmlkbAogJChQUk9KRUNUX0RJUikvZG9tL0VsZW1lbnQuaWRsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDFhOGM5
MzJhMzYzZGNiMjAzNDYyZDJjM2RmNGVlYzhkYWFmZDZlYWYuLjhiZDdmOWQzOGFkOGRlZDFmNzYx
Y2NiNDQzNGNhNGJiMDE1MjA5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC00NzMsNiArNDczLDggQEAgJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudEZ1bGxzY3JlZW4uY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50RnVs
bHNjcmVlbi5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0RvY3VtZW50T3JTaGFkb3dSb290LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudE9yU2hhZG93Um9vdC5oCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHAK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRG9jdW1lbnRT
dG9yYWdlQWNjZXNzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTRG9jdW1lbnRUaW1lbGluZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTRG9jdW1lbnRUaW1lbGluZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50VGltZWxpbmVPcHRpb25zLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMDQzM2ZhYjg4NzRhNTAxOTM2NzY4ODQw
MTZjZWJmMTZkNTg4MGUwNC4uZjQ1NmI0NThjMTk0ODhlYjYyOGRjMzliZDM5YTQ0MjQ2MDU2NjJh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC01ODQsNiArNTg0LDcgQEAgSlNf
QklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvZG9tL0RvY3VtZW50RnVsbHNjcmVlbi5p
ZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL0RvY3VtZW50RnJhZ21lbnQuaWRsIFwKICAgICAkKFdl
YkNvcmUpL2RvbS9Eb2N1bWVudE9yU2hhZG93Um9vdC5pZGwgXAorICAgICQoV2ViQ29yZSkvZG9t
L0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL0RvY3VtZW50
VHlwZS5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL0VsZW1lbnQuaWRsIFwKICAgICAkKFdlYkNv
cmUpL2RvbS9FcnJvckV2ZW50LmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCAwMTU1ODQ1NDJl
ZjAyODZiZmQ1MTc5MTE5OTgyZjQxM2U0OGVkYTAzLi44M2RiZWE2MDU3MWYxOTEwZTk0NjIxZWQ2
Yjg4ZTA3NWRmZTg0YjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTM2OCw2ICszNjgsNyBAQCBz
ZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgZG9tL0RvY3VtZW50SWRl
bnRpZmllci5oCiAgICAgZG9tL0RvY3VtZW50TWFya2VyLmgKICAgICBkb20vRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyLmgKKyAgICBkb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmgKICAgICBkb20v
RG9jdW1lbnRUaW1pbmcuaAogICAgIGRvbS9Eb2N1bWVudFR5cGUuaAogICAgIGRvbS9FbGVtZW50
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKaW5kZXggYmE2MDk3ZTliNzQ3MDgwZWM4MTA5NWZjMGMwZjgyODhiMDYx
NjgzMS4uYmNlY2JhOTA4OTc2NmY5MGY5NTBjMjE3ODNhZjYyZTExOGZmYjZjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKQEAgLTg0NCw2ICs4NDQsNyBAQCBkb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKIGRvbS9E
b2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCiBkb20vRG9jdW1lbnRQYXJzZXIuY3BwCiBkb20v
RG9jdW1lbnRTaGFyZWRPYmplY3RQb29sLmNwcAorZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5j
cHAKIGRvbS9Eb2N1bWVudFRvdWNoLmNwcCBAbm8tdW5pZnkKIGRvbS9Eb2N1bWVudFR5cGUuY3Bw
CiBkb20vRWxlbWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAwZGNkYzg3NGE3Yjk3N2ZhYTg2ZWQyNDc0NjYxMGRiNTg4
YjFlZjkzLi42ODBkNjQ0NmY1OTRjNWY1YmNlMDI1MDBmMGFjNTE1MWZmNzc1OWE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
OTc1LDYgKzE5NzUsNyBAQAogCQk2QjM0ODA5NDBFRUY1MEQ0MDBBQzFCNDEgLyogTmF0aXZlSW1h
Z2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCMzQ4
MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZCNEU4NjEzMjIxQjcxM0YwMDIyRjM4OSAv
KiBSZWdpc3RyYWJsZURvbWFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkI0RTg2MTIyMjFCNzEzRjAwMjJGMzg5IC8qIFJlZ2lzdHJhYmxlRG9tYWlu
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkI2
OTNBMkUxQzUxQTgyRTAwQjAzQkVGIC8qIFJlc291cmNlTG9hZE9ic2VydmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjY5M0EyRDFDNTFBODJFMDBC
MDNCRUYgLyogUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk2QkRCNURDMjIyN0JEM0I4MDA5MTk3NzAgLyogRG9j
dW1lbnRTdG9yYWdlQWNjZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2QkRCNURDMDIyN0JEM0I4MDA5MTk3NzAgLyogRG9jdW1lbnRTdG9yYWdlQWNj
ZXNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NkM0Qzk2REYxQUQ0NDgzNTAwMzYzRjY0IC8qIEpTUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0Qzk2
REIxQUQ0NDgzNTAwMzYzRjY0IC8qIEpTUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5oICov
OyB9OwogCQk2QzRDOTZERjFBRDQ0ODM1MDAzNjU2NzIgLyogSlNSZWFkYWJsZVN0cmVhbUJZT0JS
ZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
QzRDOTZEQjFBRDQ0ODM1MDAzNjU2NzIgLyogSlNSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0Lmgg
Ki87IH07CiAJCTZDNEM5NkRGMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtRGVm
YXVsdENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDZDNEM5NkRCMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtRGVmYXVs
dENvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtOTAzNyw2ICs5MDM4LDkgQEAKIAkJNkI0RTg2MTIyMjFCNzEzRjAwMjJGMzg5IC8q
IFJlZ2lzdHJhYmxlRG9tYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ2lzdHJhYmxlRG9tYWluLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCNjkzQTJEMUM1MUE4MkUwMEIwM0JFRiAv
KiBSZXNvdXJjZUxvYWRPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZXNvdXJjZUxvYWRPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
QjY5M0EzMzFDNTFBOTVEMDBCMDNCRUYgLyogUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QkRCNURDMDIyN0JEM0I4MDA5MTk3NzAg
LyogRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50U3RvcmFn
ZUFjY2Vzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QkRCNURDMTIyN0JEM0I4
MDA5MTk3NzAgLyogRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IERvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTZCREI1REM1MjI3Q0EwRUIwMDkxOTc3MCAvKiBEb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IERvY3VtZW50U3RvcmFnZUFjY2Vzcy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTZDNEM5NkRBMUFENDQ4MzUwMDM2M0Y2NCAvKiBKU1JlYWRhYmxlQnl0ZVN0cmVhbUNvbnRy
b2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSZWFkYWJs
ZUJ5dGVTdHJlYW1Db250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NkM0Qzk2REExQUQ0NDgzNTAwMzY1NjcyIC8qIEpTUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFt
QllPQlJlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QzRDOTZEQTFB
RDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUmVhZGFibGVTdHJlYW1EZWZh
dWx0Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTkyMSwx
MCArMjU5MjUsMTAgQEAKIAkJCQlDREUzQTg1NTE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFj
a1ByaXZhdGVBVkZPYmpDLm1tICovLAogCQkJCUNENTRBNzYwMTgwRjlGNzAwMEIwNzZDOSAvKiBB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAgKi8sCiAJCQkJQ0Q1NEE3NjEx
ODBGOUY3MDAwQjA3NkM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgg
Ki8sCi0JCQkJQ0RFQ0E4OTkxRURGNDQ3RDAwRENCMDhCIC8qIEFWQXNzZXRUcmFja1V0aWxpdGll
cy5oICovLAotCQkJCUNERUNBODk4MUVERjQ0N0QwMERDQjA4QiAvKiBBVkFzc2V0VHJhY2tVdGls
aXRpZXMubW0gKi8sCiAJCQkJMDdDOEFEMTIxRDA3M0Q2MzAwODdDNUNFIC8qIEFWQXNzZXRNSU1F
VHlwZUNhY2hlLmggKi8sCiAJCQkJMDdDOEFEMTExRDA3M0Q2MzAwODdDNUNFIC8qIEFWQXNzZXRN
SU1FVHlwZUNhY2hlLm1tICovLAorCQkJCUNERUNBODk5MUVERjQ0N0QwMERDQjA4QiAvKiBBVkFz
c2V0VHJhY2tVdGlsaXRpZXMuaCAqLywKKwkJCQlDREVDQTg5ODFFREY0NDdEMDBEQ0IwOEIgLyog
QVZBc3NldFRyYWNrVXRpbGl0aWVzLm1tICovLAogCQkJCUNEMTFCM0RGMjI3Q0FBQTkwMDIzQUZD
NyAvKiBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlLmggKi8sCiAJCQkJQ0QxMUIzRTAy
MjdDQUFBOTAwMjNBRkM3IC8qIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0gKi8s
CiAJCQkJQ0Q3OEEyRUUxRjc1NjQ4NjAwREUzNzFCIC8qIENETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDLmggKi8sCkBAIC0yNzIyNyw2ICsyNzIzMSw5IEBACiAJCQkJQkNDRkJBRTcw
QjUxNTJFRDAwMDFGMUQ3IC8qIERvY3VtZW50UGFyc2VyLmggKi8sCiAJCQkJQUQ2RTcxQUExNjY4
ODk5RDAwMzIwQzEzIC8qIERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbC5jcHAgKi8sCiAJCQkJQUQ2
RTcxQUIxNjY4ODk5RDAwMzIwQzEzIC8qIERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbC5oICovLAor
CQkJCTZCREI1REMxMjI3QkQzQjgwMDkxOTc3MCAvKiBEb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3Bw
ICovLAorCQkJCTZCREI1REMwMjI3QkQzQjgwMDkxOTc3MCAvKiBEb2N1bWVudFN0b3JhZ2VBY2Nl
c3MuaCAqLywKKwkJCQk2QkRCNURDNTIyN0NBMEVCMDA5MTk3NzAgLyogRG9jdW1lbnRTdG9yYWdl
QWNjZXNzLmlkbCAqLywKIAkJCQk4NkQ5ODJGNjEyNUMxNTQwMDBBRDlFM0QgLyogRG9jdW1lbnRU
aW1pbmcuaCAqLywKIAkJCQk3Q0U3RkE1QjFFRjg4MjMwMDA2MEM5RDYgLyogRG9jdW1lbnRUb3Vj
aC5jcHAgKi8sCiAJCQkJN0NFN0ZBNTkxRUY4ODIzMDAwNjBDOUQ2IC8qIERvY3VtZW50VG91Y2gu
aCAqLywKQEAgLTI4MjM0LDExICsyODI0MSwxMSBAQAogCQkJCUM5RDQ2NzA1MUU2MEM0NjUwMDgx
OTVGQiAvKiBBdXRvcGxheUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NTgzMEQ0RTE2NzlC
NEY4MDBBQ0Y4QzMgLyogQXV0b3Njcm9sbENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4Q0ZGMDRFMEExNTRGMDkwMDBBNDIzNCAvKiBBdXRvVGFibGVMYXlvdXQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTA3RjRFOTMzMjBCMzU4N0YwMDJFMzgwMyAvKiBBVkFzc2V0TUlNRVR5cGVDYWNo
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RFQ0E4OUIxRURGNDQ3RDAwRENCMDhCIC8qIEFWQXNz
ZXRUcmFja1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDNjc1MjcxRUFFQTlENDAw
NzI3Qzg0IC8qIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0RDNjc1MjMxRUFFQTlCNzAwNzI3Qzg0IC8qIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmlj
ZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3MDM2M0UyMTgxQTFDREMwMEMwNzRBNSAv
KiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQkwN0Y0RTkzMzIw
QjM1ODdGMDAyRTM4MDMgLyogQVZBc3NldE1JTUVUeXBlQ2FjaGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNEMzM2RjYyMTdGOUY2NDcwMERERENEMCAvKiBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBs
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzAzNjNFNjE4MUExQ0RDMDBDMDc0QTUgLyogQVZWaWRl
b0NhcHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QUUyMTJEMjFBQjlFRUIwMDg2
OTI4MyAvKiBBWElzb2xhdGVkVHJlZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODc5NSw2ICsyODgw
Miw3IEBACiAJCQkJQkNDRkJBRTgwQjUxNTJFRDAwMDFGMUQ3IC8qIERvY3VtZW50UGFyc2VyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0QTRGNDhBQTE2QjBERkMwMDBFREJCMjkgLyogRG9jdW1lbnRS
dWxlU2V0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQ2RTcxQUQxNjY4ODk5RDAwMzIwQzEzIC8q
IERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkJEQjVEQzIy
MjdCRDNCODAwOTE5NzcwIC8qIERvY3VtZW50U3RvcmFnZUFjY2Vzcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEI5MDU2MUEwRjI1NzhCRjAwOTVGRjZBIC8qIERvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzEwMjVFRDAxRjk5RjBDRTAwNEEyNTBDIC8qIERvY3Vt
ZW50VGltZWxpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTcxNzI5RjdCMjBGM0JBNDkwMDgwMUNF
NiAvKiBEb2N1bWVudFRpbWVsaW5lT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjU3NSwx
MCArMzI1ODMsMTEgQEAKIAkJCQlDREUzQTg1NzE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFj
a1ByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q1NEE3NjIxODBGOUY3MDAw
QjA3NkM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE1RjZFMTZCMTMyRUQ0NkUwMDhFREFFMyAvKiBBdXRvY2FwaXRhbGl6ZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzE5NDI3RjFEMDg4RjIxMDAyQUE1MUQgLyogQVZBc3Nl
dE1JTUVUeXBlQ2FjaGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREVDQTg5QTFFREY0NDdEMDBE
Q0IwOEIgLyogQVZBc3NldFRyYWNrVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RD
Njc1MjIxRUFFQTlCNzAwNzI3Qzg0IC8qIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFn
ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzAzNjNFMzE4MUExQ0RDMDBDMDc0QTUgLyogQVZD
YXB0dXJlRGV2aWNlTWFuYWdlci5tbSBpbiBTb3VyY2VzICovLAotCQkJCTA3MTk0MjdGMUQwODhG
MjEwMDJBQTUxRCAvKiBBVkFzc2V0TUlNRVR5cGVDYWNoZS5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CUNEMTFCM0UxMjI3Q0U2RjMwMDIzQUZDNyAvKiBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNh
Y2hlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QzMzZGNjExN0Y5RjY0NzAwREREQ0QwIC8qIEFW
VHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzAzNjNFNzE4
MUExQ0RDMDBDMDc0QTUgLyogQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0gaW4gU291cmNlcyAqLywK
IAkJCQk3QTQ1MDMyRjE4REI3MTcyMDAzNzdCMzQgLyogQnVmZmVyZWRMaW5lUmVhZGVyLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMzMwMjEsNyArMzMwMzAsNiBAQAogCQkJCURFQ0E4MDM5MUY5RkVE
NkEwMEUzQjY2MSAvKiBVbmlmaWVkU291cmNlMjQ4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURF
Q0E4MDNBMUY5RkVENkEwMEUzQjY2MSAvKiBVbmlmaWVkU291cmNlMjQ5LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCURFQ0E4MDNCMUY5RkVENkEwMEUzQjY2MSAvKiBVbmlmaWVkU291cmNlMjUwLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCUNEMTFCM0UxMjI3Q0U2RjMwMDIzQUZDNyAvKiBBVlN0cmVh
bURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJREVDQTgwM0Mx
RjlGRUQ2QTAwRTNCNjYxIC8qIFVuaWZpZWRTb3VyY2UyNTEuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJREVDQTgwM0QxRjlGRUQ2QTAwRTNCNjYxIC8qIFVuaWZpZWRTb3VyY2UyNTIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJREVDQTgwM0UxRjlGRUQ2QTAwRTNCNjYxIC8qIFVuaWZpZWRTb3VyY2Uy
NTMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBjZTQyOTI3
N2M3ZWFjNjAwMjIzNzVkOWNiODllOGQ2NTFkNDNkYWEwLi44NmEyYWJkNTViMzllM2U0NzY3MTVk
NGYwMWY0YTg5YzgzNDUwNTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTExMiw3ICsx
MTIsNiBAQAogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUg
IkludGVyc2VjdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiSlNDdXN0b21FbGVtZW50SW50ZXJm
YWNlLmgiCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU0xh
enlFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUg
IktleWZyYW1lRWZmZWN0LmgiCkBAIC03NzMxLDE0NyArNzczMCw2IEBAIE9wdGlvbmFsPHVpbnQ2
NF90PiBEb2N1bWVudDo6cGFnZUlEKCkgY29uc3QKICAgICByZXR1cm4gbV9mcmFtZS0+bG9hZGVy
KCkuY2xpZW50KCkucGFnZUlEKCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6Omhhc1N0b3JhZ2VBY2Nl
c3MoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQotewotICAgIEFTU0VSVChzZXR0aW5n
cygpLnN0b3JhZ2VBY2Nlc3NBUElFbmFibGVkKCkpOwotCi0jaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKLSAgICBpZiAobV9mcmFtZSAmJiBoYXNGcmFtZVNwZWNpZmljU3RvcmFn
ZUFjY2VzcygpKSB7Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4odHJ1ZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIW1fZnJhbWUgfHwgc2VjdXJpdHlP
cmlnaW4oKS5pc1VuaXF1ZSgpKSB7Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVh
bj4oZmFsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGlmIChtX2ZyYW1l
LT5pc01haW5GcmFtZSgpKSB7Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4o
dHJ1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgYXV0byYgc2VjdXJpdHlP
cmlnaW4gPSB0aGlzLT5zZWN1cml0eU9yaWdpbigpOwotICAgIGF1dG8mIHRvcFNlY3VyaXR5T3Jp
Z2luID0gdG9wRG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpOwotICAgIGlmIChzZWN1cml0eU9y
aWdpbi5lcXVhbCgmdG9wU2VjdXJpdHlPcmlnaW4pKSB7Ci0gICAgICAgIHByb21pc2UtPnJlc29s
dmU8SURMQm9vbGVhbj4odHJ1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRv
IGZyYW1lSUQgPSBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7Ci0gICAgYXV0
byBwYWdlSUQgPSBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKLSAgICBpZiAo
IWZyYW1lSUQgfHwgIXBhZ2VJRCkgewotICAgICAgICBwcm9taXNlLT5yZWplY3QoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpKSB7
Ci0gICAgICAgIGF1dG8gaWZyYW1lSG9zdCA9IHNlY3VyaXR5T3JpZ2luLmhvc3QoKTsKLSAgICAg
ICAgYXV0byB0b3BIb3N0ID0gdG9wU2VjdXJpdHlPcmlnaW4uaG9zdCgpOwotICAgICAgICBwYWdl
LT5jaHJvbWUoKS5jbGllbnQoKS5oYXNTdG9yYWdlQWNjZXNzKFdURk1vdmUoaWZyYW1lSG9zdCks
IFdURk1vdmUodG9wSG9zdCksIGZyYW1lSUQudmFsdWUoKSwgcGFnZUlELnZhbHVlKCksIFtkb2N1
bWVudFJlZmVyZW5jZSA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSldIChib29sIGhhc0FjY2VzcykgewotICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0gZG9jdW1lbnRSZWZlcmVuY2UuZ2V0KCk7Ci0gICAgICAgICAgICBpZiAoIWRvY3VtZW50KQot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgcHJvbWlz
ZS0+cmVzb2x2ZTxJRExCb29sZWFuPihoYXNBY2Nlc3MpOwotICAgICAgICB9KTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0gICAgcHJvbWlzZS0+cmVqZWN0KCk7Ci19Ci0KLXZv
aWQgRG9jdW1lbnQ6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYg
cHJvbWlzZSkKLXsKLSAgICBBU1NFUlQoc2V0dGluZ3MoKS5zdG9yYWdlQWNjZXNzQVBJRW5hYmxl
ZCgpKTsKLSAgICAKLSNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGlm
IChtX2ZyYW1lICYmIGhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKCkpIHsKLSAgICAgICAg
cHJvbWlzZS0+cmVzb2x2ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGlm
ICghbV9mcmFtZSB8fCBzZWN1cml0eU9yaWdpbigpLmlzVW5pcXVlKCkpIHsKLSAgICAgICAgcHJv
bWlzZS0+cmVqZWN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKG1f
ZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGF1dG8mIHRvcERvY3VtZW50ID0gdGhpcy0+
dG9wRG9jdW1lbnQoKTsKLSAgICBhdXRvJiB0b3BTZWN1cml0eU9yaWdpbiA9IHRvcERvY3VtZW50
LnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgYXV0byYgc2VjdXJpdHlPcmlnaW4gPSB0aGlzLT5zZWN1
cml0eU9yaWdpbigpOwotICAgIGlmIChzZWN1cml0eU9yaWdpbi5lcXVhbCgmdG9wU2VjdXJpdHlP
cmlnaW4pKSB7Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmUoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICAKLSAgICAvLyBJZiB0aGVyZSBpcyBhIHNhbmRib3gsIGl0IGhhcyB0byBhbGxv
dyB0aGUgc3RvcmFnZSBhY2Nlc3MgQVBJIHRvIGJlIGNhbGxlZC4KLSAgICBpZiAoc2FuZGJveEZs
YWdzKCkgIT0gU2FuZGJveE5vbmUgJiYgaXNTYW5kYm94ZWQoU2FuZGJveFN0b3JhZ2VBY2Nlc3NC
eVVzZXJBY3RpdmF0aW9uKSkgewotICAgICAgICBwcm9taXNlLT5yZWplY3QoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIC8vIFRoZSBpZnJhbWUgaGFzIHRvIGJlIGEgZGlyZWN0IGNo
aWxkIG9mIHRoZSB0b3AgZG9jdW1lbnQuCi0gICAgaWYgKCZ0b3BEb2N1bWVudCAhPSBwYXJlbnRE
b2N1bWVudCgpKSB7Ci0gICAgICAgIHByb21pc2UtPnJlamVjdCgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKCFVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlKCkpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVqZWN0KCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgCi0gICAgYXV0byBpZnJhbWVIb3N0ID0gc2VjdXJpdHlPcmlnaW4uaG9zdCgp
OwotICAgIGF1dG8gdG9wSG9zdCA9IHRvcFNlY3VyaXR5T3JpZ2luLmhvc3QoKTsKLQotICAgIFBh
Z2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7Ci0gICAgYXV0byBmcmFtZUlEID0gbV9mcmFtZS0+bG9h
ZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwotICAgIGF1dG8gcGFnZUlEID0gbV9mcmFtZS0+bG9h
ZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7Ci0gICAgaWYgKCFwYWdlIHx8ICFmcmFtZUlEIHx8ICFw
YWdlSUQpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVqZWN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhX
VEZNb3ZlKGlmcmFtZUhvc3QpLCBXVEZNb3ZlKHRvcEhvc3QpLCBmcmFtZUlELnZhbHVlKCksIHBh
Z2VJRC52YWx1ZSgpLCBbZG9jdW1lbnRSZWZlcmVuY2UgPSBtYWtlV2Vha1B0cigqdGhpcyksIHBy
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYm9vbCB3YXNHcmFudGVkKSBtdXRhYmxlIHsKLSAg
ICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZG9jdW1lbnRSZWZlcmVuY2UuZ2V0KCk7Ci0gICAg
ICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAg
ICBpZiAod2FzR3JhbnRlZCkgewotICAgICAgICAgICAgZG9jdW1lbnQtPnNldEhhc0ZyYW1lU3Bl
Y2lmaWNTdG9yYWdlQWNjZXNzKHRydWUpOwotICAgICAgICAgICAgTWljcm90YXNrUXVldWU6Om1h
aW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFZvaWRNaWNyb3Rhc2s+KFtk
b2N1bWVudFJlZmVyZW5jZSA9IG1ha2VXZWFrUHRyKCpkb2N1bWVudCldICgpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBkb2N1bWVudFJlZmVyZW5jZS5nZXQoKSkKLSAg
ICAgICAgICAgICAgICAgICAgZG9jdW1lbnQtPmVuYWJsZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVy
ZSgpOwotICAgICAgICAgICAgfSkpOwotICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwot
ICAgICAgICAgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPFZvaWRNaWNyb3Rhc2s+KFtkb2N1bWVudFJlZmVyZW5jZSA9IFdURk1vdmUo
ZG9jdW1lbnRSZWZlcmVuY2UpXSAoKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8qIGRvY3Vt
ZW50ID0gZG9jdW1lbnRSZWZlcmVuY2UuZ2V0KCkpCi0gICAgICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LT5jb25zdW1lVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCk7Ci0gICAgICAgICAgICB9KSk7
Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KCk7Ci0gICAgfSk7
Ci0jZWxzZQotICAgIHByb21pc2UtPnJlamVjdCgpOwotI2VuZGlmCi19Ci0KLXZvaWQgRG9jdW1l
bnQ6OmVuYWJsZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSgpCi17Ci0gICAgbV90ZW1wb3JhcnlV
c2VyR2VzdHVyZSA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlckdlc3R1cmVJbmRpY2F0b3I+KFByb2Nl
c3NpbmdVc2VyR2VzdHVyZSwgdGhpcyk7Ci19Ci0KLXZvaWQgRG9jdW1lbnQ6OmNvbnN1bWVUZW1w
b3JhcnlUaW1lVXNlckdlc3R1cmUoKQotewotICAgIG1fdGVtcG9yYXJ5VXNlckdlc3R1cmUgPSBu
dWxscHRyOwotfQotCiB2b2lkIERvY3VtZW50OjpyZWdpc3RlckFydGljbGVFbGVtZW50KEVsZW1l
bnQmIGFydGljbGUpCiB7CiAgICAgbV9hcnRpY2xlRWxlbWVudHMuYWRkKCZhcnRpY2xlKTsKQEAg
LTc5MzksMTcgKzc3OTcsNiBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVNYWluQXJ0aWNsZUVsZW1l
bnRBZnRlckxheW91dCgpCiB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQotYm9vbCBEb2N1bWVudDo6aGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MoKSBjb25zdAot
ewotICAgIHJldHVybiBtX2ZyYW1lICYmIG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmhhc0Zy
YW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKCk7Ci19Ci0gICAgCi12b2lkIERvY3VtZW50OjpzZXRI
YXNGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzcyhib29sIHZhbHVlKQotewotICAgIGlmIChtX2Zy
YW1lKQotICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5zZXRIYXNGcmFtZVNwZWNp
ZmljU3RvcmFnZUFjY2Vzcyh2YWx1ZSk7Ci19Ci0KIGJvb2wgRG9jdW1lbnQ6Omhhc1JlcXVlc3Rl
ZFBhZ2VTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NXaXRoVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBkb21haW4pCiB7CiAgICAgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW5S
ZXF1ZXN0ZWRQYWdlU3BlY2lmaWNTdG9yYWdlQWNjZXNzV2l0aFVzZXJJbnRlcmFjdGlvbiA9PSBk
b21haW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGExZjFmMzA4NTUzMmVjNGNiZjY5MTg5MDk2
YzQ4NmI5MWQwMGJkOTguLjEzNWVmMGI2Y2Q4Y2U1NTE1Y2U0NzFlYWMyMDIzZmZhOGU0ODc1N2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMDgsNyArMTA4LDYgQEAgY2xhc3MgRE9NV2luZG93
OwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgRGF0YWJhc2U7CiBjbGFzcyBEYXRhYmFz
ZVRocmVhZDsKLWNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7
CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjsK
QEAgLTE0NjUsMTAgKzE0NjQsNiBAQCBwdWJsaWM6CiAKICAgICBMb2dnZXImIGxvZ2dlcigpOwog
Ci0gICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcGFzc2Vk
UHJvbWlzZSk7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHBhc3NlZFByb21pc2UpOwotICAgIHZvaWQgc2V0VXNlckdyYW50c1N0b3JhZ2VBY2Nl
c3NPdmVycmlkZShib29sIHZhbHVlKSB7IG1fZ3JhbnRTdG9yYWdlQWNjZXNzT3ZlcnJpZGUgPSB2
YWx1ZTsgfQotCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb25zb2xlTWVzc2FnZUxpc3Rl
bmVyKFJlZlB0cjxTdHJpbmdDYWxsYmFjaz4mJik7IC8vIEZvciB0ZXN0aW5nLgogCiAgICAgV0VC
Q09SRV9FWFBPUlQgRG9jdW1lbnRUaW1lbGluZSYgdGltZWxpbmUoKTsKQEAgLTE1MDIsOCArMTQ5
Nyw2IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VT
dHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmlu
ZywgY29uc3QgVVJMJik7CiAKLSAgICB2b2lkIGNvbnN1bWVUZW1wb3JhcnlUaW1lVXNlckdlc3R1
cmUoKTsKLQogICAgIHZvaWQgcmVnaXN0ZXJBcnRpY2xlRWxlbWVudChFbGVtZW50Jik7CiAgICAg
dm9pZCB1bnJlZ2lzdGVyQXJ0aWNsZUVsZW1lbnQoRWxlbWVudCYpOwogICAgIHZvaWQgdXBkYXRl
TWFpbkFydGljbGVFbGVtZW50QWZ0ZXJMYXlvdXQoKTsKQEAgLTE2NDUsOCArMTYzOCw2IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHBsYXRmb3JtU3VzcGVuZE9yU3RvcEFjdGl2ZURPTU9iamVjdHMo
KTsKIAotICAgIHZvaWQgZW5hYmxlVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCk7Ci0KICAgICBi
b29sIGlzQm9keVBvdGVudGlhbGx5U2Nyb2xsYWJsZShIVE1MQm9keUVsZW1lbnQmKTsKIAogICAg
IGNvbnN0IFJlZjxTZXR0aW5ncz4gbV9zZXR0aW5nczsKQEAgLTE4NTEsMTEgKzE4NDIsNiBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBkaWRMb2dNZXNzYWdlKGNvbnN0IFdURkxvZ0NoYW5uZWwmLCBX
VEZMb2dMZXZlbCwgVmVjdG9yPEpTT05Mb2dWYWx1ZT4mJikgZmluYWw7CiAKLSNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGJvb2wgaGFzRnJhbWVTcGVjaWZpY1N0b3Jh
Z2VBY2Nlc3MoKSBjb25zdDsKLSAgICB2b2lkIHNldEhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNj
ZXNzKGJvb2wpOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc3RkOjp1bmlxdWVfcHRyPERldmljZU1vdGlvbkNs
aWVudD4gbV9kZXZpY2VNb3Rpb25DbGllbnQ7CkBAIC0yMDMzLDggKzIwMTksNiBAQCBwcml2YXRl
OgogCiAgICAgc3RhdGljIGJvb2wgaGFzRXZlckNyZWF0ZWRBbkFYT2JqZWN0Q2FjaGU7CiAKLSAg
ICBib29sIG1fZ3JhbnRTdG9yYWdlQWNjZXNzT3ZlcnJpZGUgeyBmYWxzZSB9OwotCiAgICAgUmVm
UHRyPERvY3VtZW50VGltZWxpbmU+IG1fdGltZWxpbmU7CiAgICAgRG9jdW1lbnRJZGVudGlmaWVy
IG1faWRlbnRpZmllcjsKIApAQCAtMjA0OCw4ICsyMDMyLDYgQEAgcHJpdmF0ZToKICAgICBSZWdp
c3RyYWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluUmVxdWVzdGVkUGFnZVNwZWNpZmljU3Rv
cmFnZUFjY2Vzc1dpdGhVc2VySW50ZXJhY3Rpb24geyB9OwogI2VuZGlmCiAgICAgCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFVzZXJHZXN0dXJlSW5kaWNhdG9yPiBtX3RlbXBvcmFyeVVzZXJHZXN0dXJl
OwotCiAgICAgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0IG1fQ1NTUmVnaXN0ZXJlZFBy
b3BlcnR5U2V0OwogCiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmlkbAppbmRleCA0M2I5MTEwMjgyOTRhZDNmYmYxNzgwZDc5YTAzMmI4ZTA5NTMzNGNlLi41
NjQ5YjZjM2M3MDg1MGE5Y2U0NjgwZWMxOGRlNWJmZGIyMzI3MWMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5pZGwKQEAgLTE3MywxMCArMTczLDYgQEAgdHlwZWRlZiAoCiAgICAgLy8gRklYTUU6IFRo
aXMgaXMgbm90IHN0YW5kYXJkIGFuZCBoYXMgYmVlbiBkcm9wcGVkIGZyb20gQmxpbmsgYWxyZWFk
eS4KICAgICBSZW5kZXJpbmdDb250ZXh0PyBnZXRDU1NDYW52YXNDb250ZXh0KERPTVN0cmluZyBj
b250ZXh0SWQsIERPTVN0cmluZyBuYW1lLCBsb25nIHdpZHRoLCBsb25nIGhlaWdodCk7CiAKLSAg
ICAvLyBOb24gc3RhbmRhcmQsIHRvIGJyaW5nIHVwIHdpdGggc3RhbmRhcmRzIHdvcmtpbmcgZ3Jv
dXAuCi0gICAgW0VuYWJsZWRCeVNldHRpbmc9U3RvcmFnZUFjY2Vzc0FQSV0gUHJvbWlzZTxib29s
PiBoYXNTdG9yYWdlQWNjZXNzKCk7Ci0gICAgW0VuYWJsZWRCeVNldHRpbmc9U3RvcmFnZUFjY2Vz
c0FQSV0gUHJvbWlzZTx2b2lkPiByZXF1ZXN0U3RvcmFnZUFjY2VzcygpOwotCiAgICAgLy8gT2Jz
b2xldGUgZmVhdHVyZXMgZnJvbSBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFn
ZS9vYnNvbGV0ZS5odG1sCiAKICAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbVHJlYXROdWxs
QXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBmZ0NvbG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZDFmOGJiYTljNDZjMGU4N2Ey
NmZlNTAwMmIzNjE0YzhkODcxOWM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHAKQEAgLTAsMCArMSwyMzEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRTdG9yYWdlQWNjZXNz
LmgiCisKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorCisjaW5jbHVkZSAi
Q2hyb21lLmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVk
ZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5o
IgorI2luY2x1ZGUgIk1pY3JvdGFza3MuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAi
UmVnaXN0cmFibGVEb21haW4uaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1
ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitEb2N1bWVudFN0b3JhZ2VBY2Nlc3MqIERvY3VtZW50U3RvcmFn
ZUFjY2Vzczo6ZnJvbShEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgYXV0byogc3VwcGxlbWVu
dCA9IHN0YXRpY19jYXN0PERvY3VtZW50U3RvcmFnZUFjY2Vzcyo+KFN1cHBsZW1lbnQ8RG9jdW1l
bnQ+Ojpmcm9tKCZkb2N1bWVudCwgc3VwcGxlbWVudE5hbWUoKSkpOworICAgIGlmICghc3VwcGxl
bWVudCkgeworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERv
Y3VtZW50U3RvcmFnZUFjY2Vzcz4oZG9jdW1lbnQpOworICAgICAgICBzdXBwbGVtZW50ID0gbmV3
U3VwcGxlbWVudC5nZXQoKTsKKyAgICAgICAgcHJvdmlkZVRvKCZkb2N1bWVudCwgc3VwcGxlbWVu
dE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CisgICAgfQorICAgIHJldHVybiBzdXBw
bGVtZW50OworfQorCitjb25zdCBjaGFyKiBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnN1cHBsZW1l
bnROYW1lKCkKK3sKKyAgICByZXR1cm4gIkRvY3VtZW50U3RvcmFnZUFjY2VzcyJfczsKK30KKwor
dm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3MoRG9jdW1lbnQmIGRv
Y3VtZW50LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCit7CisgICAgRG9jdW1lbnRT
dG9yYWdlQWNjZXNzOjpmcm9tKGRvY3VtZW50KS0+aGFzU3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHBy
b21pc2UpKTsKK30KKwordm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdl
QWNjZXNzKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNl
KQoreworICAgIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6ZnJvbShkb2N1bWVudCktPnJlcXVlc3RT
dG9yYWdlQWNjZXNzKFdURk1vdmUocHJvbWlzZSkpOworfQorCit2b2lkIERvY3VtZW50U3RvcmFn
ZUFjY2Vzczo6aGFzU3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2Up
Cit7CisgICAgQVNTRVJUKG1fZG9jdW1lbnQuc2V0dGluZ3MoKS5zdG9yYWdlQWNjZXNzQVBJRW5h
YmxlZCgpKTsKKworICAgIGlmIChtX2RvY3VtZW50LmZyYW1lKCkgJiYgaGFzRnJhbWVTcGVjaWZp
Y1N0b3JhZ2VBY2Nlc3MoKSkgeworICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEJvb2xlYW4+
KHRydWUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmICghbV9kb2N1bWVu
dC5mcmFtZSgpIHx8IG1fZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5pc1VuaXF1ZSgpKSB7Cisg
ICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4oZmFsc2UpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIAorICAgIGlmIChtX2RvY3VtZW50LmZyYW1lKCktPmlzTWFpbkZyYW1l
KCkpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPih0cnVlKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBhdXRvJiBzZWN1cml0eU9yaWdpbiA9IG1fZG9j
dW1lbnQuc2VjdXJpdHlPcmlnaW4oKTsKKyAgICBhdXRvJiB0b3BTZWN1cml0eU9yaWdpbiA9IG1f
ZG9jdW1lbnQudG9wRG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpOworICAgIGlmIChzZWN1cml0
eU9yaWdpbi5lcXVhbCgmdG9wU2VjdXJpdHlPcmlnaW4pKSB7CisgICAgICAgIHByb21pc2UtPnJl
c29sdmU8SURMQm9vbGVhbj4odHJ1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisg
ICAgYXV0byBmcmFtZUlEID0gbV9kb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5m
cmFtZUlEKCk7CisgICAgYXV0byBwYWdlSUQgPSBtX2RvY3VtZW50LmZyYW1lKCktPmxvYWRlcigp
LmNsaWVudCgpLnBhZ2VJRCgpOworICAgIGlmICghZnJhbWVJRCB8fCAhcGFnZUlEKSB7CisgICAg
ICAgIHByb21pc2UtPnJlamVjdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAg
IGlmIChQYWdlKiBwYWdlID0gbV9kb2N1bWVudC5wYWdlKCkpIHsKKyAgICAgICAgYXV0byBzdWJG
cmFtZURvbWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChz
ZWN1cml0eU9yaWdpbi5ob3N0KCkpOworICAgICAgICBhdXRvIHRvcEZyYW1lRG9tYWluID0gUmVn
aXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHRvcFNlY3VyaXR5T3JpZ2lu
Lmhvc3QoKSk7CisgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmhhc1N0b3JhZ2VBY2Nl
c3MoV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFt
ZUlELnZhbHVlKCksIHBhZ2VJRC52YWx1ZSgpLCBbZG9jdW1lbnRSZWZlcmVuY2UgPSBtYWtlV2Vh
a1B0cigqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYm9vbCBoYXNBY2Nlc3Mp
IHsKKyAgICAgICAgICAgIERvY3VtZW50U3RvcmFnZUFjY2VzcyogZG9jdW1lbnQgPSBkb2N1bWVu
dFJlZmVyZW5jZS5nZXQoKTsKKyAgICAgICAgICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZl
PElETEJvb2xlYW4+KGhhc0FjY2Vzcyk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIAorICAgIHByb21pc2UtPnJlamVjdCgpOworfQorCit2b2lkIERvY3VtZW50U3Rv
cmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBw
cm9taXNlKQoreworICAgIEFTU0VSVChtX2RvY3VtZW50LnNldHRpbmdzKCkuc3RvcmFnZUFjY2Vz
c0FQSUVuYWJsZWQoKSk7CisgICAgCisgICAgaWYgKG1fZG9jdW1lbnQuZnJhbWUoKSAmJiBoYXNG
cmFtZVNwZWNpZmljU3RvcmFnZUFjY2VzcygpKSB7CisgICAgICAgIHByb21pc2UtPnJlc29sdmUo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoIW1fZG9jdW1lbnQuZnJh
bWUoKSB8fCBtX2RvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuaXNVbmlxdWUoKSkgeworICAgICAg
ICBwcm9taXNlLT5yZWplY3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBp
ZiAobV9kb2N1bWVudC5mcmFtZSgpLT5pc01haW5GcmFtZSgpKSB7CisgICAgICAgIHByb21pc2Ut
PnJlc29sdmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBhdXRvJiB0b3BE
b2N1bWVudCA9IG1fZG9jdW1lbnQudG9wRG9jdW1lbnQoKTsKKyAgICBhdXRvJiB0b3BTZWN1cml0
eU9yaWdpbiA9IHRvcERvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCk7CisgICAgYXV0byYgc2VjdXJp
dHlPcmlnaW4gPSBtX2RvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCk7CisgICAgaWYgKHNlY3VyaXR5
T3JpZ2luLmVxdWFsKCZ0b3BTZWN1cml0eU9yaWdpbikpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVz
b2x2ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIC8vIElmIHRoZXJlIGlz
IGEgc2FuZGJveCwgaXQgaGFzIHRvIGFsbG93IHRoZSBzdG9yYWdlIGFjY2VzcyBBUEkgdG8gYmUg
Y2FsbGVkLgorICAgIGlmIChtX2RvY3VtZW50LnNhbmRib3hGbGFncygpICE9IFNhbmRib3hOb25l
ICYmIG1fZG9jdW1lbnQuaXNTYW5kYm94ZWQoU2FuZGJveFN0b3JhZ2VBY2Nlc3NCeVVzZXJBY3Rp
dmF0aW9uKSkgeworICAgICAgICBwcm9taXNlLT5yZWplY3QoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICAKKyAgICAvLyBUaGUgaWZyYW1lIGhhcyB0byBiZSBhIGRpcmVjdCBjaGlsZCBv
ZiB0aGUgdG9wIGRvY3VtZW50LgorICAgIGlmICgmdG9wRG9jdW1lbnQgIT0gbV9kb2N1bWVudC5w
YXJlbnREb2N1bWVudCgpKSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIAorICAgIGlmICghVXNlckdlc3R1cmVJbmRpY2F0b3I6OnByb2Nl
c3NpbmdVc2VyR2VzdHVyZSgpKSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgUGFnZSogcGFnZSA9IG1fZG9jdW1lbnQucGFnZSgpOwor
ICAgIGF1dG8gZnJhbWVJRCA9IG1fZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuY2xpZW50KCku
ZnJhbWVJRCgpOworICAgIGF1dG8gcGFnZUlEID0gbV9kb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIo
KS5jbGllbnQoKS5wYWdlSUQoKTsKKyAgICBpZiAoIXBhZ2UgfHwgIWZyYW1lSUQgfHwgIXBhZ2VJ
RCkgeworICAgICAgICBwcm9taXNlLT5yZWplY3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAKKyAgICBhdXRvIHN1YkZyYW1lRG9tYWluID0gUmVnaXN0cmFibGVEb21haW46OnVuY2hl
Y2tlZENyZWF0ZUZyb21Ib3N0KHNlY3VyaXR5T3JpZ2luLmhvc3QoKSk7CisgICAgYXV0byB0b3BG
cmFtZURvbWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdCh0
b3BTZWN1cml0eU9yaWdpbi5ob3N0KCkpOworICAgIAorICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVu
dCgpLnJlcXVlc3RTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBXVEZNb3Zl
KHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRC52YWx1ZSgpLCBwYWdlSUQudmFsdWUoKSwgW2RvY3Vt
ZW50UmVmZXJlbmNlID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKV0gKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQ
cm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bikgbXV0YWJsZSB7CisgICAgICAgIERvY3VtZW50
U3RvcmFnZUFjY2VzcyogZG9jdW1lbnQgPSBkb2N1bWVudFJlZmVyZW5jZS5nZXQoKTsKKyAgICAg
ICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBDb25z
dW1lIHRoZSB1c2VyIGdlc3R1cmUgb25seSBpZiB0aGUgdXNlciBleHBsaWNpdGx5IGRlbmllZCBh
Y2Nlc3MuCisgICAgICAgIGJvb2wgc2hvdWxkUHJlc2VydmVVc2VyR2VzdHVyZSA9IHdhc0dyYW50
ZWQgPT0gU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6OlllcyB8fCBwcm9tcHRXYXNTaG93biA9PSBT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vOworCisgICAgICAgIGlmIChzaG91bGRQcmVz
ZXJ2ZVVzZXJHZXN0dXJlKSB7CisgICAgICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVh
ZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Vm9pZE1pY3JvdGFzaz4oW2RvY3VtZW50
UmVmZXJlbmNlID0gbWFrZVdlYWtQdHIoKmRvY3VtZW50KV0gKCkgeworICAgICAgICAgICAgICAg
IGlmIChhdXRvKiBkb2N1bWVudCA9IGRvY3VtZW50UmVmZXJlbmNlLmdldCgpKQorICAgICAgICAg
ICAgICAgICAgICBkb2N1bWVudC0+ZW5hYmxlVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCk7Cisg
ICAgICAgICAgICB9KSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAod2FzR3JhbnRlZCA9PSBT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVzKSB7CisgICAgICAgICAgICBkb2N1bWVudC0+c2V0
SGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3ModHJ1ZSk7CisgICAgICAgICAgICBwcm9taXNl
LT5yZXNvbHZlKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0
KCk7CisKKyAgICAgICAgaWYgKHNob3VsZFByZXNlcnZlVXNlckdlc3R1cmUpIHsKKyAgICAgICAg
ICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxWb2lkTWljcm90YXNrPihbZG9jdW1lbnRSZWZlcmVuY2UgPSBXVEZNb3ZlKGRvY3VtZW50
UmVmZXJlbmNlKV0gKCkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGRv
Y3VtZW50UmVmZXJlbmNlLmdldCgpKQorICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC0+Y29u
c3VtZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSgpOworICAgICAgICAgICAgfSkpOworICAgICAg
ICB9CisgICAgfSk7Cit9CisKK3ZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjplbmFibGVUZW1w
b3JhcnlUaW1lVXNlckdlc3R1cmUoKQoreworICAgIG1fdGVtcG9yYXJ5VXNlckdlc3R1cmUgPSBz
dGQ6Om1ha2VfdW5pcXVlPFVzZXJHZXN0dXJlSW5kaWNhdG9yPihQcm9jZXNzaW5nVXNlckdlc3R1
cmUsICZtX2RvY3VtZW50KTsKK30KKwordm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OmNvbnN1
bWVUZW1wb3JhcnlUaW1lVXNlckdlc3R1cmUoKQoreworICAgIG1fdGVtcG9yYXJ5VXNlckdlc3R1
cmUgPSBudWxscHRyOworfQorCitib29sIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6aGFzRnJhbWVT
cGVjaWZpY1N0b3JhZ2VBY2Nlc3MoKSBjb25zdAoreworICAgIGF1dG8qIGZyYW1lID0gbV9kb2N1
bWVudC5mcmFtZSgpOworICAgIHJldHVybiBmcmFtZSAmJiBmcmFtZS0+bG9hZGVyKCkuY2xpZW50
KCkuaGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MoKTsKK30KKwordm9pZCBEb2N1bWVudFN0
b3JhZ2VBY2Nlc3M6OnNldEhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKGJvb2wgdmFsdWUp
Cit7CisgICAgaWYgKGF1dG8qIGZyYW1lID0gbV9kb2N1bWVudC5mcmFtZSgpKQorICAgICAgICBm
cmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuc2V0SGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3Mo
dmFsdWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3Rv
cmFnZUFjY2Vzcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhNmY4YzE5ZDM4YWFjMzMwY2VmNWFkNGQzMzg3NWFl
NTMxNWE0NWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRT
dG9yYWdlQWNjZXNzLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKworI2luY2x1ZGUgIlN1
cHBsZW1lbnRhYmxlLmgiCisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBEZWZlcnJlZFByb21pc2U7CitjbGFzcyBEb2N1bWVudDsKK2NsYXNz
IFVzZXJHZXN0dXJlSW5kaWNhdG9yOworCitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NXYXNHcmFu
dGVkIDogYm9vbCB7CisgICAgTm8sCisgICAgWWVzCit9OworCitlbnVtIGNsYXNzIFN0b3JhZ2VB
Y2Nlc3NQcm9tcHRXYXNTaG93biA6IGJvb2wgeworICAgIE5vLAorICAgIFllcworfTsKKworY2xh
c3MgRG9jdW1lbnRTdG9yYWdlQWNjZXNzIGZpbmFsIDogcHVibGljIFN1cHBsZW1lbnQ8RG9jdW1l
bnQ+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RG9jdW1lbnRTdG9yYWdlQWNjZXNzPiB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgRG9jdW1lbnRT
dG9yYWdlQWNjZXNzKERvY3VtZW50JiBkb2N1bWVudCkKKyAgICAgICAgOiBtX2RvY3VtZW50KGRv
Y3VtZW50KQorICAgIHsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBoYXNTdG9yYWdlQWNjZXNz
KERvY3VtZW50JiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CisgICAgc3RhdGljIHZvaWQgcmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoRG9jdW1lbnQmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKKwor
cHJpdmF0ZToKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoUmVmPERlZmVycmVkUHJvbWlzZT4m
Jik7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNlPiYm
KTsKKyAgICBzdGF0aWMgRG9jdW1lbnRTdG9yYWdlQWNjZXNzKiBmcm9tKERvY3VtZW50Jik7Cisg
ICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CisgICAgYm9vbCBoYXNGcmFt
ZVNwZWNpZmljU3RvcmFnZUFjY2VzcygpIGNvbnN0OworICAgIHZvaWQgc2V0SGFzRnJhbWVTcGVj
aWZpY1N0b3JhZ2VBY2Nlc3MoYm9vbCk7CisgICAgdm9pZCBlbmFibGVUZW1wb3JhcnlUaW1lVXNl
ckdlc3R1cmUoKTsKKyAgICB2b2lkIGNvbnN1bWVUZW1wb3JhcnlUaW1lVXNlckdlc3R1cmUoKTsK
KworICAgIHN0ZDo6dW5pcXVlX3B0cjxVc2VyR2VzdHVyZUluZGljYXRvcj4gbV90ZW1wb3JhcnlV
c2VyR2VzdHVyZTsKKyAgICAKKyAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNj
ZXNzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaWRsCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRkZTNjNWYyMGM3NDU0ZGU0ZjBmNGEzMzk3MmY3YjBjMDFlNzc0ZTAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmlk
bApAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVJFU09V
UkNFX0xPQURfU1RBVElTVElDUywKK10gcGFydGlhbCBpbnRlcmZhY2UgRG9jdW1lbnQgeworICAg
IFByb21pc2U8Ym9vbD4gaGFzU3RvcmFnZUFjY2VzcygpOworICAgIFByb21pc2U8dm9pZD4gcmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoKTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRl
eCBjZGRmMTNjYWU4ODkzMGUyMzZlOTQwOWY5MmVmYzJmZmQ0MGJmNWQ5Li44NzFlNDE1MjNlMGJh
ZTI4Nzc0Yjc5YjZlYTZhMzU4NDllYzIxZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50
LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9u
UGVybWlzc2lvblN0YXRlLmgiCiAjaW5jbHVkZSAiRGlzYWJsZWRBZGFwdGF0aW9ucy5oIgogI2lu
Y2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRvci5oIgorI2luY2x1ZGUgIkRvY3VtZW50U3RvcmFn
ZUFjY2Vzcy5oIgogI2luY2x1ZGUgIkZvY3VzRGlyZWN0aW9uLmgiCiAjaW5jbHVkZSAiRnJhbWVM
b2FkZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKQEAgLTQwLDYgKzQxLDcgQEAK
ICNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCiAjaW5jbHVkZSAiUG9wdXBNZW51LmgiCiAjaW5j
bHVkZSAiUG9wdXBNZW51Q2xpZW50LmgiCisjaW5jbHVkZSAiUmVnaXN0cmFibGVEb21haW4uaCIK
ICNpbmNsdWRlICJSZW5kZXJFbWJlZGRlZE9iamVjdC5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVz
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKQEAgLTQ4Myw4ICs0ODUsMTAg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRQcm9jZXNzQ1BVVGltZShTZWNvbmRz
LCBBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcpIHsgfQogICAgIHZpcnR1YWwgUmVmUHRyPElj
b24+IGNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLyogZmlsZW5hbWVz
ICovKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcmJiAv
KnN1YkZyYW1lSG9zdCovLCBTdHJpbmcmJiAvKnRvcEZyYW1lSG9zdCovLCB1aW50NjRfdCAvKmZy
YW1lSUQqLywgdWludDY0X3QgLypwYWdlSUQqLywgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lk
IChib29sKT4mJiBjYWxsYmFjaykgeyBjYWxsYmFjayhmYWxzZSk7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgLypzdWJGcmFtZUhvc3QqLywgU3RyaW5n
JiYgLyp0b3BGcmFtZUhvc3QqLywgdWludDY0X3QgLypmcmFtZUlEKi8sIHVpbnQ2NF90IC8qcGFn
ZUlEKi8sIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2spIHsg
Y2FsbGJhY2soZmFsc2UpOyB9CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
KyAgICB2aXJ0dWFsIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIC8q
c3ViRnJhbWVEb21haW4qLywgUmVnaXN0cmFibGVEb21haW4mJiAvKnRvcEZyYW1lRG9tYWluKi8s
IHVpbnQ2NF90IC8qZnJhbWVJRCovLCB1aW50NjRfdCAvKnBhZ2VJRCovLCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOyB9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFJl
Z2lzdHJhYmxlRG9tYWluJiYgLypzdWJGcmFtZURvbWFpbiovLCBSZWdpc3RyYWJsZURvbWFpbiYm
IC8qdG9wRnJhbWVEb21haW4qLywgdWludDY0X3QgLypmcmFtZUlEKi8sIHVpbnQ2NF90IC8qcGFn
ZUlEKi8sIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRl
ZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBj
b21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6Tm8sIFN0b3JhZ2VBY2Nl
c3NQcm9tcHRXYXNTaG93bjo6Tm8pOyB9CisjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJ
RU5UQVRJT04pCiAgICAgdmlydHVhbCB2b2lkIHNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25B
bmRNb3Rpb25BY2Nlc3MoRnJhbWUmLCBib29sIC8qIG1heVByb21wdCAqLywgV1RGOjpDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUp
PiYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNz
aW9uU3RhdGU6OkRlbmllZCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRl
eCBkNGNkNDBiN2ViOGQ2NGNhOGEzNzkyMjQwZDFiYzIwMjlmZTcwOWM4Li4zYjc2MTRiZDEwOGUy
YjAwYzg2YzI1MmZmM2ZmMGVhNGMzYzg4YTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCkBAIC00Mzc3LDE1ICs0Mzc3LDYgQEAgdm9pZCBJbnRlcm5hbHM6OnNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlKQogICAgIERlcHJlY2F0ZWRHbG9iYWxT
ZXR0aW5nczo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlKTsKIH0KIAot
dm9pZCBJbnRlcm5hbHM6OnNldFVzZXJHcmFudHNTdG9yYWdlQWNjZXNzKGJvb2wgdmFsdWUpCi17
Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCk7Ci0gICAgaWYgKCFk
b2N1bWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZG9jdW1lbnQtPnNldFVzZXJHcmFudHNT
dG9yYWdlQWNjZXNzT3ZlcnJpZGUodmFsdWUpOwotfQotCiBTdHJpbmcgSW50ZXJuYWxzOjpjb21w
b3NlZFRyZWVBc1RleHQoTm9kZSYgbm9kZSkKIHsKICAgICBpZiAoIWlzPENvbnRhaW5lck5vZGU+
KG5vZGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggNDkxMTk3YTg2ZDE3NzY4
MGViZTdkNTg5Yzg0MGNhOTEzZDc2MGI5MC4uN2RjNTI3NjYxZjExNDE4NDVkMmE0M2VmYWU4ODU4
OTMyZjE1MmQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC02MzksNyArNjM5
LDYgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIHJlc291cmNlTG9hZFN0YXRpc3RpY3NGb3JVUkwo
Y29uc3QgRE9NVVJMJik7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZChib29sKTsKLSAgICB2b2lkIHNldFVzZXJHcmFudHNTdG9yYWdlQWNjZXNzKGJvb2wpOwogCiAj
aWYgRU5BQkxFKFNUUkVBTVNfQVBJKQogICAgIGJvb2wgaXNSZWFkYWJsZVN0cmVhbURpc3R1cmJl
ZChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwKaW5kZXggNzhkNGI4OGE2NTE4MjE1OGEzNWM3OGI1YmNkMmRkZWM0NTUxZTM5ZC4u
NWM3YjIzNjI2NjA4YWJiNTM2Njk0ZjA5NDY4ZWYzYjg0NDdiZGM2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNjI1LDcgKzYyNSw2IEBAIGVudW0gQ29tcG9zaXRpbmdQ
b2xpY3kgewogCiAgICAgRE9NU3RyaW5nIHJlc291cmNlTG9hZFN0YXRpc3RpY3NGb3JVUkwoRE9N
VVJMIHVybCk7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29s
ZWFuIGVuYWJsZSk7Ci0gICAgW0VuYWJsZWRCeVNldHRpbmc9U3RvcmFnZUFjY2Vzc0FQSV0gdm9p
ZCBzZXRVc2VyR3JhbnRzU3RvcmFnZUFjY2Vzcyhib29sZWFuIHZhbHVlKTsKIAogICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRDYW5TaG93TW9kYWxEaWFsb2dPdmVycmlkZShib29sZWFu
IGFsbG93KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZS5jcHAKaW5kZXggNWMyNzZhYmE4YmJmMjBjOWZmZmFlYjEwZmExODFjZmRhMzcz
ZjI1ZC4uYzZiODQ1ZjQ0YTIwYmMyN2FmZjAzODVjNzI1YjVkZjk1Y2YyMmUxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBA
IC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAi
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oIgogI2luY2x1ZGUgIldlYnNpdGVE
YXRhU3RvcmUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvS2V5ZWRDb2RpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlz
dGljcy5oPgpAQCAtNDUzLDcgKzQ1NCw3IEBAIHVuc2lnbmVkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpkb21haW5JRChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYKICAgICBy
ZXR1cm4gZG9tYWluSUQ7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6Omluc2VydERvbWFpblJlbGF0aW9uc2hpcHMoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljcyYgbG9hZFN0YXRpc3RpY3MpCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjppbnNlcnREb21haW5SZWxhdGlvbnNoaXBzKGNvbnN0IFJlc291cmNl
TG9hZFN0YXRpc3RpY3MmIGxvYWRTdGF0aXN0aWNzKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwogCkBAIC03NjgsNyArNzY5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJgog
ICAgIH07CiAKICAgICBhdXRvIHVzZXJXYXNQcm9tcHRlZEVhcmxpZXIgPSBoYXNVc2VyR3JhbnRl
ZFN0b3JhZ2VBY2Nlc3NUaHJvdWdoUHJvbXB0KHN1YkZyYW1lU3RhdHVzLnNlY29uZCwgdG9wRnJh
bWVEb21haW4pOwotICAgIGlmICghdXNlcldhc1Byb21wdGVkRWFybGllcikgeworICAgIGlmICh1
c2VyV2FzUHJvbXB0ZWRFYXJsaWVyID09IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8p
IHsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgUkVMRUFTRV9MT0dfSU5GT19J
RihkZWJ1Z0xvZ2dpbmdFbmFibGVkKCksIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1ZywgIkFi
b3V0IHRvIGFzayB0aGUgdXNlciB3aGV0aGVyIHRoZXkgd2FudCB0byBncmFudCBzdG9yYWdlIGFj
Y2VzcyB0byAle3B1YmxpY31zIHVuZGVyICV7cHVibGljfXMgb3Igbm90LiIsIHN1YkZyYW1lRG9t
YWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHRvcEZyYW1lRG9tYWluLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwogI2VuZGlmCkBAIC03NzcsNyArNzc4LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21h
aW4mJgogICAgIH0KIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIGlmICh1c2VyV2Fz
UHJvbXB0ZWRFYXJsaWVyKQorICAgIGlmICh1c2VyV2FzUHJvbXB0ZWRFYXJsaWVyID09IFN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6WWVzKQogICAgICAgICBSRUxFQVNFX0xPR19JTkZPX0lG
KGRlYnVnTG9nZ2luZ0VuYWJsZWQoKSwgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnLCAiU3Rv
cmFnZSBhY2Nlc3Mgd2FzIGdyYW50ZWQgdG8gJXtwdWJsaWN9cyB1bmRlciAle3B1YmxpY31zLiIs
IHN1YkZyYW1lRG9tYWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHRvcEZyYW1lRG9tYWluLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAKQEAgLTc4OCw4ICs3ODksOCBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vz
cyhTdWJGcmFtZURvbWFpbiYmCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0K
ICAgICAKLSAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChXVEZNb3ZlKHN1YkZyYW1lRG9t
YWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIHBhZ2VJRCwgdXNlcldhc1By
b21wdGVkRWFybGllciwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildIChib29sIHdhc0dyYW50ZWRBY2Nlc3MpIG11dGFibGUgewotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih3YXNHcmFudGVkQWNjZXNzID8gU3RvcmFnZUFjY2Vzc1N0YXR1czo6SGFzQWNj
ZXNzIDogU3RvcmFnZUFjY2Vzc1N0YXR1czo6Q2Fubm90UmVxdWVzdEFjY2Vzcyk7CisgICAgZ3Jh
bnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUo
dG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBwYWdlSUQsIHVzZXJXYXNQcm9tcHRlZEVhcmxpZXIs
IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoU3RvcmFn
ZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHdhc0dyYW50ZWQgPT0gU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6OlllcyA/IFN0
b3JhZ2VBY2Nlc3NTdGF0dXM6Okhhc0FjY2VzcyA6IFN0b3JhZ2VBY2Nlc3NTdGF0dXM6OkNhbm5v
dFJlcXVlc3RBY2Nlc3MpOwogICAgIH0pOwogfQogCkBAIC04MDksNDYgKzgxMCw0NiBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vz
c1VuZGVyT3BlbmVyKERvbWFpbgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIFJFTEVB
U0VfTE9HX0lORk9fSUYoZGVidWdMb2dnaW5nRW5hYmxlZCgpLCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGVidWcsICJbVGVtcG9yYXJ5IGNvbWJhdGliaWxpdHkgZml4XSBTdG9yYWdlIGFjY2VzcyB3
YXMgZ3JhbnRlZCBmb3IgJXtwdWJsaWN9cyB1bmRlciBvcGVuZXIgcGFnZSBmcm9tICV7cHVibGlj
fXMsIHdpdGggdXNlciBpbnRlcmFjdGlvbiBpbiB0aGUgb3BlbmVkIHdpbmRvdy4iLCBkb21haW5J
bk5lZWRPZlN0b3JhZ2VBY2Nlc3Muc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgb3BlbmVyRG9tYWlu
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCi0gICAgZ3JhbnRTdG9yYWdlQWNjZXNz
SW50ZXJuYWwoV1RGTW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpLCBXVEZNb3ZlKG9w
ZW5lckRvbWFpbiksIFdURjo6bnVsbG9wdCwgb3BlbmVyUGFnZUlELCBmYWxzZSwgW10oYm9vbCkg
eyB9KTsKKyAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChXVEZNb3ZlKGRvbWFpbkluTmVl
ZE9mU3RvcmFnZUFjY2VzcyksIFdURk1vdmUob3BlbmVyRG9tYWluKSwgV1RGOjpudWxsb3B0LCBv
cGVuZXJQYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8sIFtdKFN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkKSB7IH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFt
ZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgcGFnZUlELCBib29sIHVzZXJXYXNQcm9tcHRlZE5vdywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFp
biYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93
biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CiAKLSAgICBpZiAodXNlcldhc1Byb21wdGVkTm93KSB7CisgICAgaWYgKHByb21w
dFdhc1Nob3duID09IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6WWVzKSB7CiAgICAgICAg
IGF1dG8gc3ViRnJhbWVTdGF0dXMgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3Ry
YWJsZURvbWFpbihzdWJGcmFtZURvbWFpbik7CiAgICAgICAgIEFTU0VSVChzdWJGcmFtZVN0YXR1
cy5maXJzdCA9PSBBZGRlZFJlY29yZDo6Tm8pOwogICAgICAgICBBU1NFUlQoaGFzSGFkVXNlcklu
dGVyYWN0aW9uKHN1YkZyYW1lRG9tYWluLCBPcGVyYXRpbmdEYXRlc1dpbmRvdzo6TG9uZykpOwog
ICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXAobV9zdG9yYWdlQWNjZXNzVW5kZXJUb3BG
cmFtZURvbWFpbnNTdGF0ZW1lbnQsIHN1YkZyYW1lU3RhdHVzLnNlY29uZCwgdG9wRnJhbWVEb21h
aW4pOwogICAgIH0KIAotICAgIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoc3Vi
RnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgcGFnZUlELCB1
c2VyV2FzUHJvbXB0ZWROb3csIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBncmFu
dFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0
b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIHBhZ2VJRCwgcHJvbXB0V2FzU2hvd24sIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiBz
dWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8
RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlEIHBhZ2VJRCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWROb3dP
ckVhcmxpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJ
bnRlcm5hbChTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYm
IHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSUQgcGFnZUlE
LCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd25Ob3dPckVhcmxpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAg
aWYgKHN1YkZyYW1lRG9tYWluID09IHRvcEZyYW1lRG9tYWluKSB7Ci0gICAgICAgIGNhbGxiYWNr
KHRydWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNzV2FzR3JhbnRl
ZDo6WWVzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICh1c2VyV2FzUHJvbXB0
ZWROb3dPckVhcmxpZXIpIHsKKyAgICBpZiAocHJvbXB0V2FzU2hvd25Ob3dPckVhcmxpZXIgPT0g
U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpZZXMpIHsKICNpZm5kZWYgTkRFQlVHCiAgICAg
ICAgIGF1dG8gc3ViRnJhbWVTdGF0dXMgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdp
c3RyYWJsZURvbWFpbihzdWJGcmFtZURvbWFpbik7CiAgICAgICAgIEFTU0VSVChzdWJGcmFtZVN0
YXR1cy5maXJzdCA9PSBBZGRlZFJlY29yZDo6Tm8pOwogICAgICAgICBBU1NFUlQoaGFzSGFkVXNl
ckludGVyYWN0aW9uKHN1YkZyYW1lRG9tYWluLCBPcGVyYXRpbmdEYXRlc1dpbmRvdzo6TG9uZykp
OwotICAgICAgICBBU1NFUlQoaGFzVXNlckdyYW50ZWRTdG9yYWdlQWNjZXNzVGhyb3VnaFByb21w
dChzdWJGcmFtZVN0YXR1cy5zZWNvbmQsIHRvcEZyYW1lRG9tYWluKSk7CisgICAgICAgIEFTU0VS
VChoYXNVc2VyR3JhbnRlZFN0b3JhZ2VBY2Nlc3NUaHJvdWdoUHJvbXB0KHN1YkZyYW1lU3RhdHVz
LnNlY29uZCwgdG9wRnJhbWVEb21haW4pID09IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6
WWVzKTsKICNlbmRpZgogICAgICAgICBzZXRVc2VySW50ZXJhY3Rpb24oc3ViRnJhbWVEb21haW4s
IHRydWUsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgfQogCi0gICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCB0
b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCBmcmFtZUlELCBw
YWdlSUQsIHN0b3JlID0gbWFrZVJlZihzdG9yZSgpKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgc3RvcmUtPmNhbGxHcmFudFN0b3JhZ2VBY2Nlc3NI
YW5kbGVyKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgc3RvcmUgPSBzdG9yZS5jb3B5UmVmKCldKGJv
b2wgdmFsdWUpIG11dGFibGUgewotICAgICAgICAgICAgc3RvcmUtPnN0YXRpc3RpY3NRdWV1ZSgp
LmRpc3BhdGNoKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB2YWx1ZV0gKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2sodmFsdWUpOworICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbc3ViRnJhbWVEb21haW4gPSBzdWJGcmFtZURvbWFpbi5pc29sYXRlZENvcHko
KSwgdG9wRnJhbWVEb21haW4gPSB0b3BGcmFtZURvbWFpbi5pc29sYXRlZENvcHkoKSwgZnJhbWVJ
RCwgcGFnZUlELCBzdG9yZSA9IG1ha2VSZWYoc3RvcmUoKSksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIHN0b3JlLT5j
YWxsR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21h
aW4sIGZyYW1lSUQsIHBhZ2VJRCwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIHN0b3JlID0gc3RvcmUuY29weVJlZigpXShTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZCB3YXNHcmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHN0b3JlLT5zdGF0aXN0aWNz
UXVldWUoKS5kaXNwYXRjaChbd2FzR3JhbnRlZCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIod2FzR3JhbnRlZCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAg
ICAgfSk7CkBAIC0xMzQ5LDcgKzEzNTAsNyBAQCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6Q29va2llVHJlYXRtZW50UmVzdWx0IFJlc291cmNlTG9hZFN0YXRpc3RpYwogICAg
IHJldHVybiBoYWRVc2VySW50ZXJhY3Rpb24gPyBDb29raWVUcmVhdG1lbnRSZXN1bHQ6OkJsb2Nr
QW5kS2VlcCA6IENvb2tpZVRyZWF0bWVudFJlc3VsdDo6QmxvY2tBbmRQdXJnZTsKIH0KICAgICAK
LWJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1VzZXJHcmFudGVk
U3RvcmFnZUFjY2Vzc1Rocm91Z2hQcm9tcHQodW5zaWduZWQgcmVxdWVzdGluZ0RvbWFpbklELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbikgY29uc3QKK1N0b3JhZ2VB
Y2Nlc3NQcm9tcHRXYXNTaG93biBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
aGFzVXNlckdyYW50ZWRTdG9yYWdlQWNjZXNzVGhyb3VnaFByb21wdCh1bnNpZ25lZCByZXF1ZXN0
aW5nRG9tYWluSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluKSBj
b25zdAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0xMzU4LDkgKzEz
NTksOSBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNVc2Vy
R3JhbnRlZFN0b3JhZ2VBY2Nlc3NUaHJvdWdoUHJvbQogICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0
ZW1lbnQobV9kYXRhYmFzZSwgbWFrZVN0cmluZygiU0VMRUNUIENPVU5UKCopIEZST00gU3RvcmFn
ZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIGRvbWFpbklEID0gIiwgU3RyaW5nOjpu
dW1iZXIocmVxdWVzdGluZ0RvbWFpbklEKSwgIiBBTkQgdG9wTGV2ZWxEb21haW5JRCA9ICIsIFN0
cmluZzo6bnVtYmVyKGZpcnN0UGFydHlQcmltYXJ5RG9tYWluSUQpKSk7CiAgICAgaWYgKHN0YXRl
bWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IHN0YXRlbWVudC5zdGVwKCkg
IT0gU1FMSVRFX1JPVykKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gU3Rv
cmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObzsKIAotICAgIHJldHVybiAhc3RhdGVtZW50Lmdl
dENvbHVtbkludCgwKTsKKyAgICByZXR1cm4gIXN0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCkgPyBT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246OlllcyA6IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNT
aG93bjo6Tm87CiB9CiAKIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbnNUb0Jsb2NrKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKaW5kZXggMTI5NDZh
NmIwNTczN2I1MmJlODAzMTVmNDJiZTRkODZmNjE3NjI0ZS4uYmFiMmI3YWVhYjc2MGQyYTNlMWVj
YmRlOGI3NTg1Mzc1NWUzYWU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKQEAgLTM5LDYgKzM5LDggQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIFNRTGl0ZURhdGFiYXNlOwogY2xhc3MgU1FMaXRlU3RhdGVtZW50OworZW51
bSBjbGFzcyBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gOiBib29sOworZW51bSBjbGFzcyBT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA6IGJvb2w7CiBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlz
dGljczsKIH0KIApAQCAtOTEsNyArOTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGhhc1N0b3Jh
Z2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9w
dGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
IG92ZXJyaWRlOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4m
JiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGdyYW50U3Rv
cmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQ
YWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkTm93LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURv
bWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIFdlYkNvcmU6OlN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBsb2dGcmFt
ZU5hdmlnYXRpb24oY29uc3QgTmF2aWdhdGVkVG9Eb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFp
biYsIGNvbnN0IE5hdmlnYXRlZEZyb21Eb21haW4mLCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNN
YWluRnJhbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFRv
cEZyYW1lRG9tYWluJikgb3ZlcnJpZGU7CkBAIC0xMjgsNyArMTMwLDcgQEAgcHJpdmF0ZToKICAg
ICBWZWN0b3I8dW5zaWduZWQ+IGZpbmRFeHBpcmVkVXNlckludGVyYWN0aW9ucygpIGNvbnN0Owog
ICAgIHZvaWQgY2xlYXJFeHBpcmVkVXNlckludGVyYWN0aW9ucygpOwogICAgIHZvaWQgY2xlYXJH
cmFuZGZhdGhlcmluZyhWZWN0b3I8dW5zaWduZWQ+JiYpOwotICAgIGJvb2wgaGFzVXNlckdyYW50
ZWRTdG9yYWdlQWNjZXNzVGhyb3VnaFByb21wdCh1bnNpZ25lZCBkb21haW5JRCwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mKSBjb25zdDsKKyAgICBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd24gaGFzVXNlckdyYW50ZWRTdG9yYWdlQWNjZXNzVGhyb3VnaFByb21wdCh1bnNpZ25l
ZCBkb21haW5JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKICAgICB2b2lkIGlu
Y3JlbWVudFJlY29yZHNEZWxldGVkQ291bnRGb3JEb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVE
b21haW4+JiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCByZWNsYXNzaWZ5UmVzb3VyY2VzKCk7CkBA
IC0xNTAsNyArMTUyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNl
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgUmVzb3VyY2VMb2FkUHJldmFsZW5jZSk7CiAgICAg
dW5zaWduZWQgcmVjdXJzaXZlbHlGaW5kTm9uUHJldmFsZW50RG9tYWluc1RoYXRSZWRpcmVjdGVk
VG9UaGlzRG9tYWluKHVuc2lnbmVkIHByaW1hcnlEb21haW5JRCwgU3RkU2V0PHVuc2lnbmVkPiYg
bm9uUHJldmFsZW50UmVkaXJlY3Rpb25Tb3VyY2VzLCB1bnNpZ25lZCBudW1iZXJPZlJlY3Vyc2l2
ZUNhbGxzKTsKICAgICB2b2lkIHNldERvbWFpbnNBc1ByZXZhbGVudChTdGRTZXQ8dW5zaWduZWQ+
JiYpOwotICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21haW4m
JiwgVG9wRnJhbWVEb21haW4mJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCwgYm9vbCB1c2Vy
V2FzUHJvbXB0ZWROb3dPckVhcmxpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiwg
VG9wRnJhbWVEb21haW4mJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCwgV2ViQ29yZTo6U3Rv
cmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CiAgICAgdm9pZCBtYXJrQXNQcmV2YWxlbnRJ
Zkhhc1JlZGlyZWN0ZWRUb1ByZXZhbGVudCgpOwogICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFp
bj4gZW5zdXJlUHJldmFsZW50UmVzb3VyY2VzRm9yRGVidWdNb2RlKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCByZW1vdmVEYXRhUmVjb3JkcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRl
eCA2OWY3OTI0MzBmZmU2NWIzNjgzMzMyNTc0Y2YyNDNlMGZjN2IwOTE3Li5mOGY2ODgyNDY0NGM4
MmU1M2RmYjM5NmI5MDlmMGJmYTE0NzY4NjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1
ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NUZWxlbWV0cnkuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0tleWVk
Q29kaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaD4KQEAgLTI0NCw3ICsyNDUs
NyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiBzdQogICAgIH0KIAogICAgIGF1dG8gdXNlcldhc1By
b21wdGVkRWFybGllciA9IGhhc1VzZXJHcmFudGVkU3RvcmFnZUFjY2Vzc1Rocm91Z2hQcm9tcHQo
c3ViRnJhbWVTdGF0aXN0aWMsIHRvcEZyYW1lRG9tYWluKTsKLSAgICBpZiAoIXVzZXJXYXNQcm9t
cHRlZEVhcmxpZXIpIHsKKyAgICBpZiAodXNlcldhc1Byb21wdGVkRWFybGllciA9PSBTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vKSB7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAg
ICAgICAgIFJFTEVBU0VfTE9HX0lORk9fSUYoZGVidWdMb2dnaW5nRW5hYmxlZCgpLCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGVidWcsICJBYm91dCB0byBhc2sgdGhlIHVzZXIgd2hldGhlciB0aGV5
IHdhbnQgdG8gZ3JhbnQgc3RvcmFnZSBhY2Nlc3MgdG8gJXtwdWJsaWN9cyB1bmRlciAle3B1Ymxp
Y31zIG9yIG5vdC4iLCBzdWJGcmFtZURvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0b3BG
cmFtZURvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgpAQCAtMjUzLDE0ICsy
NTQsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlcXVlc3RT
dG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3UKICAgICB9CiAKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKLSAgICBpZiAodXNlcldhc1Byb21wdGVkRWFybGllcikKKyAgICBpZiAodXNl
cldhc1Byb21wdGVkRWFybGllciA9PSBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246OlllcykK
ICAgICAgICAgUkVMRUFTRV9MT0dfSU5GT19JRihkZWJ1Z0xvZ2dpbmdFbmFibGVkKCksIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEZWJ1ZywgIlN0b3JhZ2UgYWNjZXNzIHdhcyBncmFudGVkIHRvICV7
cHVibGljfXMgdW5kZXIgJXtwdWJsaWN9cy4iLCBzdWJGcmFtZURvbWFpbi5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCB0b3BGcmFtZURvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICNlbmRp
ZgogCiAgICAgc3ViRnJhbWVTdGF0aXN0aWMudGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRv
U3RvcmFnZUFjY2Vzc0FQSSsrOwogCi0gICAgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RG
TW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBw
YWdlSUQsIHVzZXJXYXNQcm9tcHRlZEVhcmxpZXIsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCB3YXNHcmFudGVkQWNjZXNzKSBtdXRhYmxlIHsK
LSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod2FzR3JhbnRlZEFjY2VzcyA/IFN0b3JhZ2VBY2Nl
c3NTdGF0dXM6Okhhc0FjY2VzcyA6IFN0b3JhZ2VBY2Nlc3NTdGF0dXM6OkNhbm5vdFJlcXVlc3RB
Y2Nlc3MpOworICAgIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoc3ViRnJhbWVE
b21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgcGFnZUlELCB1c2VyV2Fz
UHJvbXB0ZWRFYXJsaWVyLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQpIG11dGFibGUgewor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3YXNHcmFudGVkID09IFN0b3JhZ2VBY2Nlc3NXYXNH
cmFudGVkOjpZZXMgPyBTdG9yYWdlQWNjZXNzU3RhdHVzOjpIYXNBY2Nlc3MgOiBTdG9yYWdlQWNj
ZXNzU3RhdHVzOjpDYW5ub3RSZXF1ZXN0QWNjZXNzKTsKICAgICB9KTsKIH0KIApAQCAtMjgyLDQx
ICsyODMsNDEgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlcXVl
c3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW4KICNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKICAgICBSRUxFQVNFX0xPR19JTkZPX0lGKGRlYnVnTG9nZ2luZ0VuYWJsZWQoKSwgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnLCAiW1RlbXBvcmFyeSBjb21iYXRpYmlsaXR5IGZpeF0g
U3RvcmFnZSBhY2Nlc3Mgd2FzIGdyYW50ZWQgZm9yICV7cHVibGljfXMgdW5kZXIgb3BlbmVyIHBh
Z2UgZnJvbSAle3B1YmxpY31zLCB3aXRoIHVzZXIgaW50ZXJhY3Rpb24gaW4gdGhlIG9wZW5lZCB3
aW5kb3cuIiwgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCksIG9wZW5lckRvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgotICAgIGdy
YW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNj
ZXNzKSwgV1RGTW92ZShvcGVuZXJEb21haW4pLCBXVEY6Om51bGxvcHQsIG9wZW5lclBhZ2VJRCwg
ZmFsc2UsIFtdKGJvb2wpIHsgfSk7CisgICAgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RG
TW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpLCBXVEZNb3ZlKG9wZW5lckRvbWFpbiks
IFdURjo6bnVsbG9wdCwgb3BlbmVyUGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246
Ok5vLCBbXShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCkgeyB9KTsKIH0KIAotdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURv
bWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkTm93
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50U3RvcmFnZUFjY2VzcyhT
dWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZyYW1l
RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQ
cm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9y
YWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBpZiAodXNlcldhc1Byb21wdGVkTm93KSB7Cisg
ICAgaWYgKHByb21wdFdhc1Nob3duID09IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6WWVz
KSB7CiAgICAgICAgIGF1dG8mIHN1YkZyYW1lU3RhdGlzdGljID0gZW5zdXJlUmVzb3VyY2VTdGF0
aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oc3ViRnJhbWVEb21haW4pOwogICAgICAgICBBU1NF
UlQoc3ViRnJhbWVTdGF0aXN0aWMuaGFkVXNlckludGVyYWN0aW9uKTsKICAgICAgICAgc3ViRnJh
bWVTdGF0aXN0aWMuc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zLmFkZCh0b3BGcmFt
ZURvbWFpbik7CiAgICAgfQotICAgIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUo
c3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgcGFnZUlE
LCB1c2VyV2FzUHJvbXB0ZWROb3csIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBn
cmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92
ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIHBhZ2VJRCwgcHJvbXB0V2FzU2hvd24sIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYg
c3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFs
PEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJRCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkTm93
T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQordm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0lu
dGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYg
dG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJRCBwYWdlSUQs
IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bk5vd09yRWFybGllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBp
ZiAoc3ViRnJhbWVEb21haW4gPT0gdG9wRnJhbWVEb21haW4pIHsKLSAgICAgICAgY2FsbGJhY2so
dHJ1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
OjpZZXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHVzZXJXYXNQcm9tcHRl
ZE5vd09yRWFybGllcikgeworICAgIGlmIChwcm9tcHRXYXNTaG93bk5vd09yRWFybGllciA9PSBT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246OlllcykgewogICAgICAgICBhdXRvJiBzdWJGcmFt
ZVN0YXRpc3RpYyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWlu
KHN1YkZyYW1lRG9tYWluKTsKICAgICAgICAgQVNTRVJUKHN1YkZyYW1lU3RhdGlzdGljLmhhZFVz
ZXJJbnRlcmFjdGlvbik7CiAgICAgICAgIEFTU0VSVChzdWJGcmFtZVN0YXRpc3RpYy5zdG9yYWdl
QWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMuY29udGFpbnModG9wRnJhbWVEb21haW4pKTsKICAg
ICAgICAgc3ViRnJhbWVTdGF0aXN0aWMubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgPSBX
YWxsVGltZTo6bm93KCk7CiAgICAgfQogCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtz
dWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCB0b3BGcmFtZURv
bWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCBmcmFtZUlELCBwYWdlSUQsIHN0
b3JlID0gbWFrZVJlZihzdG9yZSgpKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBt
dXRhYmxlIHsKLSAgICAgICAgc3RvcmUtPmNhbGxHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKHN1
YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBbY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKSwgc3RvcmUgPSBzdG9yZS5jb3B5UmVmKCldKGJvb2wgdmFsdWUp
IG11dGFibGUgewotICAgICAgICAgICAgc3RvcmUtPnN0YXRpc3RpY3NRdWV1ZSgpLmRpc3BhdGNo
KFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB2YWx1ZV0gKCkgbXV0YWJsZSB7Ci0gICAg
ICAgICAgICAgICAgY2FsbGJhY2sodmFsdWUpOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbc3ViRnJhbWVEb21haW4gPSBzdWJGcmFtZURvbWFpbi5pc29sYXRlZENvcHkoKSwgdG9wRnJh
bWVEb21haW4gPSB0b3BGcmFtZURvbWFpbi5pc29sYXRlZENvcHkoKSwgZnJhbWVJRCwgcGFnZUlE
LCBzdG9yZSA9IG1ha2VSZWYoc3RvcmUoKSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIHN0b3JlLT5jYWxsR3JhbnRT
dG9yYWdlQWNjZXNzSGFuZGxlcihzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIGZyYW1l
SUQsIHBhZ2VJRCwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIHN0b3JlID0gc3RvcmUuY29weVJlZigpXShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNH
cmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHN0b3JlLT5zdGF0aXN0aWNzUXVldWUoKS5k
aXNwYXRjaChbd2FzR3JhbnRlZCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIod2FzR3JhbnRlZCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfSk7CkBA
IC03NDEsOSArNzQyLDkgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6
OnNob3VsZEJsb2NrQW5kUHVyZ2VDb29raWVzKGNvbnN0IFJlc291cmMKICAgICByZXR1cm4gc3Rh
dGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UgJiYgIXN0YXRpc3RpYy5oYWRVc2VySW50ZXJhY3Rp
b247CiB9CiAKLWJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpoYXNVc2Vy
R3JhbnRlZFN0b3JhZ2VBY2Nlc3NUaHJvdWdoUHJvbXB0KGNvbnN0IFJlc291cmNlTG9hZFN0YXRp
c3RpY3MmIHN0YXRpc3RpYywgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21h
aW4pCitTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlOjpoYXNVc2VyR3JhbnRlZFN0b3JhZ2VBY2Nlc3NUaHJvdWdoUHJvbXB0KGNvbnN0
IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHN0YXRpc3RpYywgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIGZpcnN0UGFydHlEb21haW4pCiB7Ci0gICAgcmV0dXJuIHN0YXRpc3RpYy5zdG9yYWdlQWNj
ZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMuY29udGFpbnMoZmlyc3RQYXJ0eURvbWFpbik7CisgICAg
cmV0dXJuIHN0YXRpc3RpYy5zdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMuY29udGFp
bnMoZmlyc3RQYXJ0eURvbWFpbikgPyBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246OlllcyA6
IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm87CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlOjp1cGRhdGVDb29raWVCbG9ja2luZyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKaW5kZXggZjFkZDJkODM2NWNjMTViYmQ4Yjhl
YzE4YjFlNmE4ZTJkNDZhZDlmMi4uNDRlZmJmNGRlYzE0ZjIwMjcwMmFjYWQwNzc2OGY1YWM4MjBi
ODA1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmUuaApAQCAtMzcsNiArMzcsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgS2V5ZWRE
ZWNvZGVyOwogY2xhc3MgS2V5ZWRFbmNvZGVyOworZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzUHJv
bXB0V2FzU2hvd24gOiBib29sOworZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA6
IGJvb2w7CiBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKIH0KIApAQCAtOTcsNyArOTks
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVE
b21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJh
bWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMp
PiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFp
biYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIGJvb2wgdXNlcldhc1Byb21w
dGVkTm93LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYm
LCBGcmFtZUlELCBQYWdlSUQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+
JiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBsb2dGcmFtZU5hdmlnYXRpb24oY29uc3QgTmF2aWdh
dGVkVG9Eb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZEZyb21E
b21haW4mLCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJhbWUpIG92ZXJyaWRlOwogICAg
IHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9tYWluJikgb3ZlcnJpZGU7
CkBAIC0xMTMsNyArMTE1LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBz
aG91bGRCbG9ja0FuZEtlZXBDb29raWVzKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsK
ICAgICBzdGF0aWMgYm9vbCBzaG91bGRCbG9ja0FuZFB1cmdlQ29va2llcyhjb25zdCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzJik7Ci0gICAgc3RhdGljIGJvb2wgaGFzVXNlckdyYW50ZWRTdG9yYWdl
QWNjZXNzVGhyb3VnaFByb21wdChjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mKTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1By
b21wdFdhc1Nob3duIGhhc1VzZXJHcmFudGVkU3RvcmFnZUFjY2Vzc1Rocm91Z2hQcm9tcHQoY29u
c3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAg
ICAgYm9vbCBoYXNIYWRVbmV4cGlyZWRSZWNlbnRVc2VySW50ZXJhY3Rpb24oUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyYsIE9wZXJhdGluZ0RhdGVzV2luZG93KSBjb25zdDsKICAgICBib29sIHNob3Vs
ZFJlbW92ZUFsbFdlYnNpdGVEYXRhRm9yKFJlc291cmNlTG9hZFN0YXRpc3RpY3MmLCBib29sIHNo
b3VsZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkUmVtb3Zl
QWxsQnV0Q29va2llc0ZvcihSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgYm9vbCBzaG91bGRDaGVj
a0ZvckdyYW5kZmF0aGVyaW5nKSBjb25zdDsKQEAgLTEyMSw3ICsxMjMsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgaW5jcmVtZW50UmVjb3Jkc0RlbGV0ZWRDb3VudEZvckRvbWFpbnMoSGFzaFNldDxS
ZWdpc3RyYWJsZURvbWFpbj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNv
dXJjZShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgUmVzb3VyY2VMb2FkUHJldmFsZW5jZSk7CiAg
ICAgdW5zaWduZWQgcmVjdXJzaXZlbHlHZXRBbGxEb21haW5zVGhhdEhhdmVSZWRpcmVjdGVkVG9U
aGlzRG9tYWluKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmLCBIYXNoU2V0PFJlZGlyZWN0
ZWRUb0RvbWFpbj4mLCB1bnNpZ25lZCBudW1iZXJPZlJlY3Vyc2l2ZUNhbGxzKSBjb25zdDsKLSAg
ICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZy
YW1lRG9tYWluJiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIGJvb2wgdXNlcldhc1Byb21w
dGVkTm93T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2
b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1l
RG9tYWluJiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nl
c3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZCk+JiYpOwogICAgIHZvaWQgbWFya0FzUHJldmFsZW50SWZIYXNSZWRp
cmVjdGVkVG9QcmV2YWxlbnQoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAgIGJvb2wgaXNQ
cmV2YWxlbnREdWVUb0RlYnVnTW9kZShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAgICAgVmVj
dG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBlbnN1cmVQcmV2YWxlbnRSZXNvdXJjZXNGb3JEZWJ1Z01v
ZGUoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApp
bmRleCBkMzBhYTlmNWRkYWVhOWRjZjcwYzJiMDg2YzM0MjJjNjMzMmYzMWJlLi4yMjBiM2M2YmY2
NTVkMmYwNmI5NzZjMTQxYzM3ZDdjY2U5MjYwYTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC00MSw2ICs0MSw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBLZXllZERlY29kZXI7CiBjbGFzcyBLZXllZEVuY29kZXI7CitlbnVtIGNsYXNzIFN0
b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biA6IGJvb2w7CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkIDogYm9vbDsKIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogfQog
CkBAIC0xNjEsNyArMTYzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGhhc1N0b3Jh
Z2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9w
dGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21h
aW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdy
YW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFt
ZUlELCBQYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkTm93LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhT
dWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIFdlYkNv
cmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpID0gMDsKIAogICAgIHZpcnR1YWwg
dm9pZCBsb2dGcmFtZU5hdmlnYXRpb24oY29uc3QgTmF2aWdhdGVkVG9Eb21haW4mLCBjb25zdCBU
b3BGcmFtZURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZEZyb21Eb21haW4mLCBib29sIGlzUmVkaXJl
Y3QsIGJvb2wgaXNNYWluRnJhbWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbG9nVXNlckludGVy
YWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9tYWluJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBiNzk4ZmQwYzQ3YzNmNzZhZjBlZDAz
YTljMGNhY2IwODBiNmY3ZmZmLi4yNTJmZTFjYTAzMTYzMTBmM2E0ZGYxZmU4YjkyZDY4NDFjNWM5
Njk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llSmFyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudFN0
b3JhZ2VBY2Nlc3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oPgpAQCAtMzE0LDUyICszMTUsNDcgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNhbGxIYXNTdG9yYWdlQWNjZXNz
Rm9yRnJhbWVIYW5kbGVyKGNvbnN0IFIKICAgICBjYWxsYmFjayhmYWxzZSk7CiB9CiAKLXZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc0dyYW50
ZWQoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBh
Z2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vz
cyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIGlm
IChzdWJGcmFtZURvbWFpbiA9PSB0b3BGcmFtZURvbWFpbikgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVzLCBTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd246Ok5vKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICBhdXRvIHN0
YXR1c0hhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdWJG
cmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCB0b3BGcmFtZURvbWFp
biA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCBmcmFtZUlELCBwYWdlSUQsIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFN0b3JhZ2VBY2Nlc3NT
dGF0dXMgc3RhdHVzKSBtdXRhYmxlIHsKICAgICAgICAgc3dpdGNoIChzdGF0dXMpIHsKICAgICAg
ICAgY2FzZSBTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5ub3RSZXF1ZXN0QWNjZXNzOgotICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Ok5vLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2Fz
U2hvd246Ok5vKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBTdG9yYWdlQWNj
ZXNzU3RhdHVzOjpSZXF1aXJlc1VzZXJQcm9tcHQ6CiAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiByZXF1ZXN0Q29uZmlybWF0aW9uQ29tcGxl
dGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJl
ZigpLCBzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGJvb2wgdXNlckRp
ZEdyYW50QWNjZXNzKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAodXNlckRpZEdyYW50
QWNjZXNzKQotICAgICAgICAgICAgICAgICAgICBncmFudFN0b3JhZ2VBY2Nlc3Moc3ViRnJhbWVE
b21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIHVzZXJEaWRHcmFudEFjY2Vz
cywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgICAgICAgICBncmFu
dFN0b3JhZ2VBY2Nlc3Moc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELCBw
YWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6WWVzLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpObywgU3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duOjpZZXMpOwogICAgICAgICAgICAgfTsKICAgICAgICAgICAgIG1fbmV0d29ya1Nlc3Np
b24tPm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZXF1ZXN0U3RvcmFnZUFj
Y2Vzc0NvbmZpcm0ocGFnZUlELCBmcmFtZUlELCBzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21h
aW4pLCBXVEZNb3ZlKHJlcXVlc3RDb25maXJtYXRpb25Db21wbGV0aW9uSGFuZGxlcikpOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFN0b3JhZ2VBY2Nl
c3NTdGF0dXM6Okhhc0FjY2VzczoKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUp
OworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6
OlllcywgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObyk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICB9OwogCi0gICAgcmVxdWVzdFN0b3JhZ2VBY2Nlc3Moc3ViRnJh
bWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUoc3RhdHVz
SGFuZGxlcikpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWlu
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Rv
cmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKHN1YkZy
YW1lRG9tYWluID09IHRvcEZyYW1lRG9tYWluKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFN0b3JhZ2VBY2Nlc3NTdGF0dXM6Okhhc0FjY2Vzcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBwb3N0VGFzayhbdGhpcywgc3ViRnJhbWVEb21haW4gPSBzdWJGcmFtZURvbWFpbi5p
c29sYXRlZENvcHkoKSwgdG9wRnJhbWVEb21haW4gPSB0b3BGcmFtZURvbWFpbi5pc29sYXRlZENv
cHkoKSwgZnJhbWVJRCwgcGFnZUlELCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlzLCBzdWJGcmFtZURv
bWFpbiA9IHN1YkZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9IHRv
cEZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCBmcmFtZUlELCBwYWdlSUQsIHN0YXR1c0hhbmRs
ZXIgPSBXVEZNb3ZlKHN0YXR1c0hhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBpZiAoIW1f
c3RhdGlzdGljc1N0b3JlKSB7Ci0gICAgICAgICAgICBwb3N0VGFza1JlcGx5KFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NTdGF0dXM6OkNhbm5vdFJl
cXVlc3RBY2Nlc3MpOworICAgICAgICAgICAgcG9zdFRhc2tSZXBseShbc3RhdHVzSGFuZGxlciA9
IFdURk1vdmUoc3RhdHVzSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgc3Rh
dHVzSGFuZGxlcihTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5ub3RSZXF1ZXN0QWNjZXNzKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKG1fc3RhdGlzdGljc1N0b3JlKSB7Ci0gICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+
cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9w
RnJhbWVEb21haW4pLCBmcmFtZUlELnZhbHVlKCksIHBhZ2VJRCwgW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFN0b3JhZ2VBY2Nlc3NTdGF0dXMgc3RhdHVz
KSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBwb3N0VGFza1JlcGx5KFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzdGF0dXNdKCkgbXV0YWJsZSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXR1cyk7CisgICAgICAgICAg
ICBtX3N0YXRpc3RpY3NTdG9yZS0+cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFt
ZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBwYWdlSUQsIFtzdGF0
dXNIYW5kbGVyID0gV1RGTW92ZShzdGF0dXNIYW5kbGVyKV0oU3RvcmFnZUFjY2Vzc1N0YXR1cyBz
dGF0dXMpIG11dGFibGUgeworICAgICAgICAgICAgICAgIHBvc3RUYXNrUmVwbHkoW3N0YXR1c0hh
bmRsZXIgPSBXVEZNb3ZlKHN0YXR1c0hhbmRsZXIpLCBzdGF0dXNdKCkgbXV0YWJsZSB7CisgICAg
ICAgICAgICAgICAgICAgIHN0YXR1c0hhbmRsZXIoc3RhdHVzKTsKICAgICAgICAgICAgICAgICB9
KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CkBAIC0zNzksMjggKzM3NSwyOCBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRl
ck9wZW5lcihSZWdpc3RyYWJsZQogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWlu
LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVk
Tm93LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyhj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlE
LCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRX
YXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKLSAgICBwb3N0VGFzayhbdGhpcywgc3ViRnJhbWVEb21haW4gPSBzdWJGcmFtZURv
bWFpbi5pc29sYXRlZENvcHkoKSwgdG9wRnJhbWVEb21haW4gPSB0b3BGcmFtZURvbWFpbi5pc29s
YXRlZENvcHkoKSwgZnJhbWVJRCwgcGFnZUlELCB1c2VyV2FzUHJvbXB0ZWROb3csIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAg
cG9zdFRhc2soW3RoaXMsIHN1YkZyYW1lRG9tYWluID0gc3ViRnJhbWVEb21haW4uaXNvbGF0ZWRD
b3B5KCksIHRvcEZyYW1lRG9tYWluID0gdG9wRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIGZy
YW1lSUQsIHBhZ2VJRCwgcHJvbXB0V2FzU2hvd24sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghbV9zdGF0aXN0
aWNzU3RvcmUpIHsKLSAgICAgICAgICAgIHBvc3RUYXNrUmVwbHkoW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICAgICAgcG9zdFRhc2tSZXBseShb
cHJvbXB0V2FzU2hvd24sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3Rv
cmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Ok5vLCBwcm9tcHRXYXNTaG93bik7CiAgICAgICAgICAgICB9
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX3N0YXRp
c3RpY3NTdG9yZSkgewotICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPmdyYW50U3RvcmFn
ZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiks
IGZyYW1lSUQsIHBhZ2VJRCwgdXNlcldhc1Byb21wdGVkTm93LCBbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCB3YXNHcmFudGVkQWNjZXNzKSBtdXRh
YmxlIHsKLSAgICAgICAgICAgICAgICBwb3N0VGFza1JlcGx5KFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB3YXNHcmFudGVkQWNjZXNzXSgpIG11dGFibGUg
ewotICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3YXNHcmFudGVkQWNjZXNz
KTsKKyAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5ncmFudFN0b3JhZ2VBY2Nlc3MoV1RG
TW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBw
YWdlSUQsIHByb21wdFdhc1Nob3duLCBbcHJvbXB0V2FzU2hvd24sIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdh
c0dyYW50ZWRBY2Nlc3MpIG11dGFibGUgeworICAgICAgICAgICAgICAgIHBvc3RUYXNrUmVwbHko
W3dhc0dyYW50ZWRBY2Nlc3MsIHByb21wdFdhc1Nob3duLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcih3YXNHcmFudGVkQWNjZXNzLCBwcm9tcHRXYXNTaG93bik7CiAg
ICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0pOwog
fQogCi1ib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNj
ZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCB1aW50NjRfdCBwYWdlSUQpCitTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5
RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKQogewog
ICAgIGJvb2wgaXNTdG9yYWdlR3JhbnRlZCA9IGZhbHNlOwogCkBAIC00MTAsMTQgKzQwNiwxNCBA
QCBib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNz
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJgogICAgICAgICBpc1N0b3JhZ2VHcmFudGVkID0gdHJ1
ZTsKICAgICB9CiAKLSAgICByZXR1cm4gaXNTdG9yYWdlR3JhbnRlZDsKKyAgICByZXR1cm4gaXNT
dG9yYWdlR3JhbnRlZCA/IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMgOiBTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZDo6Tm87CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpjYWxsR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFp
biwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpjYWxsR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BG
cmFtZURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGNh
bGxiYWNrKGdyYW50U3RvcmFnZUFjY2VzcyhzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4s
IGZyYW1lSUQsIHBhZ2VJRCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKGdyYW50U3RvcmFnZUFj
Y2VzcyhzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCkpOwog
fQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZGlkQ3JlYXRlTmV0d29y
a1Byb2Nlc3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
CmluZGV4IGEwZmU4ZWNlOGQ4ZjhlNWVhMTNlMDg2YzNlZmQ1ZWJiZDJmYzhhYTIuLmY1NjlkYzM2
NDMxYTRkZGRjNGI3ZmZiNDQxYjM0MGUwNTllZGRkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTQ4LDYgKzQ4LDggQEAgY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0Owogc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3M7CiBlbnVtIGNsYXNzIFNo
b3VsZFNhbXBsZSA6IGJvb2w7CiBlbnVtIGNsYXNzIEluY2x1ZGVIdHRwT25seUNvb2tpZXMgOiBi
b29sOworZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gOiBib29sOworZW51
bSBjbGFzcyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA6IGJvb2w7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtODMsNiArODUsOCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgT3BlbmVyUGFnZUlE
ID0gdWludDY0X3Q7CiAgICAgdXNpbmcgUGFnZUlEID0gdWludDY0X3Q7CiAgICAgdXNpbmcgRnJh
bWVJRCA9IHVpbnQ2NF90OworICAgIHVzaW5nIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkID0gV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ7CisgICAgdXNpbmcgU3RvcmFnZUFjY2Vzc1By
b21wdFdhc1Nob3duID0gV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOwogCiAg
ICAgc3RhdGljIFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IGNyZWF0ZShOZXR3
b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRlTG9j
YWxob3N0KQogICAgIHsKQEAgLTEwMCw3ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRT
aG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChib29sLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0U2hvdWxkU3VibWl0VGVsZW1l
dHJ5KGJvb2wpOwogCi0gICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVE
b21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIEZyYW1lSUQsIFBhZ2VJRCwgYm9vbCB1c2Vy
V2FzUHJvbXB0ZWROb3csIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZv
aWQgZ3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJh
bWVEb21haW4mLCBGcmFtZUlELCBQYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFj
Y2Vzc1Byb21wdFdhc1Nob3duKT4mJik7CiAKICAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbFRlcm1p
bmF0ZSgpOwogCkBAIC0xMTQsMTIgKzExOCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhclVz
ZXJJbnRlcmFjdGlvbihjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlu
cyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwg
V2Vic2l0ZURhdGFUb1JlbW92ZT4mJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYpOwogICAg
IHZvaWQgcmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKE9wdGlvblNldDxXZWJzaXRl
RGF0YVR5cGU+LCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYpOwotICAgIGJvb2wgZ3JhbnRTdG9yYWdl
QWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRp
b25hbDxGcmFtZUlEPiwgUGFnZUlEKTsKKyAgICBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBncmFu
dFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFp
biYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQpOwogICAgIHZvaWQgaGFzSGFkVXNlckludGVy
YWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7Ci0gICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWlu
JiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKTsKKyAgICB2b2lkIGhhc1N0b3Jh
Z2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9w
dGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OwogICAgIGJvb2wgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKGNvbnN0IFN1YkZyYW1lRG9tYWlu
JiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBQYWdlSUQpOwotICAgIHZvaWQgcmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURv
bWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NH
cmFudGVkKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBGcmFt
ZUlELCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQg
cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFt
ZURvbWFpbiYsIEZyYW1lSUQsIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJik7CiAgICAg
dm9pZCBzZXRMYXN0U2Vlbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFNlY29uZHMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4m
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMTYyLDcgKzE2NSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQg
bG9nVGVzdGluZ0V2ZW50KGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgY2FsbEdyYW50U3RvcmFn
ZUFjY2Vzc0hhbmRsZXIoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFp
biYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOworICAgIHZvaWQgY2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoY29uc3QgU3Vi
RnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQ
YWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYm
KTsKICAgICB2b2lkIHJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIGNhbGxVcGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tp
ZXNGb3JIYW5kbGVyKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2FsbFJlbW92ZURvbWFpbnNIYW5kbGVyKGNv
bnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKaW5kZXggZGM3NGE2MTNiOWQ5YzRjNDg5ZDY3MWUzMGFhOGE2NzM0NjA0NTVmYi4uZTljOThm
MmUyMjI3ZmUxYzUyNTE3NzBkMDYwZDJlZDJlM2NjZGU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAKQEAgLTU3LDYgKzU3LDcgQEAKICNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25N
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CkBAIC02
ODAsMTIgKzY4MSwxOCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZQogCiB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKLSAgICBuZXR3b3JrUHJvY2VzcygpLmhhc1N0b3JhZ2VBY2Nlc3Moc2Vzc2lvbklE
LCBzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmIChhdXRvIG5ldHdvcmtTZXNzaW9uID0gbmV0
d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChh
dXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoKSkKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmhhc1N0
b3JhZ2VBY2Nlc3Moc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELCBwYWdl
SUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9CiB9CiAKLXZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RT
dG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVE
b21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBXZWJD
b3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIG5ldHdvcmtQcm9jZXNzKCkucmVxdWVzdFN0b3JhZ2VBY2Nl
c3NHcmFudGVkKHNlc3Npb25JRCwgc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFt
ZUlELCBwYWdlSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBpZiAoYXV0byBu
ZXR3b3JrU2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtT
ZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgICAgICAgICByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLT5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhzdWJGcmFtZURvbWFpbiwgdG9wRnJh
bWVEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
ICAgIH0KIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0
b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRf
dCBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWlu
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGM2OWUzMjVlNjE4ZTljZTg2YmE4YWYyYzMx
MDM2ZWFlYWVjMTJhMGYuLjA5MDNhMTY0NTg5ZGExOTU0Y2U2M2ZjMzFiZWQyMGJlYjIxYWVkODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTQ4LDYgKzQ4LDggQEAgY2xhc3MgQmxvYkRh
dGFGaWxlUmVmZXJlbmNlOwogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKIGNsYXNzIFJlc291cmNl
RXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NQ
cm9tcHRXYXNTaG93biA6IGJvb2w7CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
IDogYm9vbDsKIHN0cnVjdCBTYW1lU2l0ZUluZm87CiAKIGVudW0gY2xhc3MgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgOiBib29sOwpAQCAtMjIxLDcgKzIyMyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBs
b2dTdWJyZXNvdXJjZVJlZGlyZWN0KFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdGFyZ2V0RG9tYWlu
KTsKICAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKTsKICAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3Mo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAg
IHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZy
YW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFj
Y2Vzc1dhc0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYp
OwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25J
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nl
c3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBv
cGVuZXJEb21haW4pOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCmluZGV4IDE2ZWQzNGFkOTg3ODkwNDE4MzcxYTM5Y2FkZTY0ODZmMzcxZDZjZTMu
LmZkODQ4ZTNhZDA0NmM4MGMzYWUzZjQ2ZDM5MDE1YTAyZjAwM2M5NTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNjQsNyArNjQsNyBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAg
TG9nU3VicmVzb3VyY2VSZWRpcmVjdChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIHNvdXJjZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gdGFyZ2V0RG9tYWluKQogICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3Rv
cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBzdGF0aXN0aWNzKQogICAgIEhhc1N0
b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJh
bWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkgLT4gKGJvb2wgaGFz
U3RvcmFnZUFjY2VzcykgQXN5bmMKLSAgICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWlu
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgcGFnZUlEKSAtPiAoYm9vbCBhY2Nlc3NHcmFudGVkKSBBc3luYworICAg
IFJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIC0+
IChlbnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRlZCwg
ZW51bTpib29sIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNT
aG93bikgQXN5bmMKICAgICBSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluSW5OZWVk
T2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIG9wZW5lckRvbWFpbikKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGE2MGIyYzU1YmYxZTM0ODNiOWQz
M2E1MzJmODgxYzYzYTgzZWFiYWYuLjBlNzE4MGRiMmJjZjQxMDkwMmQ0NDljN2MyNjM4OGFkNWY0
NmU4NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCkBAIC05NTAsMTcgKzk1MCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldExhc3RT
ZWVuKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21hCiAgICAg
fQogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVE
b21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGJvb2wgaGFzU3RvcmFnZUFjY2VzcyA9IGZhbHNl
OwotICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihz
ZXNzaW9uSUQpKQotICAgICAgICBoYXNTdG9yYWdlQWNjZXNzID0gbmV0d29ya1N0b3JhZ2VTZXNz
aW9uLT5oYXNTdG9yYWdlQWNjZXNzKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJh
bWVJRCwgcGFnZUlEKTsKLSAgICBlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoaGFzU3RvcmFnZUFjY2Vzcyk7Ci19Ci0KIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiBkb21haW5zKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNz
aW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKQEAgLTk3MSw2NCArOTYwLDYgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBDb21wbGUKICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6Omhh
c1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFt
ZURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBp
ZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
KSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nl
c3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgICAgIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3MtPmhhc1N0b3JhZ2VBY2Nlc3Moc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9t
YWluLCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7Ci0gICAgfQotfQotCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXF1ZXN0U3Rv
cmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9t
YWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQotewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICAgICAg
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cmVxdWVzdFN0b3JhZ2VBY2Nlc3Moc3ViRnJhbWVEb21h
aW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELnZhbHVlKCksIHBhZ2VJRCwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5ub3RSZXF1ZXN0QWNjZXNzKTsKLSAgICB9IGVs
c2UgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoU3RvcmFnZUFjY2Vzc1N0YXR1czo6Q2Fubm90UmVxdWVzdEFjY2Vzcyk7Ci0gICAgfQot
fQotCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc0dyYW50ZWQoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVE
b21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRo
aXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGlj
cygpKQotICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NHcmFudGVkKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRCwgcGFn
ZUlELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAgICB9IGVsc2UgewotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAg
IH0KLX0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z3JhbnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWlu
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgbm90IGFjY2VwdCBhbiBvcHRpb25hbCBmcmFtZSBJRCBzaW5jZSB3
ZSBjYWxsIGZyYW1lSUQudmFsdWUoKSB1bmNvbmRpdGlvbmFsbHkuCi0gICAgaWYgKCFmcmFtZUlE
KSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICAg
ICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+Z3JhbnRTdG9yYWdlQWNjZXNzKHN1YkZyYW1lRG9t
YWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRC52YWx1ZSgpLCBwYWdlSUQsIHVzZXJXYXNQcm9t
cHRlZCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAg
ICB9Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0ZyYW1lTmF2aWdhdGlvbihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0YXJnZXREb21haW4s
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHNvdXJjZURvbWFpbiwgYm9vbCBpc1JlZGlyZWN0LCBib29sIGlzTWFpbkZyYW1l
KQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCkpIHsKQEAgLTEwNzcsMTUgKzEwMDgsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpjbGVhclVzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdAogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlQWxsU3RvcmFnZUFj
Y2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNz
aW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLT5yZW1vdmVBbGxTdG9yYWdlQWNjZXNzKCk7Ci0gICAgZWxzZQotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotfQotCiB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpyZW1vdmVQcmV2YWxlbnREb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucykKIHsKICAgICBp
ZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklE
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRl
eCBkMDFiYzc3NTFiYzhhYWU2MzAzMDIyM2E0YjQ3ZWE4OTA4OWQ5OGRmLi4yZDZlZmZjZjc1MDRk
ZTJhYWZiZDk2N2U5N2JkMTg3MGMzYmNmNGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC03OSw2ICs3OSw4IEBAIGNsYXNzIFJlc291cmNl
RXJyb3I7CiBjbGFzcyBTV1NlcnZlcjsKIGVudW0gY2xhc3MgSW5jbHVkZUh0dHBPbmx5Q29va2ll
cyA6IGJvb2w7CiBlbnVtIGNsYXNzIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IDogdWludDhfdDsK
K2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIDogYm9vbDsKK2VudW0gY2xh
c3MgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgOiBib29sOwogc3RydWN0IENsaWVudE9yaWdpbjsK
IHN0cnVjdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0czsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRh
dGE7CkBAIC0yMjUsMTYgKzIyNywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRWZXJ5UHJldmFs
ZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFBydW5lRW50cmllc0Rvd25U
byhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcHJ1bmVUYXJnZXRDb3VudCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGhhZFVzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25J
RCwgY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIEZyYW1lSUQs
IFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBnZXRB
bGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8U3RyaW5nPiBkb21haW5zKT4mJik7Ci0gICAgdm9pZCBncmFudFN0b3JhZ2VB
Y2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJh
bWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBib29sIHVzZXJXYXNQcm9tcHRl
ZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBoYXNTdG9yYWdl
QWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZy
YW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBsb2dGcmFtZU5hdmlnYXRpb24oUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25z
dCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiwgYm9vbCBpc1JlZGlyZWN0LCBib29sIGlzTWFpbkZyYW1l
KTsKICAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgVG9w
RnJhbWVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgcmVt
b3ZlQWxsU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIHJlbW92ZVByZXZhbGVudERvbWFpbnMoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9y
YWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRv
cEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJik7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFn
ZUFjY2Vzc0dyYW50ZWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29u
c3QgVG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOwogICAgIHZvaWQgcmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJl
c291cmNlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIHJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6OlNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmll
ZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA2Zjc2Mzc5YTc3ZTkxM2Y1ZTU4YjY2ZGFkYWZl
YTgwMmJmOWRkMzAwLi43M2ZkYjMzNWE0NmFiNjRkMmY2OTUzMjM4OWEzMDdmMWE0NWU4YjhhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW4KQEAgLTk4LDE4ICs5OCwxMyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJv
Y2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZURvbWFp
bikgLT4gKCkgQXN5bmMKICAgICBTZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNl
RG9tYWluKSAtPiAoKSBBc3luYwogICAgIEhhZFVzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlRG9tYWluKSAt
PiAoYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24pIEFzeW5jCi0gICAgSGFzU3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9t
YWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIC0+IChib29sIGhhc1N0b3Jh
Z2VBY2Nlc3MpIEFzeW5jCi0gICAgSGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlRG9tYWluLCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkgLT4gKGJvb2wgaGFzU3RvcmFnZUFjY2VzcykgQXN5bmMK
ICAgICBHZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
IC0+IChWZWN0b3I8U3RyaW5nPiBkb21haW5zKSBBc3luYwotICAgIEdyYW50U3RvcmFnZUFjY2Vz
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1
YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwg
T3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCB1c2VyV2Fz
UHJvbXB0ZWQpIC0+IChib29sIGFjY2Vzc0dyYW50ZWQpIEFzeW5jCiAgICAgSXNSZWdpc3RlcmVk
QXNSZWRpcmVjdGluZ1RvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gcmVkaXJlY3RlZEZyb21Eb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHJlZGlyZWN0ZWRUb0RvbWFpbikgLT4gKGJvb2wgaXNSZWRpcmVjdGluZ1RvKSBBc3luYwog
ICAgIElzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbikgLT4gKGJvb2wgaXNTdWJmcmFtZVVuZGVyKSBB
c3luYwogICAgIElzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YnJlc291cmNlRG9tYWluLCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbikgLT4gKGJvb2wgaXNTdWJy
ZXNvdXJjZVVuZGVyKSBBc3luYwogICAgIExvZ0ZyYW1lTmF2aWdhdGlvbihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRhcmdldERvbWFpbiwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHNvdXJjZURvbWFpbiwgYm9vbCBpc1JlZGlyZWN0LCBib29sIGlzTWFpbkZyYW1l
KQogICAgIExvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluKSAtPiAoKSBBc3luYwotICAgIFJl
bW92ZUFsbFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3lu
YwogICAgIFJlbW92ZVByZXZhbGVudERvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBW
ZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNXaXRoSW50ZXJhY3Rpb24p
Ci0gICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQpIC0+IChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTdG9yYWdlQWNjZXNzU3RhdHVz
IHN0b3JhZ2VBY2Nlc3NTdGF0dXMpIEFzeW5jCiAgICAgUmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0
VmFsdWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICAgICBTY2hlZHVs
ZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0
aW9uYWw8V2FsbFRpbWU+IG1vZGlmaWVkU2luY2UsIGVudW06Ym9vbCBXZWJLaXQ6OlNob3VsZEdy
YW5kZmF0aGVyU3RhdGlzdGljcyBzaG91bGRHcmFuZGZhdGhlcikgLT4gKCkgQXN5bmMKICAgICBT
Y2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4g
KCkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDhl
NTJhYzAzYzI4MDUyMThiOWFhY2FlYzhiMzY2MDkzNzllMTY1ZGYuLmEzNzczYjE0MTJmZTM2NWE0
YTEyN2U4NmFjYTljYTY2Y2U2ZjIwN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQpAQCAtNDU2LDYgKzQ1Niw4IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUp
OgogICAgICAgICAnV2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRhdGUnOiBbJzxXZWJDb3JlL0Fw
cGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpTaG91
bGROb3RpZnlXaGVuUmVzb2x2ZWQnOiBbJzxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPidd
LAogICAgICAgICAnV2ViQ29yZTo6U2hvdWxkU2FtcGxlJzogWyc8V2ViQ29yZS9EaWFnbm9zdGlj
TG9nZ2luZ0NsaWVudC5oPiddLAorICAgICAgICAnV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duJzogWyc8V2ViQ29yZS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaD4nXSwKKyAgICAg
ICAgJ1dlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkJzogWyc8V2ViQ29yZS9Eb2N1bWVu
dFN0b3JhZ2VBY2Nlc3MuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklk
ZW50aWZpZXInOiBbJzxXZWJDb3JlL1BsdWdpbkRhdGEuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6
OlRleHRDaGVja2luZ1JlcXVlc3REYXRhJzogWyc8V2ViQ29yZS9UZXh0Q2hlY2tpbmcuaD4nXSwK
ICAgICAgICAgJ1dlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdCc6IFsnPFdlYkNvcmUvVGV4dENo
ZWNrZXJDbGllbnQuaD4nXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGMzNDRkMTYzODI3MzViMGI2ODNj
Njk2ZjliNjYyNjcxMDcxZDg0NjQuLmFmODU5YWVjMDM2MmU5MWY5MzBiMjg2YjhmNDJmYzIwZmE4
ODMwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtNzI2LDM2ICs3MjYsNiBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OnNldEdyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBSZWdpcwogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3M6OlNldEdyYW5kZmF0aGVyZWQoc2Vzc2lvbklELCByZXNvdXJjZURvbWFpbiwgaXNHcmFuZGZh
dGhlcmVkKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCi17Ci0gICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFt
ZShzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRCwgcGFn
ZUlEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotfQotCi12b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6Omhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90
IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKLXsKLSAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKLSAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okhhc1N0b3JhZ2VBY2Nlc3Moc2Vz
c2lvbklELCByZXNvdXJjZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLX0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3Qg
cGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgewotICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5ub3RSZXF1ZXN0QWNj
ZXNzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlcXVlc3RTdG9yYWdlQWNjZXNzKHNlc3Npb25JRCwg
cmVzb3VyY2VEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELCBwYWdlSUQpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVx
dWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJv
Y2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CkBAIC03NjcsMzIgKzczNyw2IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKHVpbnQ2NF90IHBh
Z2VJRCwgdWludDY0X3QKICAgICBwYWdlLT5yZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm0oc3Vi
RnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z3JhbnRTdG9yYWdlQWNj
ZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJl
c291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNlcldhc1By
b21wdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQotewotICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgewotICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIG5vdCBhY2NlcHQgYW4gb3B0aW9uYWwgZnJhbWUgSUQgc2luY2Ugd2UgY2FsbCBmcmFt
ZUlELnZhbHVlKCkgdW5jb25kaXRpb25hbGx5LgotICAgIGlmICghZnJhbWVJRCkgewotICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpHcmFudFN0b3Jh
Z2VBY2Nlc3Moc2Vzc2lvbklELCByZXNvdXJjZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIGZyYW1l
SUQudmFsdWUoKSwgcGFnZUlELCB1c2VyV2FzUHJvbXB0ZWQpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVtb3ZlQWxsU3RvcmFn
ZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsK
LSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlbW92ZUFs
bFN0b3JhZ2VBY2Nlc3Moc2Vzc2lvbklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwot
fQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
U3RyaW5nPiBkb21haW5zKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhblNl
bmRNZXNzYWdlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggZmNiMmI3OGI0NWRjNTcyYzM3ODgzZThlNmE4
MGZiYmY4ZGIxYTZjMy4uYWMzZGQ4MzI1OTU1YThiNmZhMTQ4MDgwOGIzMGZlM2JmYzYxM2NkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgKQEAgLTQ5LDYgKzQ5LDggQEAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBlbnVt
IGNsYXNzIFNob3VsZFNhbXBsZSA6IGJvb2w7CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93biA6IGJvb2w7CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIDog
Ym9vbDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsK
IH0KQEAgLTEyNSwxNCArMTI3LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJldmFsZW50UmVz
b3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlRm9yRGVi
dWdNb2RlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2Uo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYs
IEZyYW1lSUQsIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAg
dm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiBkb21haW5zKT4mJik7Ci0gICAgdm9pZCBncmFu
dFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
Y29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBib29sIHVz
ZXJXYXNQcm9tcHRlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9p
ZCBoYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFj
Y2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFt
ZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nl
c3NDb25maXJtKFBhZ2VJRCwgRnJhbWVJRCwgY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBU
b3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZv
aWQgcmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhQ
QUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNj
aGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQsIFNob3VsZEdy
YW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQsIE9w
dGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3Rp
Y3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNvb2tp
ZUJsb2NraW5nVXBkYXRlKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCAwMDY0MWExMzlmNTNiYjQ2MjQ5Mzk2ODQzNTY4ZDA0
YTMzYzIxNjlhLi41NmUxOGFhYTQ1YWJhYzdjNDkwM2I2Yzg5NDdjN2U4ZjA3ZTliYjJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcApAQCAtMTY4Myw1NiArMTY4Myw2IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9y
ZTo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXModWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9u
SGFuCiAgICAgbmV0d29ya1Byb2Nlc3MuZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMobV9zZXNz
aW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN0cmluZyYgc3ViRnJhbWVIb3N0LCBjb25z
dCBTdHJpbmcmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewot
ICAgIGlmICghcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSkgewotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRv
KiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7Ci0gICAgaWYgKCF3
ZWJQYWdlKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChhdXRvIG5ldHdvcmtQcm9jZXNzID0gd2ViUGFnZS0+cHJv
Y2VzcygpLnByb2Nlc3NQb29sKCkubmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgbmV0d29ya1By
b2Nlc3MtPmhhc1N0b3JhZ2VBY2Nlc3MobV9zZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChzdWJGcmFtZUhvc3QpLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QodG9wRnJhbWVIb3N0KSwg
ZnJhbWVJRCwgcGFnZUlELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19Ci0KLXZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3RyaW5nJiBzdWJG
cmFtZUhvc3QsIGNvbnN0IFN0cmluZyYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1
cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKCFyZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZCgpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NT
dGF0dXM6OkNhbm5vdFJlcXVlc3RBY2Nlc3MpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IAotICAgIGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKTsK
LSAgICBpZiAoIXdlYlBhZ2UpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3RvcmFnZUFj
Y2Vzc1N0YXR1czo6Q2Fubm90UmVxdWVzdEFjY2Vzcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoYXV0byBuZXR3b3JrUHJvY2VzcyA9IHdlYlBhZ2UtPnByb2Nlc3MoKS5wcm9j
ZXNzUG9vbCgpLm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgIG5ldHdvcmtQcm9jZXNzLT5yZXF1
ZXN0U3RvcmFnZUFjY2VzcyhtX3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46
OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHN1YkZyYW1lSG9zdCksIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdCh0b3BGcmFtZUhvc3QpLCBmcmFtZUlE
LCBwYWdlSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLX0KLQotdm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJp
bmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9v
bCB1c2VyV2FzUHJvbXB0ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKCFyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgp
KSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICAKLSAgICBhdXRvKiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdl
KHBhZ2VJRCk7Ci0gICAgaWYgKCF3ZWJQYWdlKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdXRvIG5ldHdvcmtQ
cm9jZXNzID0gd2ViUGFnZS0+cHJvY2VzcygpLnByb2Nlc3NQb29sKCkubmV0d29ya1Byb2Nlc3Mo
KSkKLSAgICAgICAgbmV0d29ya1Byb2Nlc3MtPmdyYW50U3RvcmFnZUFjY2VzcyhtX3Nlc3Npb25J
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHN1
YkZyYW1lSG9zdCksIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVG
cm9tSG9zdCh0b3BGcmFtZUhvc3QpLCBmcmFtZUlELCBwYWdlSUQsIHVzZXJXYXNQcm9tcHRlZCwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotfQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXgg
YzI4YjczMWI1ODUzYWU3MGQ0NTJlMDM2NTUwYWM2NWMyOTMwNDU2Yi4uNzdmMDQ4YTQ1NGYzNGU1
ZTA5MTZmYTE5MGFkMTEyOTMwNjlhZmM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMTY5LDkgKzE2OSw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0
YVJlY29yZHNSZW1vdmFsKGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCBzZXRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZChjb25z
dCBTdHJpbmcmKT4mJiBjYWxsYmFjaykgeyBtX3N0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKTsgfQogICAgIHZvaWQgc2V0VmVyeVByZXZhbGVudFJlc291cmNlKGNv
bnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBoYXNTdG9y
YWdlQWNjZXNzKGNvbnN0IFN0cmluZyYgc3ViRnJhbWVIb3N0LCBjb25zdCBTdHJpbmcmIHRvcEZy
YW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0
IFN0cmluZyYgc3ViRnJhbWVIb3N0LCBjb25zdCBTdHJpbmcmIHRvcEZyYW1lSG9zdCwgdWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3Jh
Z2VBY2Nlc3NTdGF0dXMpPiYmKTsKLSAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdHJpbmcm
JiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlELCBib29sIHVzZXJXYXNQcm9tcHRlZCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW4o
Y29uc3QgVVJMJiBzdWJmcmFtZSwgY29uc3QgVVJMJiB0b3BGcmFtZSk7CiAgICAgdm9pZCBzZXRD
cm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhjb25zdCBVUkwmIGZyb21V
UkwsIGNvbnN0IFVSTCYgdG9VUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCByZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCA5YmFh
ODRkMzhhZTA4MDExMThhMTJiODFlMjA0ZWEyZThmMGU5ZWY0Li42YmNhMjc1MzVmNDM2OGI4ZWQ4
YjBlODM1YTk3ZmJmMWZlYjM4ZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNjIsNiAr
NjIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rv
Y3VtZW50TG9hZGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3Mu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVDaG9vc2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9G
aWxlSWNvbkxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KQEAgLTc2LDYgKzc3
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ljb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdElt
cGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgpAQCAtMTMxMSwxNCArMTMxMywxNCBAQCB2b2lkIFdl
YkNocm9tZUNsaWVudDo6ZGlkSW52YWxpZGF0ZURvY3VtZW50TWFya2VyUmVjdHMoKQogfQogCiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLXZvaWQgV2ViQ2hyb21lQ2xpZW50
OjpoYXNTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJh
bWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpoYXNTdG9yYWdlQWNj
ZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWlu
JiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG1fcGFnZS5o
YXNTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVIb3N0KSwgV1RGTW92ZSh0b3BGcmFtZUhv
c3QpLCBmcmFtZUlELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgbV9wYWdlLmhhc1N0b3JhZ2VB
Y2Nlc3MoV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBm
cmFtZUlELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViQ2hyb21l
Q2xpZW50OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmlu
ZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVn
aXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9w
YWdlLnJlcXVlc3RTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVIb3N0KSwgV1RGTW92ZSh0
b3BGcmFtZUhvc3QpLCBmcmFtZUlELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgbV9wYWdlLnJl
cXVlc3RTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZy
YW1lRG9tYWluKSwgZnJhbWVJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA3MDViMjVlOWZjOTEyYTYzYjViNDU3N2VmMmI4
ZDVlMDcxN2EzNTQwLi43OTI1MzMxZWM4ZTY3MGUxMDVmZjRkMmU2ZTQ3ODkwYmU5NzFkNmZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yOCw2ICsyOCwxMiBAQAogCiAjaW5jbHVkZSA8V2ViQ29y
ZS9DaHJvbWVDbGllbnQuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVnaXN0cmFi
bGVEb21haW47CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biA6IGJvb2w7
CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIDogYm9vbDsKK30KKwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkZyYW1lOwpAQCAtMzYzLDggKzM2OSw4IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRJbnZhbGlkYXRlRG9jdW1lbnRNYXJrZXJSZWN0cygpIGZpbmFsOwog
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICB2b2lkIGhhc1N0b3Jh
Z2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkIChib29sKT4mJikgZmluYWw7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJp
bmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wpPiYm
KSBmaW5hbDsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiB0b3BG
cmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNT
aG93bik+JiYpIGZpbmFsOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9O
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA0
MzcwMjIyYWU4ZDM4Nzc2Nzk5MzA3Zjg5MDM5MTY3MzVjZjgwYTgwLi41OGFjMzhiZDkzN2I2Mjcz
Y2YzMWU4ZTNjY2Y5YTI1NWIwODU4N2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTQ3LDYgKzE0Nyw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9Eb2N1bWVudEZyYWdtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudExvYWRlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Ry
YWdDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRWRpdGluZy5oPgpAQCAtNjQ0MCwxNCArNjQ0MSwxNCBAQCB2b2lkIFdlYlBhZ2U6
OmZyYW1lQmVjYW1lUmVtb3RlKHVpbnQ2NF90IGZyYW1lSUQsIEdsb2JhbEZyYW1lSWRlbnRpZmll
ciYmIHJlbW90ZQogfQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLXZv
aWQgV2ViUGFnZTo6aGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmlu
ZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZTo6aGFzU3RvcmFnZUFj
Y2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBSZWdpc3RyYWJsZURvbWFp
biYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpI
YXNTdG9yYWdlQWNjZXNzKHNlc3Npb25JRCgpLCBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2Vk
Q3JlYXRlRnJvbUhvc3Qoc3ViRnJhbWVIb3N0KSwgUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tl
ZENyZWF0ZUZyb21Ib3N0KHRvcEZyYW1lSG9zdCksIGZyYW1lSUQsIG1fcGFnZUlEKSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpIYXNTdG9yYWdlQWNj
ZXNzKHNlc3Npb25JRCgpLCBXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFt
ZURvbWFpbiksIGZyYW1lSUQsIG1fcGFnZUlEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQotICAgIAotdm9pZCBXZWJQYWdlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBz
dWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKwordm9pZCBX
ZWJQYWdlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1l
RG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFt
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFu
dGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZXF1ZXN0U3RvcmFnZUFjY2VzcyhzZXNz
aW9uSUQoKSwgUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHN1YkZy
YW1lSG9zdCksIFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdCh0b3BG
cmFtZUhvc3QpLCBmcmFtZUlELCBtX3BhZ2VJRCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3Moc2Vzc2lvbklEKCks
IFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJ
RCwgbV9wYWdlSUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGQ5ZDgwNGNi
ZDYzNzk5MTA1MmM4YzZkMmMxY2UyMjllNjdkMzZhOTguLmM5MzkwM2Y3YmIzMWY0YzkzOTA0NDVj
ODY4MDZlZWQ5Y2ViOTNjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKQEAgLTE3Nyw2ICsxNzcsOCBAQCBlbnVtIFN5bnRoZXRpY0NsaWNrVHlwZSA6IGlu
dDhfdDsKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiBlbnVt
IGNsYXNzIERyYWdIYW5kbGluZ01ldGhvZCA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZCA6IGJvb2w7CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93biA6IGJvb2w7CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIDog
Ym9vbDsKIGVudW0gY2xhc3MgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb24gOiB1
aW50OF90OwogZW51bSBjbGFzcyBXcml0aW5nRGlyZWN0aW9uIDogdWludDhfdDsKIApAQCAtMTEx
OCw4ICsxMTIwLDggQEAgcHVibGljOgogICAgIHZvaWQgZmx1c2hQZW5kaW5nRWRpdG9yU3RhdGVV
cGRhdGUoKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgdm9p
ZCBoYXNTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJh
bWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNhbGxiYWNrKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZy
YW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VB
Y2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFn
ZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
LCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxNjQ4YzZiMDI1OWFmN2M0ZDJh
MWI3NmNmNzUwOGRhODA0NDc4MTM3Li5hMGMwZDkxM2M0MjcxNTUyZGExOGMyYzhlZmU3NmE5YTYz
YzViM2Q3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTktMDUtMDcgIEpvaG4gV2lsYW5kZXIg
IDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcmFnZSBBY2Nlc3MgQVBJOiBNYWtl
IHR3byBjaGFuZ2VzIHJlcXVlc3RlZCBieSBkZXZlbG9wZXJzIGFuZCBjb21wbGV0ZSByZWZhY3Rv
cmluZyBhbmQgY2xlYW51cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk3NjQ4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MDUyNzQ5Mz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgY2hhbmdlZCB0
ZXN0IGNhc2VzIGhhdmUgaGFkIGNhbGxzIHRvIFdlYkNvcmU6OkludGVybmFsczo6c2V0VXNlckdy
YW50c1N0b3JhZ2VBY2Nlc3MoKSByZW1vdmVkCisgICAgICAgIHNpbmNlIGl0IHdhcyBkZWFkIGNv
ZGUuCisKKyAgICAgICAgT25lIG9mIHRoZSBuZXcgdGVzdHMsIGRlbnktd2l0aC1wcm9tcHQtZG9l
cy1ub3QtcHJlc2VydmUtZ2VzdHVyZS5odG1sLCBpcyBtYXJrZWQgWyBTa2lwIF0gZm9yIG5vdyBz
aW5jZQorICAgICAgICB3ZSBsYWNrIHRoZSBhYmlsaXR5IHRvIGNsaWNrICJEb24ndCBhbGxvdyIg
aW4gdGhlIHByb21wdC4gSSB3YW50ZWQgdG8gaW5jbHVkZSB0aGUgdGVzdCBhbnl3YXkgc28gdGhh
dAorICAgICAgICB3ZSBoYXZlIGl0LiBJIGhhdmUgZG9uZSBhIG1hbnVhbCB0ZXN0IHRvIG1ha2Ug
c3VyZSB0aGUgY29kZSBkb2VzIHRoZSByaWdodCB0aGluZyBmb3IgdGhpcyBjYXNlLgorCisgICAg
ICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnktd2l0aC1wcm9tcHQtZG9lcy1ub3Qt
cHJlc2VydmUtZ2VzdHVyZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvc3RvcmFnZUFjY2Vzcy9kZW55LXdpdGgtcHJvbXB0LWRvZXMtbm90LXByZXNlcnZlLWdlc3R1
cmUuaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNz
L3JlcXVlc3QtYW5kLWdyYW50LWFjY2Vzcy1jcm9zcy1vcmlnaW4tbm9uLXNhbmRib3hlZC1pZnJh
bWUtcG9wLXdpbmRvdy5odG1sLgorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9k
ZW55LXdpdGhvdXQtcHJvbXB0LXByZXNlcnZlcy1nZXN0dXJlLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnktd2l0aG91dC1wcm9tcHQt
cHJlc2VydmVzLWdlc3R1cmUuaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LWFjY2Vzcy1jcm9zcy1vcmlnaW4tbm9u
LXNhbmRib3hlZC1pZnJhbWUtcG9wLXdpbmRvdy5odG1sLgorICAgICAgICAqIGh0dHAvdGVzdHMv
c3RvcmFnZUFjY2Vzcy9ncmFudC13aXRoLXByb21wdC1wcmVzZXJ2ZXMtZ2VzdHVyZS1leHBlY3Rl
ZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3Mv
cmVxdWVzdC1hbmQtZ3JhbnQtYWNjZXNzLWNyb3NzLW9yaWdpbi1ub24tc2FuZGJveGVkLWlmcmFt
ZS1wb3Atd2luZG93LWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VB
Y2Nlc3MvZ3JhbnQtd2l0aC1wcm9tcHQtcHJlc2VydmVzLWdlc3R1cmUuaHRtbDogUmVuYW1lZCBm
cm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFu
dC1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLW5vbi1zYW5kYm94ZWQtaWZyYW1lLXBvcC13aW5kb3cuaHRt
bC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvaGFzLXN0b3JhZ2UtYWNjZXNz
LXRydWUtaWYtZmVhdHVyZS1vZmYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvaGFzLXN0b3JhZ2UtYWNjZXNzLXRydWUtaWYtZmVhdHVyZS1v
ZmYuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jlc291
cmNlcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLWFuZC1pbW1lZGlhdGVseS1wb3N0bWVzc2FnZS1p
ZnJhbWUuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2Vz
L3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtaWZyYW1lLWFuZC1wb3Atd2luZG93Lmh0bWw6CisgICAg
ICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9yZXF1ZXN0LXN0b3JhZ2Ut
YWNjZXNzLWlmcmFtZS5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9y
ZXNvdXJjZXMvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy13aXRob3V0LXVzZXItZ2VzdHVyZS1pZnJh
bWUuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3Nl
bGYtbmF2aWdhdGluZy1mcmFtZS1hZnRlci1ncmFudGVkLWFjY2Vzcy5odG1sOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgICAgIEFkZGVkIGV4
cGVjdGF0aW9ucyBmb3IgdGhlIG5ldyB0ZXN0cy4KKwogMjAxOS0wNS0wNiAgQW5kcmVzIEdvbnph
bGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgSGl0cG9pbnQgZm9yIGxpbmsg
d2hpY2ggc3BhbnMgdHdvIGxpbmVzIGluIHdlYiBjb250ZW50IGlzIGluY29ycmVjdApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnktd2l0aC1wcm9t
cHQtZG9lcy1ub3QtcHJlc2VydmUtZ2VzdHVyZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZGVueS13aXRoLXByb21wdC1kb2VzLW5vdC1wcmVzZXJ2
ZS1nZXN0dXJlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTk3OTc1Njc3OTU5ZTJlMTNlZDc0
NDQ5YzRhYWZmNmYxYjAwMzgyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnktd2l0aC1wcm9tcHQtZG9lcy1ub3QtcHJlc2VydmUtZ2Vz
dHVyZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGVzdHMgdGhhdCBhIGNyb3NzLW9y
aWdpbiBpZnJhbWUgY2FuIG5vdCBvcGVuIGEgd2luZG93IGlmIHN0b3JhZ2UgYWNjZXNzIGlzIGV4
cGxpY2l0bHkgZGVuaWVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBX
aW5kb3cgd2FzIHN1Y2Nlc3NmdWxseSBvcGVuZWQgd2l0aCB1c2VyIGludGVyYWN0aW9uIHNpbmNl
IHRoZSB1c2VyIHdhcyBuZXZlciBjb25zdWx0ZWQvcHJvbXB0ZWQuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCitTb21lIHRlc3RzIGZhaWxlZC4KKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZGVueS13aXRo
LXByb21wdC1kb2VzLW5vdC1wcmVzZXJ2ZS1nZXN0dXJlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZGVueS13aXRoLXByb21wdC1kb2VzLW5vdC1wcmVzZXJ2ZS1n
ZXN0dXJlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTk3YTIwZDlmODI0MWZjODYzNGFiMWY4MGUzYTNiM2Zh
MGEwMTI2YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFn
ZUFjY2Vzcy9kZW55LXdpdGgtcHJvbXB0LWRvZXMtbm90LXByZXNlcnZlLWdlc3R1cmUuaHRtbApA
QCAtMCwwICsxLDc0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNj
cmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy91dGlsLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhh
dCBhIGNyb3NzLW9yaWdpbiBpZnJhbWUgY2FuIG5vdCBvcGVuIGEgd2luZG93IGlmIHN0b3JhZ2Ug
YWNjZXNzIGlzIGV4cGxpY2l0bHkgZGVuaWVkLiIpOworICAgICAgICBqc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKworICAgICAgICBjb25zdCBob3N0VW5kZXJUZXN0ID0gImxvY2FsaG9zdDo4MDAwIjsK
KyAgICAgICAgY29uc3Qgc3RhdGlzdGljc1VybCA9ICJodHRwOi8vIiArIGhvc3RVbmRlclRlc3Qg
KyAiL3RlbXAiOworCisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwg
cmVjZWl2ZU1lc3NhZ2UsIGZhbHNlKTsKKworICAgICAgICBmdW5jdGlvbiByZWNlaXZlTWVzc2Fn
ZShldmVudCkgeworICAgICAgICAgICAgaWYgKGV2ZW50Lm9yaWdpbiA9PT0gImh0dHA6Ly9sb2Nh
bGhvc3Q6ODAwMCIpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5pbmRleE9mKCJQ
QVNTICIpICE9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZChldmVudC5kYXRh
LnJlcGxhY2UoIlBBU1MgIiwgIiIpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJGQUlMICIsICIiKSk7Cisg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJSZWNlaXZlZCBh
IG1lc3NhZ2UgZnJvbSBhbiB1bmV4cGVjdGVkIG9yaWdpbjogIiArIGV2ZW50Lm9yaWdpbik7Cisg
ICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJZCkgeworICAg
ICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQp
OworICAgICAgICAgICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50
Lm9mZnNldFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciBjZW50ZXJZID0gZWxlbWVudC5vZmZz
ZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgICAgICBVSUhlbHBlci5h
Y3RpdmF0ZUF0KGNlbnRlclgsIGNlbnRlclkpLnRoZW4oCisgICAgICAgICAgICAgICAgZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKQorICAg
ICAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiZXNjYXBlIik7CisgICAg
ICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiTm8gZXZlbnRTZW5kZXIuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZXRFbmFibGVG
ZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIlByb21pc2UgcmVqZWN0ZWQuIik7CisgICAgICAgICAgICAg
ICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHJ1
blRlc3QoKSB7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3MoZmFsc2UpOwor
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQodHJ1ZSk7
CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3Vy
Y2Uoc3RhdGlzdGljc1VybCwgdHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNz
VXJsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBn
ZXQgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKyAgICAgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5zZXRTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKHN0YXRpc3RpY3NVcmws
IHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0ZXN0UnVu
bmVyLmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihzdGF0aXN0aWNzVXJsKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IGxv
Z2dlZCBmb3IgdXNlciBpbnRlcmFjdGlvbi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNvb2tpZUJsb2NraW5nKGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1l
RWxlbWVudC5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYWN0aXZhdGVFbGVtZW50KCJUaGVJZnJhbWVUaGF0UmVxdWVzdHNTdG9yYWdlQWNjZXNz
Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZnJhbWVFbGVtZW50LmlkID0gIlRoZUlmcmFtZVRoYXRSZXF1ZXN0c1N0b3JhZ2VB
Y2Nlc3MiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQuc3JjID0g
Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9yZXF1ZXN0LXN0
b3JhZ2UtYWNjZXNzLWlmcmFtZS1hbmQtcG9wLXdpbmRvdy5odG1sI3VzZXJTaG91bGROb3RHcmFu
dEFjY2Vzcyx1c2VyU2hvdWxkQmVDb25zdWx0ZWQscG9saWN5U2hvdWxkTm90R3JhbnRBY2Nlc3Ms
aXNOb3RTYW1lT3JpZ2luSWZyYW1lIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZUVsZW1lbnQpOworICAgICAgICAgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IG9ubG9hZD0icnVuVGVzdCgpIj4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nl
c3MvZGVueS13aXRob3V0LXByb21wdC1wcmVzZXJ2ZXMtZ2VzdHVyZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZGVueS13aXRob3V0LXByb21wdC1w
cmVzZXJ2ZXMtZ2VzdHVyZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDRhZmRlMzRkNzQyNjNj
YzUyZWJmY2Q2NDM3MTE2MTYwMWY2MzIxMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9kZW55LXdpdGhvdXQtcHJvbXB0LXByZXNlcnZlcy1n
ZXN0dXJlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0cyB0aGF0IGEgY3Jvc3Mt
b3JpZ2luIGlmcmFtZSBjYW4gb3BlbiBhIHdpbmRvdyBpZiBzdG9yYWdlIGFjY2VzcyBpcyBkZW5p
ZWQgd2l0aG91dCBwcm9tcHQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IFdpbmRvdyB3YXMgc3VjY2Vzc2Z1bGx5IG9wZW5lZCB3aXRoIHVzZXIgaW50ZXJhY3Rpb24gc2lu
Y2UgdGhlIHVzZXIgd2FzIG5ldmVyIGNvbnN1bHRlZC9wcm9tcHRlZC4KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZGVueS13aXRob3V0LXByb21wdC1wcmVzZXJ2
ZXMtZ2VzdHVyZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rl
bnktd2l0aG91dC1wcm9tcHQtcHJlc2VydmVzLWdlc3R1cmUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMWZj
NGQ4YmRlYjYyNjBhYWU5YWVjMGEyNDZiZWE1ZjIxNmEwMTZjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnktd2l0aG91dC1wcm9tcHQt
cHJlc2VydmVzLWdlc3R1cmUuaHRtbApAQCAtMCwwICsxLDc0IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL3Vp
LWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgICAg
ICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBhIGNyb3NzLW9yaWdpbiBpZnJhbWUgY2FuIG9wZW4g
YSB3aW5kb3cgaWYgc3RvcmFnZSBhY2Nlc3MgaXMgZGVuaWVkIHdpdGhvdXQgcHJvbXB0LiIpOwor
ICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICBjb25zdCBob3N0VW5kZXJU
ZXN0ID0gImxvY2FsaG9zdDo4MDAwIjsKKyAgICAgICAgY29uc3Qgc3RhdGlzdGljc1VybCA9ICJo
dHRwOi8vIiArIGhvc3RVbmRlclRlc3QgKyAiL3RlbXAiOworCisgICAgICAgIHdpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjZWl2ZU1lc3NhZ2UsIGZhbHNlKTsKKworICAgICAg
ICBmdW5jdGlvbiByZWNlaXZlTWVzc2FnZShldmVudCkgeworICAgICAgICAgICAgaWYgKGV2ZW50
Lm9yaWdpbiA9PT0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoZXZlbnQuZGF0YS5pbmRleE9mKCJQQVNTICIpICE9PSAtMSkKKyAgICAgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZChldmVudC5kYXRhLnJlcGxhY2UoIlBBU1MgIiwgIiIpKTsKKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoZXZlbnQuZGF0YS5y
ZXBsYWNlKCJGQUlMICIsICIiKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJSZWNlaXZlZCBhIG1lc3NhZ2UgZnJvbSBhbiB1bmV4cGVjdGVkIG9yaWdp
bjogIiArIGV2ZW50Lm9yaWdpbik7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNl
LCBmaW5pc2hKU1Rlc3QpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gYWN0aXZhdGVF
bGVtZW50KGVsZW1lbnRJZCkgeworICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChlbGVtZW50SWQpOworICAgICAgICAgICAgdmFyIGNlbnRlclggPSBlbGVt
ZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZh
ciBjZW50ZXJZID0gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7
CisgICAgICAgICAgICBVSUhlbHBlci5hY3RpdmF0ZUF0KGNlbnRlclgsIGNlbnRlclkpLnRoZW4o
CisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKQorICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
a2V5RG93bigiZXNjYXBlIik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTm8gZXZlbnRTZW5kZXIuIik7CisgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlByb21pc2UgcmVq
ZWN0ZWQuIik7CisgICAgICAgICAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZp
bmlzaEpTVGVzdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgICAgICBzZXRFbmFibGVG
ZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
Q2FuT3BlbldpbmRvd3MoZmFsc2UpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0UG9w
dXBCbG9ja2luZ0VuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRT
dGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCwgdHJ1ZSwgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2
YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsK
KyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzSGFzSGFkVXNlcklu
dGVyYWN0aW9uKHN0YXRpc3RpY3NVcmwsIGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFj
dGlvbihzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJIb3N0IGRpZCBnZXQgbG9nZ2VkIGZvciB1c2VyIGludGVyYWN0aW9uLiIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tp
bmcoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlmcmFtZUVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmF0ZUVsZW1lbnQoIlRoZUlmcmFtZVRoYXRS
ZXF1ZXN0c1N0b3JhZ2VBY2Nlc3MiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Owor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQuaWQgPSAiVGhlSWZyYW1l
VGhhdFJlcXVlc3RzU3RvcmFnZUFjY2VzcyI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWZyYW1lRWxlbWVudC5zcmMgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3N0b3JhZ2VBY2Nlc3Mv
cmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtaWZyYW1lLWFuZC1wb3Atd2luZG93Lmh0
bWwjdXNlclNob3VsZE5vdEdyYW50QWNjZXNzLHVzZXJTaG91bGROb3RCZUNvbnN1bHRlZCxwb2xp
Y3lTaG91bGROb3RHcmFudEFjY2Vzcyxpc05vdFNhbWVPcmlnaW5JZnJhbWUiOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lRWxlbWVu
dCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIDwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPC9ib2R5PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC13aXRoLXByb21wdC1wcmVzZXJ2ZXMtZ2Vz
dHVyZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3Mv
Z3JhbnQtd2l0aC1wcm9tcHQtcHJlc2VydmVzLWdlc3R1cmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ3ZWM0Y2Y3Zjc4NDFkNTdjNjhkZGI1ZmE2NmNiNTYzNGIzMWRhM2IKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZ3JhbnQtd2l0aC1w
cm9tcHQtcHJlc2VydmVzLWdlc3R1cmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rl
c3RzIHRoYXQgY3Jvc3Mtb3JpZ2luIGlmcmFtZSBjYW4gZGlzcGxheSBhIHdpbmRvdyBpZiBzdG9y
YWdlIGFjY2VzcyBpcyBncmFudGVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBXaW5kb3cgd2FzIHN1Y2Nlc3NmdWxseSBvcGVuZWQgd2l0aCB1c2VyIGludGVyYWN0aW9u
LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC13aXRo
LXByb21wdC1wcmVzZXJ2ZXMtZ2VzdHVyZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
dG9yYWdlQWNjZXNzL2dyYW50LXdpdGgtcHJvbXB0LXByZXNlcnZlcy1nZXN0dXJlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODM0MTI4MzgxNmUwNzlkZDYzYzRjOWI2NjM5NzUyYjZmMmEzYmNjNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC13
aXRoLXByb21wdC1wcmVzZXJ2ZXMtZ2VzdHVyZS5odG1sCkBAIC0wLDAgKzEsNzQgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVz
b3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1y
ZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGNyb3NzLW9yaWdpbiBpZnJhbWUg
Y2FuIGRpc3BsYXkgYSB3aW5kb3cgaWYgc3RvcmFnZSBhY2Nlc3MgaXMgZ3JhbnRlZC4iKTsKKyAg
ICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgY29uc3QgaG9zdFVuZGVyVGVz
dCA9ICJsb2NhbGhvc3Q6ODAwMCI7CisgICAgICAgIGNvbnN0IHN0YXRpc3RpY3NVcmwgPSAiaHR0
cDovLyIgKyBob3N0VW5kZXJUZXN0ICsgIi90ZW1wIjsKKworICAgICAgICB3aW5kb3cuYWRkRXZl
bnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY2VpdmVNZXNzYWdlLCBmYWxzZSk7CisKKyAgICAgICAg
ZnVuY3Rpb24gcmVjZWl2ZU1lc3NhZ2UoZXZlbnQpIHsKKyAgICAgICAgICAgIGlmIChldmVudC5v
cmlnaW4gPT09ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiKSB7CisgICAgICAgICAgICAgICAgaWYg
KGV2ZW50LmRhdGEuaW5kZXhPZigiUEFTUyAiKSAhPT0gLTEpCisgICAgICAgICAgICAgICAgICAg
IHRlc3RQYXNzZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJQQVNTICIsICIiKSk7CisgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKGV2ZW50LmRhdGEucmVw
bGFjZSgiRkFJTCAiLCAiIikpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiUmVjZWl2ZWQgYSBtZXNzYWdlIGZyb20gYW4gdW5leHBlY3RlZCBvcmlnaW46
ICIgKyBldmVudC5vcmlnaW4pOworICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwg
ZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGFjdGl2YXRlRWxl
bWVudChlbGVtZW50SWQpIHsKKyAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKKyAgICAgICAgICAgIHZhciBjZW50ZXJYID0gZWxlbWVu
dC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIg
Y2VudGVyWSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOwor
ICAgICAgICAgICAgVUlIZWxwZXIuYWN0aXZhdGVBdChjZW50ZXJYLCBjZW50ZXJZKS50aGVuKAor
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtl
eURvd24oImVzY2FwZSIpOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk5vIGV2ZW50U2VuZGVyLiIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJQcm9taXNlIHJlamVj
dGVkLiIpOworICAgICAgICAgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5p
c2hKU1Rlc3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICAgICAgc2V0RW5hYmxlRmVh
dHVyZSh0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldENh
bk9wZW5XaW5kb3dzKGZhbHNlKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFBvcHVw
QmxvY2tpbmdFbmFibGVkKHRydWUpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3Rh
dGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwsIHRydWUsIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFs
ZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCkpCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7Cisg
ICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRl
cmFjdGlvbihzdGF0aXN0aWNzVXJsLCB0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rp
b24oc3RhdGlzdGljc1VybCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiSG9zdCBkaWQgbm90IGdldCBsb2dnZWQgZm9yIHVzZXIgaW50ZXJhY3Rpb24uIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NVcGRhdGVDb29raWVCbG9j
a2luZyhmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWZyYW1l
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2YXRlRWxlbWVudCgiVGhlSWZyYW1lVGhh
dFJlcXVlc3RzU3RvcmFnZUFjY2VzcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5pZCA9ICJUaGVJZnJh
bWVUaGF0UmVxdWVzdHNTdG9yYWdlQWNjZXNzIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZnJhbWVFbGVtZW50LnNyYyA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvc3RvcmFnZUFjY2Vz
cy9yZXNvdXJjZXMvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUtYW5kLXBvcC13aW5kb3cu
aHRtbCN1c2VyU2hvdWxkR3JhbnRBY2Nlc3MsdXNlclNob3VsZEJlQ29uc3VsdGVkLHBvbGljeVNo
b3VsZEdyYW50QWNjZXNzLGlzTm90U2FtZU9yaWdpbklmcmFtZSI7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWVFbGVtZW50KTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy10cnVlLWlmLWZlYXR1cmUtb2Zm
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMt
c3RvcmFnZS1hY2Nlc3MtdHJ1ZS1pZi1mZWF0dXJlLW9mZi1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjQ5NjMxYjE0YzhjNjQ0MGEwMzY4MzI1NjI1MDVlMTIwOTg2YzQ4ZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1h
Y2Nlc3MtdHJ1ZS1pZi1mZWF0dXJlLW9mZi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAor
VGVzdHMgdGhhdCBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzKCkgcmV0dXJucyB0cnVlIGZvciBh
IDNyZC1wYXJ0eSBpZnJhbWUgaWYgdGhlcmUgaXMgbm8gd2F5IHRvIHJlcXVlc3QgYWNjZXNzIChm
ZWF0dXJlIG9mZikuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIEhhcyBz
dG9yYWdlIGFjY2Vzcy4gZG9jdW1lbnQuY29va2llID09ICwgY29va2llcyBzZWVuIHNlcnZlci1z
aWRlID09ICJObyBjb29raWVzIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFn
ZUFjY2Vzcy9oYXMtc3RvcmFnZS1hY2Nlc3MtdHJ1ZS1pZi1mZWF0dXJlLW9mZi5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy10cnVl
LWlmLWZlYXR1cmUtb2ZmLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDNmY2I1MmQxMDQ0Yzc5MmYyNzYxNjdk
MDYxN2VmZWJiYTk1YjI4MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1hY2Nlc3MtdHJ1ZS1pZi1mZWF0dXJlLW9mZi5o
dG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAg
ICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL3V0
aWwuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0
cyB0aGF0IGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3MoKSByZXR1cm5zIHRydWUgZm9yIGEgM3Jk
LXBhcnR5IGlmcmFtZSBpZiB0aGVyZSBpcyBubyB3YXkgdG8gcmVxdWVzdCBhY2Nlc3MgKGZlYXR1
cmUgb2ZmKS4iKTsKKyAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWNlaXZlTWVzc2FnZSwgZmFsc2UpOwor
CisgICAgICAgIGZ1bmN0aW9uIHJlY2VpdmVNZXNzYWdlKGV2ZW50KSB7CisgICAgICAgICAgICBp
ZiAoZXZlbnQub3JpZ2luID09PSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIikgeworICAgICAgICAg
ICAgICAgIGlmIChldmVudC5kYXRhLmluZGV4T2YoIlBBU1MiKSAhPT0gLTEpCisgICAgICAgICAg
ICAgICAgICAgIHRlc3RQYXNzZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJQQVNTICIsICIiKSk7Cisg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKGV2ZW50
LmRhdGEucmVwbGFjZSgiRkFJTCAiLCAiIikpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiUmVjZWl2ZWQgYSBtZXNzYWdlIGZyb20gYW4gdW5leHBlY3Rl
ZCBvcmlnaW46ICIgKyBldmVudC5vcmlnaW4pOworICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVy
ZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IGhvc3RV
bmRlclRlc3QgPSAibG9jYWxob3N0OjgwMDAiOworICAgICAgICBjb25zdCBzdGF0aXN0aWNzVXJs
ID0gImh0dHA6Ly8iICsgaG9zdFVuZGVyVGVzdCArICIvdGVtcCI7CisgICAgICAgIGZ1bmN0aW9u
IHJ1blRlc3QoKSB7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICBsZXQgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImlmcmFtZSIpOworICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQuaWQgPSAi
VGhlSWZyYW1lVGhhdFJlcXVlc3RzU3RvcmFnZUFjY2VzcyI7CisgICAgICAgICAgICAgICAgaWZy
YW1lRWxlbWVudC5zcmMgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3N0b3JhZ2VBY2Nlc3MvcmVz
b3VyY2VzL2hhcy1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUuaHRtbCNwb2xpY3lTaG91bGRHcmFudEFj
Y2VzcyI7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWVF
bGVtZW50KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
dG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LWFjY2Vzcy1jcm9zcy1vcmlnaW4tbm9uLXNh
bmRib3hlZC1pZnJhbWUtcG9wLXdpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtYWNjZXNzLWNyb3NzLW9yaWdp
bi1ub24tc2FuZGJveGVkLWlmcmFtZS1wb3Atd2luZG93LWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZDdlYzRjZjdmNzg0MWQ1N2M2OGRkYjVmYTY2Y2I1NjM0YjMx
ZGEzYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtYWNjZXNz
LWNyb3NzLW9yaWdpbi1ub24tc2FuZGJveGVkLWlmcmFtZS1wb3Atd2luZG93LWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLVRlc3RzIHRoYXQgY3Jvc3Mtb3JpZ2lu
IGlmcmFtZSBjYW4gZGlzcGxheSBhIHdpbmRvdyBpZiBzdG9yYWdlIGFjY2VzcyBpcyBncmFudGVk
LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyBXaW5kb3cgd2FzIHN1Y2Nl
c3NmdWxseSBvcGVuZWQgd2l0aCB1c2VyIGludGVyYWN0aW9uLgotUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1hY2Nlc3MtY3Jvc3Mt
b3JpZ2luLW5vbi1zYW5kYm94ZWQtaWZyYW1lLXBvcC13aW5kb3cuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1hY2Nlc3MtY3Jvc3Mt
b3JpZ2luLW5vbi1zYW5kYm94ZWQtaWZyYW1lLXBvcC13aW5kb3cuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMjkxZjlmYmI0MTdhZjc2ZGU2NmI1Zjk0ODcxM2RkMDg2MWM5NmMz
Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtYWNjZXNzLWNy
b3NzLW9yaWdpbi1ub24tc2FuZGJveGVkLWlmcmFtZS1wb3Atd2luZG93Lmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSw3NSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0g
ICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
LSAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3Jp
cHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy91
dGlsLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0PgotICAgICAgICBkZXNjcmlwdGlvbigiVGVz
dHMgdGhhdCBjcm9zcy1vcmlnaW4gaWZyYW1lIGNhbiBkaXNwbGF5IGEgd2luZG93IGlmIHN0b3Jh
Z2UgYWNjZXNzIGlzIGdyYW50ZWQuIik7Ci0gICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwot
Ci0gICAgICAgIGNvbnN0IGhvc3RVbmRlclRlc3QgPSAibG9jYWxob3N0OjgwMDAiOwotICAgICAg
ICBjb25zdCBzdGF0aXN0aWNzVXJsID0gImh0dHA6Ly8iICsgaG9zdFVuZGVyVGVzdCArICIvdGVt
cCI7Ci0KLSAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWNlaXZl
TWVzc2FnZSwgZmFsc2UpOwotCi0gICAgICAgIGZ1bmN0aW9uIHJlY2VpdmVNZXNzYWdlKGV2ZW50
KSB7Ci0gICAgICAgICAgICBpZiAoZXZlbnQub3JpZ2luID09PSAiaHR0cDovL2xvY2FsaG9zdDo4
MDAwIikgewotICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLmluZGV4T2YoIlBBU1MgIikg
IT09IC0xKQotICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKGV2ZW50LmRhdGEucmVwbGFj
ZSgiUEFTUyAiLCAiIikpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZChldmVudC5kYXRhKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoIlJlY2VpdmVkIGEgbWVzc2FnZSBmcm9tIGFuIHVuZXhwZWN0ZWQg
b3JpZ2luOiAiICsgZXZlbnQub3JpZ2luKTsKLSAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUo
ZmFsc2UsIGZpbmlzaEpTVGVzdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBhY3Rp
dmF0ZUVsZW1lbnQoZWxlbWVudElkKSB7Ci0gICAgICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7Ci0gICAgICAgICAgICB2YXIgY2VudGVyWCA9
IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOwotICAgICAgICAg
ICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0
IC8gMjsKLSAgICAgICAgICAgIFVJSGVscGVyLmFjdGl2YXRlQXQoY2VudGVyWCwgY2VudGVyWSku
dGhlbigKLSAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5rZXlEb3duKCJlc2NhcGUiKTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJObyBldmVudFNlbmRlci4iKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiUHJvbWlz
ZSByZWplY3RlZC4iKTsKLSAgICAgICAgICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxz
ZSwgZmluaXNoSlNUZXN0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICApOwotICAg
ICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICAgICAgICAgIHNldEVu
YWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRDYW5PcGVuV2luZG93cyhmYWxzZSk7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRQb3B1cEJsb2NraW5nRW5hYmxlZCh0cnVlKTsKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
LnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsLCB0cnVlLCBmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQgbm90IGdldCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNl
LiIpOwotICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NIYXNIYWRV
c2VySW50ZXJhY3Rpb24oc3RhdGlzdGljc1VybCwgdHJ1ZSwgZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzSGFkVXNlcklu
dGVyYWN0aW9uKHN0YXRpc3RpY3NVcmwpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgbG9nZ2VkIGZvciB1c2VyIGludGVyYWN0aW9uLiIp
OwotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzVXBkYXRlQ29v
a2llQmxvY2tpbmcoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0
IGlmcmFtZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50Lm9ubG9hZCA9IGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmF0ZUVsZW1lbnQoIlRoZUlm
cmFtZVRoYXRSZXF1ZXN0c1N0b3JhZ2VBY2Nlc3MiKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQuaWQgPSAi
VGhlSWZyYW1lVGhhdFJlcXVlc3RzU3RvcmFnZUFjY2VzcyI7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWZyYW1lRWxlbWVudC5zcmMgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3N0b3Jh
Z2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtaWZyYW1lLWFuZC1wb3At
d2luZG93Lmh0bWwjdXNlclNob3VsZEdyYW50QWNjZXNzLHVzZXJTaG91bGRCZUNvbnN1bHRlZCxw
b2xpY3lTaG91bGRHcmFudEFjY2Vzcyxpc05vdFNhbWVPcmlnaW5JZnJhbWUiOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lRWxlbWVu
dCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICB9
KTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAg
PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci08L2JvZHk+Ci08
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9yZXF1ZXN0LXN0b3JhZ2UtYWNj
ZXNzLWFuZC1pbW1lZGlhdGVseS1wb3N0bWVzc2FnZS1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvcmVxdWVzdC1zdG9yYWdlLWFjY2Vz
cy1hbmQtaW1tZWRpYXRlbHktcG9zdG1lc3NhZ2UtaWZyYW1lLmh0bWwKaW5kZXggMjg0MGZjMTM1
MDk0ZjYwZDE1YWM5YTEyNmJhMjdkN2FjYzYzYmNlNS4uNWQ5NDgwMTVlMDc1MjI4MDcxZDI0YmQz
YzdjM2EwMTdhNzIwNzMxNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9y
YWdlQWNjZXNzL3Jlc291cmNlcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLWFuZC1pbW1lZGlhdGVs
eS1wb3N0bWVzc2FnZS1pZnJhbWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0
b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtYW5kLWltbWVkaWF0
ZWx5LXBvc3RtZXNzYWdlLWlmcmFtZS5odG1sCkBAIC0xLDkgKzEsNiBAQAogPGh0bWw+CiA8aGVh
ZD4KICAgICA8c2NyaXB0PgotICAgICAgICBpZiAoaW50ZXJuYWxzKQotICAgICAgICAgICAgaW50
ZXJuYWxzLnNldFVzZXJHcmFudHNTdG9yYWdlQWNjZXNzKHRydWUpOwotCiAgICAgICAgIGZ1bmN0
aW9uIG1ha2VSZXF1ZXN0V2l0aFVzZXJHZXN0dXJlKCkgewogICAgICAgICAgICAgZG9jdW1lbnQu
cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoKTsKICAgICAgICAgICAgIHRvcC5wb3N0TWVzc2FnZSgiQVBJ
IGNhbGxlZC4iLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIik7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1h
Y2Nlc3MtaWZyYW1lLWFuZC1wb3Atd2luZG93Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtaWZyYW1lLWFu
ZC1wb3Atd2luZG93Lmh0bWwKaW5kZXggOGRhNTJiZmZiMDhkNjllNWZmNmQ2ZmY5Njc3MzE3Njky
ZGZkNDkzNC4uNDY3MTRmZWRmYjkwN2Y5OGRiZmY0MGNhNjBlMjI3MjUxOGY4YTc0YiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9yZXF1
ZXN0LXN0b3JhZ2UtYWNjZXNzLWlmcmFtZS1hbmQtcG9wLXdpbmRvdy5odG1sCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvcmVxdWVzdC1zdG9yYWdl
LWFjY2Vzcy1pZnJhbWUtYW5kLXBvcC13aW5kb3cuaHRtbApAQCAtOCw5ICs4LDYgQEAKICAgICAg
ICAgY29uc3QgaXNTYW1lT3JpZ2luSWZyYW1lID0gaGFzaEFyZ3VtZW50c1szXSA9PT0gImlzU2Ft
ZU9yaWdpbklmcmFtZSI7CiAgICAgICAgIGNvbnN0IG9yaWdpbklzTnVsbCA9IGhhc2hBcmd1bWVu
dHNbNF0gPT09ICJvcmlnaW5Jc051bGwiOwogCi0gICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxz
KQotICAgICAgICAgICAgaW50ZXJuYWxzLnNldFVzZXJHcmFudHNTdG9yYWdlQWNjZXNzKHVzZXJT
aG91bGRHcmFudEFjY2Vzcyk7Ci0KICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAg
ICAgICAgICAgICB0ZXN0UnVubmVyLnNldENhbk9wZW5XaW5kb3dzKGZhbHNlKTsKICAgICAgICAg
ICAgIHRlc3RSdW5uZXIuc2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQodHJ1ZSk7CkBAIC0yNSwxMCAr
MjIsMTQgQEAKIAogICAgICAgICBmdW5jdGlvbiB3aW5kb3dXYXNPcGVuZWQoKQogICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAodXNlclNob3VsZEdyYW50QWNjZXNzKQorICAgICAgICAgICAgaWYg
KHVzZXJTaG91bGRCZUNvbnN1bHRlZCAmJiB1c2VyU2hvdWxkR3JhbnRBY2Nlc3MpCiAgICAgICAg
ICAgICAgICAgbWVzc2FnZVRvVG9wKCJQQVNTIFdpbmRvdyB3YXMgc3VjY2Vzc2Z1bGx5IG9wZW5l
ZCB3aXRoIHVzZXIgaW50ZXJhY3Rpb24uIik7CisgICAgICAgICAgICBlbHNlIGlmICh1c2VyU2hv
dWxkQmVDb25zdWx0ZWQgJiYgIXVzZXJTaG91bGRHcmFudEFjY2VzcykKKyAgICAgICAgICAgICAg
ICBtZXNzYWdlVG9Ub3AoIkZBSUwgV2luZG93IHdhcyBvcGVuZWQgZXZlbiB0aG91Z2ggdGhlIHVz
ZXIgZXhwbGljaXRseSBkZWNsaW5lZCBwZXJtaXNzaW9uLiIpOworICAgICAgICAgICAgZWxzZSBp
ZiAoIXVzZXJTaG91bGRCZUNvbnN1bHRlZCAmJiAhdXNlclNob3VsZEdyYW50QWNjZXNzKQorICAg
ICAgICAgICAgICAgIG1lc3NhZ2VUb1RvcCgiUEFTUyBXaW5kb3cgd2FzIHN1Y2Nlc3NmdWxseSBv
cGVuZWQgd2l0aCB1c2VyIGludGVyYWN0aW9uIHNpbmNlIHRoZSB1c2VyIHdhcyBuZXZlciBjb25z
dWx0ZWQvcHJvbXB0ZWQuIik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbWVz
c2FnZVRvVG9wKCJXaW5kb3cgd2FzIG9wZW5lZCBldmVuIHRob3VnaCB0aGUgdXNlciBkZWNsaW5l
ZCBwZXJtaXNzaW9uLiIpOworICAgICAgICAgICAgICAgIG1lc3NhZ2VUb1RvcCgiRkFJTCBDb25m
bGljdGluZyBpbnN0cnVjdGlvbnM6ICF1c2VyU2hvdWxkQmVDb25zdWx0ZWQgJiYgdXNlclNob3Vs
ZEdyYW50QWNjZXNzIC4iKTsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIG1ha2VSZXF1
ZXN0V2l0aFVzZXJHZXN0dXJlKCkgewpAQCAtNDgsMTIgKzQ5LDE0IEBACiAgICAgICAgIGZ1bmN0
aW9uIGNvbnRpbnVlQWZ0ZXJSZXF1ZXN0V2l0aFVzZXJHZXN0dXJlKCkgewogICAgICAgICAgICAg
dmFyIHdpbiA9IHdpbmRvdy5vcGVuKCJyZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXNlY29uZC13aW5k
b3cuaHRtbCIsICJ0ZXN0IHdpbmRvdyIpOwogICAgICAgICAgICAgaWYgKCF3aW4pIHsKLSAgICAg
ICAgICAgICAgICBpZiAodXNlclNob3VsZEdyYW50QWNjZXNzKQotICAgICAgICAgICAgICAgICAg
ICBtZXNzYWdlVG9Ub3AoIldpbmRvdyB3YXMgbm90IG9wZW5lZCBldmVuIHRob3VnaCB0aGUgdXNl
ciBncmFudGVkIHBlcm1pc3Npb24uIik7Ci0gICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIGlmICh1c2VyU2hvdWxkQmVDb25zdWx0ZWQgJiYgdXNlclNob3VsZEdyYW50QWNjZXNz
KQorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlVG9Ub3AoIkZBSUwgV2luZG93IHdhcyBub3Qg
b3BlbmVkIGV2ZW4gdGhvdWdoIHRoZSB1c2VyIGV4cGxpY2l0bHkgZ3JhbnRlZCBwZXJtaXNzaW9u
LiIpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKHVzZXJTaG91bGRCZUNvbnN1bHRlZCAmJiAh
dXNlclNob3VsZEdyYW50QWNjZXNzKQogICAgICAgICAgICAgICAgICAgICBtZXNzYWdlVG9Ub3Ao
IlBBU1MgV2luZG93IHdhcyBibG9ja2VkIGZyb20gb3BlbmluZy4iKTsKLSAgICAgICAgICAgIH0g
ZWxzZSBpZiAoIXVzZXJTaG91bGRHcmFudEFjY2VzcykgewotICAgICAgICAgICAgICAgIG1lc3Nh
Z2VUb1RvcCgiV2luZG93IHdhcyBvcGVuZWQgZXZlbiB0aG91Z2ggdGhlIHVzZXIgZGlkIG5vdCBn
cmFudCBwZXJtaXNzaW9uLiIpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKCF1c2VyU2hvdWxk
QmVDb25zdWx0ZWQgJiYgIXVzZXJTaG91bGRHcmFudEFjY2VzcykKKyAgICAgICAgICAgICAgICAg
ICAgbWVzc2FnZVRvVG9wKCJGQUlMIFdpbmRvdyB3YXMgYmxvY2tlZCBmcm9tIG9wZW5pbmcgZXZl
biB0aG91Z2ggdGhlIHVzZXIgd2FzIG5ldmVyIGNvbnN1bHRlZC9wcm9tcHRlZC4iKTsKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VUb1RvcCgiRkFJTCBD
b25mbGljdGluZyBpbnN0cnVjdGlvbnM6ICF1c2VyU2hvdWxkQmVDb25zdWx0ZWQgJiYgdXNlclNo
b3VsZEdyYW50QWNjZXNzIC4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIDwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jl
c291cmNlcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNz
LWlmcmFtZS5odG1sCmluZGV4IDZhZmQ2YzhiMWIyZmUxNGQ3ZjE0N2E0ZjZlMTg3NWYxMDcyZWVh
MDcuLjU0MzEzMmM0NjYxMTYwODJhYjExN2IzZWYyMDgyNWIwYTUyNDQ0YWYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvcmVxdWVzdC1z
dG9yYWdlLWFjY2Vzcy1pZnJhbWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0
b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtaWZyYW1lLmh0bWwK
QEAgLTgsOSArOCw2IEBACiAgICAgICAgIGNvbnN0IGlzU2FtZU9yaWdpbklmcmFtZSA9IGhhc2hB
cmd1bWVudHNbM10gPT09ICJpc1NhbWVPcmlnaW5JZnJhbWUiOwogICAgICAgICBjb25zdCBvcmln
aW5Jc051bGwgPSBoYXNoQXJndW1lbnRzWzRdID09PSAib3JpZ2luSXNOdWxsIjsKIAotICAgICAg
ICBpZiAoaW50ZXJuYWxzICYmIHVzZXJTaG91bGRHcmFudEFjY2VzcykKLSAgICAgICAgICAgICAg
ICBpbnRlcm5hbHMuc2V0VXNlckdyYW50c1N0b3JhZ2VBY2Nlc3ModHJ1ZSk7Ci0KICAgICAgICAg
dmFyIHJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzb2x2ZWQ7CiAKICAgICAgICAgZnVuY3Rpb24gbWVz
c2FnZVRvVG9wKG1lc3NhZ2VQcmVmaXgsIGZldGNoRGF0YSkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9yZXF1ZXN0LXN0b3JhZ2Ut
YWNjZXNzLXdpdGhvdXQtdXNlci1nZXN0dXJlLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXdp
dGhvdXQtdXNlci1nZXN0dXJlLWlmcmFtZS5odG1sCmluZGV4IDY0ZmQ0YTRmYTAwMTcyMDc5ZGYx
ODdmNjU5OTU2YzhlMTI4NGUzNjEuLmE3YjQwYzg1MzRlNjQyNzVmM2Q4ZjI0NzU3YmVjZWYzYTRl
OTBiMWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9y
ZXNvdXJjZXMvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy13aXRob3V0LXVzZXItZ2VzdHVyZS1pZnJh
bWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3Vy
Y2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mtd2l0aG91dC11c2VyLWdlc3R1cmUtaWZyYW1lLmh0
bWwKQEAgLTYsOSArNiw2IEBACiAgICAgICAgIGNvbnN0IHVzZXJTaG91bGRCZUNvbnN1bHRlZCA9
IGhhc2hBcmd1bWVudHNbMV0gPT09ICJ1c2VyU2hvdWxkQmVDb25zdWx0ZWQiOwogICAgICAgICBj
b25zdCBwb2xpY3lTaG91bGRHcmFudEFjY2VzcyA9IGhhc2hBcmd1bWVudHNbMl0gPT09ICJwb2xp
Y3lTaG91bGRHcmFudEFjY2VzcyI7CiAKLSAgICAgICAgaWYgKGludGVybmFscyAmJiB1c2VyU2hv
dWxkR3JhbnRBY2Nlc3MpCi0gICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldFVzZXJHcmFudHNT
dG9yYWdlQWNjZXNzKHRydWUpOwotCiAgICAgICAgIHZhciByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jl
c29sdmVkOwogCiAgICAgICAgIGZ1bmN0aW9uIG1ha2VSZXF1ZXN0V2l0aG91dFVzZXJHZXN0dXJl
KCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jl
c291cmNlcy9zZWxmLW5hdmlnYXRpbmctZnJhbWUtYWZ0ZXItZ3JhbnRlZC1hY2Nlc3MuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvc2VsZi1uYXZp
Z2F0aW5nLWZyYW1lLWFmdGVyLWdyYW50ZWQtYWNjZXNzLmh0bWwKaW5kZXggZGJkYTdlYTI0MzBi
Njg3YWNmZDU3ZmUzNTNiYzA0NDhiODVhMzdkMy4uNTI1NjVjMmM1MWM2MzNlOWFjMjVmZWI2MThi
NWI3YmQ2M2ZkNWQ5ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdl
QWNjZXNzL3Jlc291cmNlcy9zZWxmLW5hdmlnYXRpbmctZnJhbWUtYWZ0ZXItZ3JhbnRlZC1hY2Nl
c3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3Vy
Y2VzL3NlbGYtbmF2aWdhdGluZy1mcmFtZS1hZnRlci1ncmFudGVkLWFjY2Vzcy5odG1sCkBAIC03
LDkgKzcsNiBAQAogICAgICAgICBjb25zdCBwb2xpY3lTaG91bGRHcmFudEFjY2VzcyA9IGhhc2hB
cmd1bWVudHNbMl0gPT09ICJwb2xpY3lTaG91bGRHcmFudEFjY2VzcyI7CiAgICAgICAgIGNvbnN0
IHNhbWVTaXRlTmF2aWdhdGlvbiA9IGhhc2hBcmd1bWVudHNbM10gPT09ICJzYW1lU2l0ZU5hdmln
YXRpb24iOwogCi0gICAgICAgIGlmIChpbnRlcm5hbHMgJiYgdXNlclNob3VsZEdyYW50QWNjZXNz
KQotICAgICAgICAgICAgaW50ZXJuYWxzLnNldFVzZXJHcmFudHNTdG9yYWdlQWNjZXNzKHRydWUp
OwotCiAgICAgICAgIHZhciByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc29sdmVkOwogCiAgICAgICAg
IGZ1bmN0aW9uIG1ha2VSZXF1ZXN0V2l0aFVzZXJHZXN0dXJlKCkgewpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGY0YzE5MGRhZmM3OWU1MzIy
YTBiMWRjZWEyZjgzZTcyZTYwMmJjZTEuLjYxZTNiNGRiOWI5ODliMzhhMDViZjdiNmI1MjM5ZWJk
Yjc3ODhmN2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTcyNiw2ICs3MjYsOSBAQCBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvdXNlci1pbnRlcmFjdGlvbi1yZXBvcnRlZC1hZnRlci13ZWJzaXRlLWRhdGEtcgogWyBIaWdo
U2llcnJhKyBdIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1hY2Nl
c3MtdGhlbi1uYXZpZ2F0ZS1zYW1lLXNpdGUtc2hvdWxkLWhhdmUtYWNjZXNzLmh0bWwgWyBQYXNz
IF0KIFsgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZGVueS1zdG9yYWdl
LWFjY2Vzcy11bmRlci1vcGVuZXIuaHRtbCBbIFBhc3MgXQogWyBIaWdoU2llcnJhKyBdIGh0dHAv
dGVzdHMvc3RvcmFnZUFjY2Vzcy9kZW55LXN0b3JhZ2UtYWNjZXNzLXVuZGVyLW9wZW5lci1pZi1h
dXRvLWRpc21pc3MuaHRtbCBbIFBhc3MgXQorWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvc3Rv
cmFnZUFjY2Vzcy9ncmFudC13aXRoLXByb21wdC1wcmVzZXJ2ZXMtZ2VzdHVyZS5odG1sIFsgUGFz
cyBdCitbIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnktd2l0aC1w
cm9tcHQtZG9lcy1ub3QtcHJlc2VydmUtZ2VzdHVyZS5odG1sIFsgU2tpcCBdCitbIEhpZ2hTaWVy
cmErIF0gaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnktd2l0aG91dC1wcm9tcHQtcHJlc2Vy
dmVzLWdlc3R1cmUuaHRtbCBbIFBhc3MgXQogCiAjIEFzIG9mIGh0dHBzOi8vdHJhYy53ZWJraXQu
b3JnL2NoYW5nZXNldC8yMjc3NjIgdGhlIHRpbWVzdGFtcFJlc29sdXRpb24gaXMganVzdCA1IHNl
Y29uZHMgd2hpY2ggbWFrZXMgdGhpcyB0ZXN0IGZsYWt5CiBodHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvdXNlci1pbnRlcmFjdGlvbi1vbmx5LXJlcG9ydGVkLW9uY2Utd2l0aGluLXNo
b3J0LXBlcmlvZC1vZi10aW1lLmh0bWwgWyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>369310</attachid>
            <date>2019-05-07 12:14:25 -0700</date>
            <delta_ts>2019-05-07 12:55:37 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-197648-20190507121424.patch</filename>
            <type>text/plain</type>
            <size>157016</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1MDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDQyNGM5ZWM3MGU5YzBh
NTYwNjg3MjFmNTc4OTZhZWIyNzc0YWE5Ny4uMThmMTY0Y2YzYTk0MmM3MGNlOThkMzdjM2FkYTM0
M2QyYzlmNDBkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE5LTA1LTA3ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3JhZ2UgQWNjZXNz
IEFQSTogTWFrZSB0d28gY2hhbmdlcyByZXF1ZXN0ZWQgYnkgZGV2ZWxvcGVycyBhbmQgY29tcGxl
dGUgcmVmYWN0b3JpbmcgYW5kIGNsZWFudXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5NzY0OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTA1Mjc0
OTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgRGV2ZWxv
cGVycyBoYXZlIHJlcXVlc3RlZCB0d28gbWlub3IgY2hhbmdlcyB0byB0aGUgU3RvcmFnZSBBY2Nl
c3MgQVBJOgorICAgICAgICAtIE9ubHkgY29uc3VtZSB0aGUgdXNlciBnZXN0dXJlIHdoZW4gdGhl
IHVzZXIgZXhwbGljaXRseSBkZW5pZXMgYWNjZXNzLgorICAgICAgICAtIE1ha2UgZG9jdW1lbnQu
aGFzU3RvcmFnZUFjY2VzcygpIHJldHVybiB0cnVlIGluc3RlYWQgb2YgZmFsc2Ugd2hlbiB0aGUg
ZmVhdHVyZSBpcyBvZmYuCisKKyAgICAgICAgSW4gYWRkaXRpb24gdG8gdGhpcywgd2UgaGF2ZSBy
ZWZhY3RvcmluZyBhbmQgY2xlYW51cCB0byBkby4gTmFtZWx5OgorICAgICAgICAtIE1ha2UgdXNl
IG9mIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGFsbCB0aGUgd2F5LgorICAgICAgICAtIFJl
bW92ZSBkZWFkIGNvZGUgaW4gV2ViS2l0OjpOZXR3b3JrUHJvY2VzcyBzaW5jZSB0aGUgY2FsbHMg
bm93IGdvIHRocm91Z2ggTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuCisgICAgICAgIC0g
SW50cm9kdWNlIGJvb2xlYW4gZW51bXMgZm9yIHN0YXRlIGhhbmRsaW5nLgorICAgICAgICAtIEJy
ZWFrIG91dCB0aGUgU3RvcmFnZSBBY2Nlc3MgQVBJIGZ1bmN0aW9uYWxpdHkgaW50byBhIHN1cHBs
ZW1lbnQgb2YgV2ViQ29yZTo6RG9jdW1lbnQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMg
RHVtZXouCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9kZW55LXdp
dGgtcHJvbXB0LWRvZXMtbm90LXByZXNlcnZlLWdlc3R1cmUuaHRtbAorICAgICAgICAgICAgICAg
aHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnktd2l0aG91dC1wcm9tcHQtcHJlc2VydmVzLWdl
c3R1cmUuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2dyYW50
LXdpdGgtcHJvbXB0LXByZXNlcnZlcy1nZXN0dXJlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAv
dGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1hY2Nlc3MtdHJ1ZS1pZi1mZWF0dXJlLW9m
Zi5odG1sCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2
ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpo
YXNTdG9yYWdlQWNjZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpy
ZXF1ZXN0U3RvcmFnZUFjY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6ZW5hYmxlVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50Ojpjb25zdW1lVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpoYXNGcmFtZVNwZWNpZmljU3RvcmFnZUFj
Y2VzcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0SGFz
RnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldFVzZXJHcmFudHNTdG9yYWdl
QWNjZXNzT3ZlcnJpZGUpOiBEZWxldGVkLgorICAgICAgICAgICAgQWxsIG9mIHRoaXMgaGFzIGJl
ZW4gbW92ZWQgdG8gdGhlIHN1cHBsZW1lbnQgV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNz
LgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5pZGw6CisgICAgICAgICAgICBUaGUgU3RvcmFnZSBB
Y2Nlc3MgQVBJIGhhcyBiZWVuIG1vdmVkIHRvIERvY3VtZW50U3RvcmFnZUFjY2Vzcy5pZGwuCisg
ICAgICAgICogZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpmcm9tKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50U3RvcmFnZUFjY2Vzczo6c3VwcGxlbWVudE5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpoYXNTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjplbmFibGVUZW1wb3JhcnlUaW1l
VXNlckdlc3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpj
b25zdW1lVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50U3RvcmFnZUFjY2Vzczo6aGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpzZXRIYXNGcmFtZVNwZWNp
ZmljU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgICogZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5o
OiBBZGRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmlkbDogQWRkZWQu
CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldFVzZXJHcmFudHNTdG9y
YWdlQWNjZXNzKTogRGVsZXRlZC4KKyAgICAgICAgICAgIFRoaXMgd2FzIGRlYWQgY29kZS4KKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxz
LmlkbDoKKwogMjAxOS0wNS0wNiAgSmFtZXMgU2F2YWdlICA8amFtZXMuc2F2YWdlQGFwcGxlLmNv
bT4KIAogICAgICAgICBJbXByb3ZlIGNvb3JkaW5hdGlvbiBmb3IgY3JlYXRpbmcgVUlXaW5kb3cg
aW5zdGFuY2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA3NWMzNzNkMDg4ZmU3YjJkMTgzOGU3NjhhOGFlYWUwOWRh
NGVlNGRmLi5iZTdhNTU4ZGUxZWI0ZWJjN2I1ZTAzMWQzZWM2OTkyNDE2MjM0Y2NlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxOS0wNS0wNyAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVy
QGFwcGxlLmNvbT4KKworICAgICAgICBTdG9yYWdlIEFjY2VzcyBBUEk6IE1ha2UgdHdvIGNoYW5n
ZXMgcmVxdWVzdGVkIGJ5IGRldmVsb3BlcnMgYW5kIGNvbXBsZXRlIHJlZmFjdG9yaW5nIGFuZCBj
bGVhbnVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTc2NDgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUwNTI3NDkzPgorCisgICAgICAgIFJldmll
d2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgIERldmVsb3BlcnMgaGF2ZSByZXF1ZXN0ZWQg
dHdvIG1pbm9yIGNoYW5nZXMgdG8gdGhlIFN0b3JhZ2UgQWNjZXNzIEFQSToKKyAgICAgICAgLSBP
bmx5IGNvbnN1bWUgdGhlIHVzZXIgZ2VzdHVyZSB3aGVuIHRoZSB1c2VyIGV4cGxpY2l0bHkgZGVu
aWVzIGFjY2Vzcy4KKyAgICAgICAgLSBNYWtlIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3MoKSBy
ZXR1cm4gdHJ1ZSBpbnN0ZWFkIG9mIGZhbHNlIHdoZW4gdGhlIGZlYXR1cmUgaXMgb2ZmLgorCisg
ICAgICAgIEluIGFkZGl0aW9uIHRvIHRoaXMsIHdlIGhhdmUgcmVmYWN0b3JpbmcgYW5kIGNsZWFu
dXAgdG8gZG8uIE5hbWVseToKKyAgICAgICAgLSBNYWtlIHVzZSBvZiBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBhbGwgdGhlIHdheS4KKyAgICAgICAgLSBSZW1vdmUgZGVhZCBjb2RlIGluIFdl
YktpdDo6TmV0d29ya1Byb2Nlc3Mgc2luY2UgdGhlIGNhbGxzIG5vdyBnbyB0aHJvdWdoIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLgorICAgICAgICAtIEludHJvZHVjZSBib29sZWFuIGVu
dW1zIGZvciBzdGF0ZSBoYW5kbGluZy4KKyAgICAgICAgLSBCcmVhayBvdXQgdGhlIFN0b3JhZ2Ug
QWNjZXNzIEFQSSBmdW5jdGlvbmFsaXR5IGludG8gYSBzdXBwbGVtZW50IG9mIFdlYkNvcmU6OkRv
Y3VtZW50LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnREb21haW5SZWxhdGlvbnNoaXBzKToK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJl
cXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIpOgorICAg
ICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRT
dG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1VzZXJHcmFudGVkU3Rv
cmFnZUFjY2Vzc1Rocm91Z2hQcm9tcHQgY29uc3QpOgorICAgICAgICAgICAgVGhlc2UgY2hhbmdl
cyBhcmUgZHVlIHRvIHRoZSBuZXcgZW51bXMgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQgYW5kCisgICAgICAgICAgICBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24u
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyk6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVx
dWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcik6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKToKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpncmFudFN0b3JhZ2VB
Y2Nlc3NJbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZTo6aGFzVXNlckdyYW50ZWRTdG9yYWdlQWNjZXNzVGhyb3VnaFByb21wdCk6Cisg
ICAgICAgICAgICBUaGVzZSBjaGFuZ2VzIGFyZSBkdWUgdG8gdGhlIG5ldyBlbnVtcyBXZWJDb3Jl
OjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBhbmQKKyAgICAgICAgICAgIFdlYkNvcmU6OlN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93bi4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAg
ICAgICAgICBUaGVzZSBjaGFuZ2VzIGFyZSBkdWUgdG8gdGhlIG5ldyBlbnVtcyBXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBhbmQKKyAgICAgICAgICAgIFdlYkNvcmU6OlN0b3JhZ2VB
Y2Nlc3NQcm9tcHRXYXNTaG93bi4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFn
ZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6Y2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIpOgorICAgICAgICAgICAgVGhlc2UgY2hh
bmdlcyBhcmUgZHVlIHRvIHRoZSBuZXcgZW51bXMgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQgYW5kCisgICAgICAgICAgICBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hv
d24uCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVx
dWVzdFN0b3JhZ2VBY2Nlc3NHcmFudGVkKTogRGVsZXRlZC4KKyAgICAgICAgICAgIFRoaXMgZnVu
Y3Rpb24gaXMgbm93IG5vIGxvbmdlciBleHBvc2VkIGFuZCBpdHMgZnVuY3Rpb25hbGl0eSBjb3Vs
ZCBiZSBmb2xkZWQgaW50bworICAgICAgICAgICAgdGhlIGV4aXN0aW5nIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoKSB3aGljaCBpcyBtb3JlCisg
ICAgICAgICAgICBjbGVhcmx5IG5hbWVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzU3RvcmFnZUFjY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXF1ZXN0U3Rv
cmFnZUFjY2Vzcyk6CisgICAgICAgICAgICBUaGVzZSBjaGFuZ2VzIGFyZSBkdWUgdG8gdGhlIG5l
dyBlbnVtcyBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBhbmQKKyAgICAgICAgICAg
IFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bi4KKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlcXVlc3RTdG9y
YWdlQWNjZXNzR3JhbnRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpncmFudFN0b3JhZ2VBY2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6cmVtb3ZlQWxsU3RvcmFnZUFjY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgICAg
ICBUaGVzZSBmdW5jdGlvbnMgd2VyZSBsZWZ0IGJlaGluZCBpbiB0aGUgbW92ZSBvZiBJVFAgdG8g
dGhlIG5ldHdvcmsgcHJvY2Vzcy4KKyAgICAgICAgICAgIFRoaXMgY29tbXVuaWNhdGlvbiBnb2Vz
IHRocm91Z2ggV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBzaW5jZSBhIHdo
aWxlIGJhY2suCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgICAgIEluc3RydWN0aW9u
cyBmb3IgZGVyaXZlZCBJUEMgY29kZSBvbiBob3cgdG8gaW5jbHVkZSB0aGUgbmV3IGVudW1zCisg
ICAgICAgICAgICBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBhbmQgV2ViQ29yZTo6
U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpoYXNTdG9yYWdlQWNjZXNzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3Mp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpncmFudFN0
b3JhZ2VBY2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1By
b3h5OjpyZW1vdmVBbGxTdG9yYWdlQWNjZXNzKTogRGVsZXRlZC4KKyAgICAgICAgICAgIFRoZXNl
IGZ1bmN0aW9ucyB3ZXJlIGxlZnQgYmVoaW5kIGluIHRoZSBtb3ZlIG9mIElUUCB0byB0aGUgbmV0
d29yayBwcm9jZXNzLgorICAgICAgICAgICAgVGhpcyBjb21tdW5pY2F0aW9uIGdvZXMgdGhyb3Vn
aCBXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHNpbmNlIGEgd2hpbGUgYmFj
ay4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpncmFudFN0
b3JhZ2VBY2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAgICAgVGhlc2UgZnVuY3Rpb25zIHdlcmUg
bGVmdCBiZWhpbmQgaW4gdGhlIG1vdmUgb2YgSVRQIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MuCisg
ICAgICAgICAgICBUaGlzIGNvbW11bmljYXRpb24gZ29lcyB0aHJvdWdoIFdlYktpdDo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mgc2luY2UgYSB3aGlsZSBiYWNrLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJDaHJvbWVDbGllbnQ6Omhhc1N0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDaHJvbWVDbGllbnQ6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgICAgIFRoZXNl
IGNoYW5nZXMgYXJlIGR1ZSB0byB0aGUgbmV3IGVudW1zIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkIGFuZAorICAgICAgICAgICAgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duLiBUaGV5IGFsc28gcmVjZWl2ZSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbgorICAg
ICAgICAgICAgb2JqZWN0cyBpbnN0ZWFkIG9mIFN0cmluZ3Mgbm93LgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYXNT
dG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3MpOgorICAgICAgICAgICAgVGhlc2UgY2hhbmdlcyBhcmUgZHVlIHRvIHRoZSBuZXcgZW51
bXMgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgYW5kCisgICAgICAgICAgICBXZWJD
b3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24uIFRoZXkgYWxzbyByZWNlaXZlIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluCisgICAgICAgICAgICBvYmplY3RzIGluc3RlYWQgb2YgU3Ry
aW5ncyBub3cuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKwogMjAx
OS0wNS0wNiAgSmFtZXMgU2F2YWdlICA8amFtZXMuc2F2YWdlQGFwcGxlLmNvbT4KIAogICAgICAg
ICBJbXByb3ZlIGNvb3JkaW5hdGlvbiBmb3IgY3JlYXRpbmcgVUlXaW5kb3cgaW5zdGFuY2VzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXgg
YzM1MTMzZTBjY2I3MmQzNDQzNDM0YzRlMTllNzEwZmY0NDk1NzFiNi4uZWYyODRmNWM2ZmE4YzYx
NzQ2N2IzOTFmMDE3NjNjYTJlYzc4NWY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC01NjIsNiArNTYyLDcgQEAgJChQUk9KRUNUX0RJ
UikvZG9tL0RvY3VtZW50QW5kRWxlbWVudEV2ZW50SGFuZGxlcnMuaWRsCiAkKFBST0pFQ1RfRElS
KS9kb20vRG9jdW1lbnRGcmFnbWVudC5pZGwKICQoUFJPSkVDVF9ESVIpL2RvbS9Eb2N1bWVudEZ1
bGxzY3JlZW4uaWRsCiAkKFBST0pFQ1RfRElSKS9kb20vRG9jdW1lbnRPclNoYWRvd1Jvb3QuaWRs
CiskKFBST0pFQ1RfRElSKS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmlkbAogJChQUk9KRUNU
X0RJUikvZG9tL0RvY3VtZW50VG91Y2guaWRsCiAkKFBST0pFQ1RfRElSKS9kb20vRG9jdW1lbnRU
eXBlLmlkbAogJChQUk9KRUNUX0RJUikvZG9tL0VsZW1lbnQuaWRsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDFhOGM5MzJhMzYzZGNi
MjAzNDYyZDJjM2RmNGVlYzhkYWFmZDZlYWYuLjhiZDdmOWQzOGFkOGRlZDFmNzYxY2NiNDQzNGNh
NGJiMDE1MjA5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0CkBAIC00NzMsNiArNDczLDggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudEZ1bGxzY3JlZW4uY3BwCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50RnVsbHNjcmVlbi5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50
T3JTaGFkb3dSb290LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNEb2N1bWVudE9yU2hhZG93Um9vdC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHAKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRG9jdW1lbnRTdG9yYWdlQWNj
ZXNzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRG9j
dW1lbnRUaW1lbGluZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTRG9jdW1lbnRUaW1lbGluZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50VGltZWxpbmVPcHRpb25zLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMDQzM2ZhYjg4NzRhNTAxOTM2NzY4ODQwMTZjZWJmMTZk
NTg4MGUwNC4uZjQ1NmI0NThjMTk0ODhlYjYyOGRjMzliZDM5YTQ0MjQ2MDU2NjJhZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC01ODQsNiArNTg0LDcgQEAgSlNfQklORElOR19J
RExTID0gXAogICAgICQoV2ViQ29yZSkvZG9tL0RvY3VtZW50RnVsbHNjcmVlbi5pZGwgXAogICAg
ICQoV2ViQ29yZSkvZG9tL0RvY3VtZW50RnJhZ21lbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Rv
bS9Eb2N1bWVudE9yU2hhZG93Um9vdC5pZGwgXAorICAgICQoV2ViQ29yZSkvZG9tL0RvY3VtZW50
U3RvcmFnZUFjY2Vzcy5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL0RvY3VtZW50VHlwZS5pZGwg
XAogICAgICQoV2ViQ29yZSkvZG9tL0VsZW1lbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9F
cnJvckV2ZW50LmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
IGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCAwMTU1ODQ1NDJlZjAyODZiZmQ1
MTc5MTE5OTgyZjQxM2U0OGVkYTAzLi44M2RiZWE2MDU3MWYxOTEwZTk0NjIxZWQ2Yjg4ZTA3NWRm
ZTg0YjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTM2OCw2ICszNjgsNyBAQCBzZXQoV2ViQ29y
ZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgZG9tL0RvY3VtZW50SWRlbnRpZmllci5o
CiAgICAgZG9tL0RvY3VtZW50TWFya2VyLmgKICAgICBkb20vRG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyLmgKKyAgICBkb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmgKICAgICBkb20vRG9jdW1lbnRU
aW1pbmcuaAogICAgIGRvbS9Eb2N1bWVudFR5cGUuaAogICAgIGRvbS9FbGVtZW50LmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKaW5kZXggYmE2MDk3ZTliNzQ3MDgwZWM4MTA5NWZjMGMwZjgyODhiMDYxNjgzMS4uYmNl
Y2JhOTA4OTc2NmY5MGY5NTBjMjE3ODNhZjYyZTExOGZmYjZjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAg
LTg0NCw2ICs4NDQsNyBAQCBkb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKIGRvbS9Eb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIuY3BwCiBkb20vRG9jdW1lbnRQYXJzZXIuY3BwCiBkb20vRG9jdW1lbnRT
aGFyZWRPYmplY3RQb29sLmNwcAorZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHAKIGRvbS9E
b2N1bWVudFRvdWNoLmNwcCBAbm8tdW5pZnkKIGRvbS9Eb2N1bWVudFR5cGUuY3BwCiBkb20vRWxl
bWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCAwZGNkYzg3NGE3Yjk3N2ZhYTg2ZWQyNDc0NjYxMGRiNTg4YjFlZjkzLi42
ODBkNjQ0NmY1OTRjNWY1YmNlMDI1MDBmMGFjNTE1MWZmNzc1OWE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xOTc1LDYgKzE5
NzUsNyBAQAogCQk2QjM0ODA5NDBFRUY1MEQ0MDBBQzFCNDEgLyogTmF0aXZlSW1hZ2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCMzQ4MDkyMEVFRjUw
RDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTZCNEU4NjEzMjIxQjcxM0YwMDIyRjM4OSAvKiBSZWdpc3Ry
YWJsZURvbWFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNkI0RTg2MTIyMjFCNzEzRjAwMjJGMzg5IC8qIFJlZ2lzdHJhYmxlRG9tYWluLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkI2OTNBMkUxQzUx
QTgyRTAwQjAzQkVGIC8qIFJlc291cmNlTG9hZE9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjY5M0EyRDFDNTFBODJFMDBCMDNCRUYgLyog
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk2QkRCNURDMjIyN0JEM0I4MDA5MTk3NzAgLyogRG9jdW1lbnRTdG9y
YWdlQWNjZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2QkRCNURDMDIyN0JEM0I4MDA5MTk3NzAgLyogRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkM0Qzk2REYx
QUQ0NDgzNTAwMzYzRjY0IC8qIEpTUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0Qzk2REIxQUQ0NDgz
NTAwMzYzRjY0IC8qIEpTUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5oICovOyB9OwogCQk2
QzRDOTZERjFBRDQ0ODM1MDAzNjU2NzIgLyogSlNSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzRDOTZEQjFB
RDQ0ODM1MDAzNjU2NzIgLyogSlNSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0LmggKi87IH07CiAJ
CTZDNEM5NkRGMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZD
NEM5NkRCMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xs
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
OTAzNyw2ICs5MDM4LDkgQEAKIAkJNkI0RTg2MTIyMjFCNzEzRjAwMjJGMzg5IC8qIFJlZ2lzdHJh
YmxlRG9tYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ2lzdHJhYmxlRG9tYWluLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCNjkzQTJEMUM1MUE4MkUwMEIwM0JFRiAvKiBSZXNvdXJj
ZUxvYWRPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJj
ZUxvYWRPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QjY5M0EzMzFD
NTFBOTVEMDBCMDNCRUYgLyogUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk2QkRCNURDMDIyN0JEM0I4MDA5MTk3NzAgLyogRG9jdW1l
bnRTdG9yYWdlQWNjZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50U3RvcmFnZUFjY2Vzcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QkRCNURDMTIyN0JEM0I4MDA5MTk3NzAg
LyogRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50
U3RvcmFnZUFjY2Vzcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZCREI1REM1
MjI3Q0EwRUIwMDkxOTc3MCAvKiBEb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERvY3Vt
ZW50U3RvcmFnZUFjY2Vzcy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZDNEM5
NkRBMUFENDQ4MzUwMDM2M0Y2NCAvKiBKU1JlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSZWFkYWJsZUJ5dGVTdHJl
YW1Db250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkM0Qzk2REEx
QUQ0NDgzNTAwMzY1NjcyIC8qIEpTUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtQllPQlJlcXVl
c3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QzRDOTZEQTFBRDQ0ODM1MDAz
NjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTkyMSwxMCArMjU5MjUs
MTAgQEAKIAkJCQlDREUzQTg1NTE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVB
VkZPYmpDLm1tICovLAogCQkJCUNENTRBNzYwMTgwRjlGNzAwMEIwNzZDOSAvKiBBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAgKi8sCiAJCQkJQ0Q1NEE3NjExODBGOUY3MDAw
QjA3NkM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggKi8sCi0JCQkJ
Q0RFQ0E4OTkxRURGNDQ3RDAwRENCMDhCIC8qIEFWQXNzZXRUcmFja1V0aWxpdGllcy5oICovLAot
CQkJCUNERUNBODk4MUVERjQ0N0QwMERDQjA4QiAvKiBBVkFzc2V0VHJhY2tVdGlsaXRpZXMubW0g
Ki8sCiAJCQkJMDdDOEFEMTIxRDA3M0Q2MzAwODdDNUNFIC8qIEFWQXNzZXRNSU1FVHlwZUNhY2hl
LmggKi8sCiAJCQkJMDdDOEFEMTExRDA3M0Q2MzAwODdDNUNFIC8qIEFWQXNzZXRNSU1FVHlwZUNh
Y2hlLm1tICovLAorCQkJCUNERUNBODk5MUVERjQ0N0QwMERDQjA4QiAvKiBBVkFzc2V0VHJhY2tV
dGlsaXRpZXMuaCAqLywKKwkJCQlDREVDQTg5ODFFREY0NDdEMDBEQ0IwOEIgLyogQVZBc3NldFRy
YWNrVXRpbGl0aWVzLm1tICovLAogCQkJCUNEMTFCM0RGMjI3Q0FBQTkwMDIzQUZDNyAvKiBBVlN0
cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlLmggKi8sCiAJCQkJQ0QxMUIzRTAyMjdDQUFBOTAw
MjNBRkM3IC8qIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0gKi8sCiAJCQkJQ0Q3
OEEyRUUxRjc1NjQ4NjAwREUzNzFCIC8qIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDLmggKi8sCkBAIC0yNzIyNyw2ICsyNzIzMSw5IEBACiAJCQkJQkNDRkJBRTcwQjUxNTJFRDAw
MDFGMUQ3IC8qIERvY3VtZW50UGFyc2VyLmggKi8sCiAJCQkJQUQ2RTcxQUExNjY4ODk5RDAwMzIw
QzEzIC8qIERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbC5jcHAgKi8sCiAJCQkJQUQ2RTcxQUIxNjY4
ODk5RDAwMzIwQzEzIC8qIERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbC5oICovLAorCQkJCTZCREI1
REMxMjI3QkQzQjgwMDkxOTc3MCAvKiBEb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwICovLAorCQkJ
CTZCREI1REMwMjI3QkQzQjgwMDkxOTc3MCAvKiBEb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaCAqLywK
KwkJCQk2QkRCNURDNTIyN0NBMEVCMDA5MTk3NzAgLyogRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmlk
bCAqLywKIAkJCQk4NkQ5ODJGNjEyNUMxNTQwMDBBRDlFM0QgLyogRG9jdW1lbnRUaW1pbmcuaCAq
LywKIAkJCQk3Q0U3RkE1QjFFRjg4MjMwMDA2MEM5RDYgLyogRG9jdW1lbnRUb3VjaC5jcHAgKi8s
CiAJCQkJN0NFN0ZBNTkxRUY4ODIzMDAwNjBDOUQ2IC8qIERvY3VtZW50VG91Y2guaCAqLywKQEAg
LTI4MjM0LDExICsyODI0MSwxMSBAQAogCQkJCUM5RDQ2NzA1MUU2MEM0NjUwMDgxOTVGQiAvKiBB
dXRvcGxheUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NTgzMEQ0RTE2NzlCNEY4MDBBQ0Y4
QzMgLyogQXV0b3Njcm9sbENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4Q0ZGMDRF
MEExNTRGMDkwMDBBNDIzNCAvKiBBdXRvVGFibGVMYXlvdXQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTA3RjRFOTMzMjBCMzU4N0YwMDJFMzgwMyAvKiBBVkFzc2V0TUlNRVR5cGVDYWNoZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0RFQ0E4OUIxRURGNDQ3RDAwRENCMDhCIC8qIEFWQXNzZXRUcmFja1V0
aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDNjc1MjcxRUFFQTlENDAwNzI3Qzg0IC8q
IEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDNjc1
MjMxRUFFQTlCNzAwNzI3Qzg0IC8qIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTA3MDM2M0UyMTgxQTFDREMwMEMwNzRBNSAvKiBBVkNhcHR1
cmVEZXZpY2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQkwN0Y0RTkzMzIwQjM1ODdGMDAy
RTM4MDMgLyogQVZBc3NldE1JTUVUeXBlQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMzM2
RjYyMTdGOUY2NDcwMERERENEMCAvKiBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwNzAzNjNFNjE4MUExQ0RDMDBDMDc0QTUgLyogQVZWaWRlb0NhcHR1cmVT
b3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QUUyMTJEMjFBQjlFRUIwMDg2OTI4MyAvKiBB
WElzb2xhdGVkVHJlZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODc5NSw2ICsyODgwMiw3IEBACiAJ
CQkJQkNDRkJBRTgwQjUxNTJFRDAwMDFGMUQ3IC8qIERvY3VtZW50UGFyc2VyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0QTRGNDhBQTE2QjBERkMwMDBFREJCMjkgLyogRG9jdW1lbnRSdWxlU2V0cy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQUQ2RTcxQUQxNjY4ODk5RDAwMzIwQzEzIC8qIERvY3VtZW50
U2hhcmVkT2JqZWN0UG9vbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkJEQjVEQzIyMjdCRDNCODAw
OTE5NzcwIC8qIERvY3VtZW50U3RvcmFnZUFjY2Vzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEI5
MDU2MUEwRjI1NzhCRjAwOTVGRjZBIC8qIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNzEwMjVFRDAxRjk5RjBDRTAwNEEyNTBDIC8qIERvY3VtZW50VGltZWxp
bmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTcxNzI5RjdCMjBGM0JBNDkwMDgwMUNFNiAvKiBEb2N1
bWVudFRpbWVsaW5lT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjU3NSwxMCArMzI1ODMs
MTEgQEAKIAkJCQlDREUzQTg1NzE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVB
VkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q1NEE3NjIxODBGOUY3MDAwQjA3NkM5IC8q
IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE1RjZFMTZCMTMyRUQ0NkUwMDhFREFFMyAvKiBBdXRvY2FwaXRhbGl6ZS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkwNzE5NDI3RjFEMDg4RjIxMDAyQUE1MUQgLyogQVZBc3NldE1JTUVUeXBl
Q2FjaGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREVDQTg5QTFFREY0NDdEMDBEQ0IwOEIgLyog
QVZBc3NldFRyYWNrVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RDNjc1MjIxRUFF
QTlCNzAwNzI3Qzg0IC8qIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0gaW4g
U291cmNlcyAqLywKIAkJCQkwNzAzNjNFMzE4MUExQ0RDMDBDMDc0QTUgLyogQVZDYXB0dXJlRGV2
aWNlTWFuYWdlci5tbSBpbiBTb3VyY2VzICovLAotCQkJCTA3MTk0MjdGMUQwODhGMjEwMDJBQTUx
RCAvKiBBVkFzc2V0TUlNRVR5cGVDYWNoZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNEMTFCM0Ux
MjI3Q0U2RjMwMDIzQUZDNyAvKiBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0QzMzZGNjExN0Y5RjY0NzAwREREQ0QwIC8qIEFWVHJhY2tQcml2
YXRlQVZGT2JqQ0ltcGwubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzAzNjNFNzE4MUExQ0RDMDBD
MDc0QTUgLyogQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QTQ1
MDMyRjE4REI3MTcyMDAzNzdCMzQgLyogQnVmZmVyZWRMaW5lUmVhZGVyLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMzMwMjEsNyArMzMwMzAsNiBAQAogCQkJCURFQ0E4MDM5MUY5RkVENkEwMEUzQjY2
MSAvKiBVbmlmaWVkU291cmNlMjQ4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURFQ0E4MDNBMUY5
RkVENkEwMEUzQjY2MSAvKiBVbmlmaWVkU291cmNlMjQ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CURFQ0E4MDNCMUY5RkVENkEwMEUzQjY2MSAvKiBVbmlmaWVkU291cmNlMjUwLmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCUNEMTFCM0UxMjI3Q0U2RjMwMDIzQUZDNyAvKiBBVlN0cmVhbURhdGFQYXJz
ZXJNSU1FVHlwZUNhY2hlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJREVDQTgwM0MxRjlGRUQ2QTAw
RTNCNjYxIC8qIFVuaWZpZWRTb3VyY2UyNTEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREVDQTgw
M0QxRjlGRUQ2QTAwRTNCNjYxIC8qIFVuaWZpZWRTb3VyY2UyNTIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJREVDQTgwM0UxRjlGRUQ2QTAwRTNCNjYxIC8qIFVuaWZpZWRTb3VyY2UyNTMuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBjZTQyOTI3N2M3ZWFjNjAw
MjIzNzVkOWNiODllOGQ2NTFkNDNkYWEwLi44NmEyYWJkNTViMzllM2U0NzY3MTVkNGYwMWY0YTg5
YzgzNDUwNTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTExMiw3ICsxMTIsNiBAQAog
I2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkludGVyc2Vj
dGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgiCi0j
aW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU0xhenlFdmVudExp
c3RlbmVyLmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIktleWZyYW1l
RWZmZWN0LmgiCkBAIC03NzMxLDE0NyArNzczMCw2IEBAIE9wdGlvbmFsPHVpbnQ2NF90PiBEb2N1
bWVudDo6cGFnZUlEKCkgY29uc3QKICAgICByZXR1cm4gbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50
KCkucGFnZUlEKCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6Omhhc1N0b3JhZ2VBY2Nlc3MoUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQotewotICAgIEFTU0VSVChzZXR0aW5ncygpLnN0b3Jh
Z2VBY2Nlc3NBUElFbmFibGVkKCkpOwotCi0jaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKLSAgICBpZiAobV9mcmFtZSAmJiBoYXNGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzcygp
KSB7Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4odHJ1ZSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIW1fZnJhbWUgfHwgc2VjdXJpdHlPcmlnaW4oKS5p
c1VuaXF1ZSgpKSB7Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4oZmFsc2Up
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGlmIChtX2ZyYW1lLT5pc01haW5G
cmFtZSgpKSB7Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4odHJ1ZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgYXV0byYgc2VjdXJpdHlPcmlnaW4gPSB0
aGlzLT5zZWN1cml0eU9yaWdpbigpOwotICAgIGF1dG8mIHRvcFNlY3VyaXR5T3JpZ2luID0gdG9w
RG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpOwotICAgIGlmIChzZWN1cml0eU9yaWdpbi5lcXVh
bCgmdG9wU2VjdXJpdHlPcmlnaW4pKSB7Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9v
bGVhbj4odHJ1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvIGZyYW1lSUQg
PSBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7Ci0gICAgYXV0byBwYWdlSUQg
PSBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKLSAgICBpZiAoIWZyYW1lSUQg
fHwgIXBhZ2VJRCkgewotICAgICAgICBwcm9taXNlLT5yZWplY3QoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpKSB7Ci0gICAgICAg
IGF1dG8gaWZyYW1lSG9zdCA9IHNlY3VyaXR5T3JpZ2luLmhvc3QoKTsKLSAgICAgICAgYXV0byB0
b3BIb3N0ID0gdG9wU2VjdXJpdHlPcmlnaW4uaG9zdCgpOwotICAgICAgICBwYWdlLT5jaHJvbWUo
KS5jbGllbnQoKS5oYXNTdG9yYWdlQWNjZXNzKFdURk1vdmUoaWZyYW1lSG9zdCksIFdURk1vdmUo
dG9wSG9zdCksIGZyYW1lSUQudmFsdWUoKSwgcGFnZUlELnZhbHVlKCksIFtkb2N1bWVudFJlZmVy
ZW5jZSA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChi
b29sIGhhc0FjY2VzcykgewotICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZG9jdW1l
bnRSZWZlcmVuY2UuZ2V0KCk7Ci0gICAgICAgICAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2
ZTxJRExCb29sZWFuPihoYXNBY2Nlc3MpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSNlbmRpZgotCi0gICAgcHJvbWlzZS0+cmVqZWN0KCk7Ci19Ci0KLXZvaWQgRG9jdW1l
bnQ6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkK
LXsKLSAgICBBU1NFUlQoc2V0dGluZ3MoKS5zdG9yYWdlQWNjZXNzQVBJRW5hYmxlZCgpKTsKLSAg
ICAKLSNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGlmIChtX2ZyYW1l
ICYmIGhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKCkpIHsKLSAgICAgICAgcHJvbWlzZS0+
cmVzb2x2ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGlmICghbV9mcmFt
ZSB8fCBzZWN1cml0eU9yaWdpbigpLmlzVW5pcXVlKCkpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVq
ZWN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKG1fZnJhbWUtPmlz
TWFpbkZyYW1lKCkpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIAotICAgIGF1dG8mIHRvcERvY3VtZW50ID0gdGhpcy0+dG9wRG9jdW1l
bnQoKTsKLSAgICBhdXRvJiB0b3BTZWN1cml0eU9yaWdpbiA9IHRvcERvY3VtZW50LnNlY3VyaXR5
T3JpZ2luKCk7Ci0gICAgYXV0byYgc2VjdXJpdHlPcmlnaW4gPSB0aGlzLT5zZWN1cml0eU9yaWdp
bigpOwotICAgIGlmIChzZWN1cml0eU9yaWdpbi5lcXVhbCgmdG9wU2VjdXJpdHlPcmlnaW4pKSB7
Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICAKLSAgICAvLyBJZiB0aGVyZSBpcyBhIHNhbmRib3gsIGl0IGhhcyB0byBhbGxvdyB0aGUgc3Rv
cmFnZSBhY2Nlc3MgQVBJIHRvIGJlIGNhbGxlZC4KLSAgICBpZiAoc2FuZGJveEZsYWdzKCkgIT0g
U2FuZGJveE5vbmUgJiYgaXNTYW5kYm94ZWQoU2FuZGJveFN0b3JhZ2VBY2Nlc3NCeVVzZXJBY3Rp
dmF0aW9uKSkgewotICAgICAgICBwcm9taXNlLT5yZWplY3QoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIC8vIFRoZSBpZnJhbWUgaGFzIHRvIGJlIGEgZGlyZWN0IGNoaWxkIG9mIHRo
ZSB0b3AgZG9jdW1lbnQuCi0gICAgaWYgKCZ0b3BEb2N1bWVudCAhPSBwYXJlbnREb2N1bWVudCgp
KSB7Ci0gICAgICAgIHByb21pc2UtPnJlamVjdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKCFVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkp
IHsKLSAgICAgICAgcHJvbWlzZS0+cmVqZWN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgCi0gICAgYXV0byBpZnJhbWVIb3N0ID0gc2VjdXJpdHlPcmlnaW4uaG9zdCgpOwotICAgIGF1
dG8gdG9wSG9zdCA9IHRvcFNlY3VyaXR5T3JpZ2luLmhvc3QoKTsKLQotICAgIFBhZ2UqIHBhZ2Ug
PSB0aGlzLT5wYWdlKCk7Ci0gICAgYXV0byBmcmFtZUlEID0gbV9mcmFtZS0+bG9hZGVyKCkuY2xp
ZW50KCkuZnJhbWVJRCgpOwotICAgIGF1dG8gcGFnZUlEID0gbV9mcmFtZS0+bG9hZGVyKCkuY2xp
ZW50KCkucGFnZUlEKCk7Ci0gICAgaWYgKCFwYWdlIHx8ICFmcmFtZUlEIHx8ICFwYWdlSUQpIHsK
LSAgICAgICAgcHJvbWlzZS0+cmVqZWN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKGlm
cmFtZUhvc3QpLCBXVEZNb3ZlKHRvcEhvc3QpLCBmcmFtZUlELnZhbHVlKCksIHBhZ2VJRC52YWx1
ZSgpLCBbZG9jdW1lbnRSZWZlcmVuY2UgPSBtYWtlV2Vha1B0cigqdGhpcyksIHByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpXSAoYm9vbCB3YXNHcmFudGVkKSBtdXRhYmxlIHsKLSAgICAgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gZG9jdW1lbnRSZWZlcmVuY2UuZ2V0KCk7Ci0gICAgICAgIGlmICgh
ZG9jdW1lbnQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICBpZiAod2Fz
R3JhbnRlZCkgewotICAgICAgICAgICAgZG9jdW1lbnQtPnNldEhhc0ZyYW1lU3BlY2lmaWNTdG9y
YWdlQWNjZXNzKHRydWUpOwotICAgICAgICAgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRR
dWV1ZSgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFZvaWRNaWNyb3Rhc2s+KFtkb2N1bWVudFJl
ZmVyZW5jZSA9IG1ha2VXZWFrUHRyKCpkb2N1bWVudCldICgpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoYXV0byogZG9jdW1lbnQgPSBkb2N1bWVudFJlZmVyZW5jZS5nZXQoKSkKLSAgICAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQtPmVuYWJsZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSgpOwotICAg
ICAgICAgICAgfSkpOwotICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwotICAgICAgICAg
ICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPFZvaWRNaWNyb3Rhc2s+KFtkb2N1bWVudFJlZmVyZW5jZSA9IFdURk1vdmUoZG9jdW1lbnRS
ZWZlcmVuY2UpXSAoKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZG9j
dW1lbnRSZWZlcmVuY2UuZ2V0KCkpCi0gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LT5jb25z
dW1lVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCk7Ci0gICAgICAgICAgICB9KSk7Ci0gICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KCk7Ci0gICAgfSk7Ci0jZWxzZQot
ICAgIHByb21pc2UtPnJlamVjdCgpOwotI2VuZGlmCi19Ci0KLXZvaWQgRG9jdW1lbnQ6OmVuYWJs
ZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSgpCi17Ci0gICAgbV90ZW1wb3JhcnlVc2VyR2VzdHVy
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlckdlc3R1cmVJbmRpY2F0b3I+KFByb2Nlc3NpbmdVc2Vy
R2VzdHVyZSwgdGhpcyk7Ci19Ci0KLXZvaWQgRG9jdW1lbnQ6OmNvbnN1bWVUZW1wb3JhcnlUaW1l
VXNlckdlc3R1cmUoKQotewotICAgIG1fdGVtcG9yYXJ5VXNlckdlc3R1cmUgPSBudWxscHRyOwot
fQotCiB2b2lkIERvY3VtZW50OjpyZWdpc3RlckFydGljbGVFbGVtZW50KEVsZW1lbnQmIGFydGlj
bGUpCiB7CiAgICAgbV9hcnRpY2xlRWxlbWVudHMuYWRkKCZhcnRpY2xlKTsKQEAgLTc5MzksMTcg
Kzc3OTcsNiBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVNYWluQXJ0aWNsZUVsZW1lbnRBZnRlckxh
eW91dCgpCiB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotYm9vbCBE
b2N1bWVudDo6aGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MoKSBjb25zdAotewotICAgIHJl
dHVybiBtX2ZyYW1lICYmIG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmhhc0ZyYW1lU3BlY2lm
aWNTdG9yYWdlQWNjZXNzKCk7Ci19Ci0gICAgCi12b2lkIERvY3VtZW50OjpzZXRIYXNGcmFtZVNw
ZWNpZmljU3RvcmFnZUFjY2Vzcyhib29sIHZhbHVlKQotewotICAgIGlmIChtX2ZyYW1lKQotICAg
ICAgICBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5zZXRIYXNGcmFtZVNwZWNpZmljU3RvcmFn
ZUFjY2Vzcyh2YWx1ZSk7Ci19Ci0KIGJvb2wgRG9jdW1lbnQ6Omhhc1JlcXVlc3RlZFBhZ2VTcGVj
aWZpY1N0b3JhZ2VBY2Nlc3NXaXRoVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBkb21haW4pCiB7CiAgICAgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW5SZXF1ZXN0ZWRQ
YWdlU3BlY2lmaWNTdG9yYWdlQWNjZXNzV2l0aFVzZXJJbnRlcmFjdGlvbiA9PSBkb21haW47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCmluZGV4IGExZjFmMzA4NTUzMmVjNGNiZjY5MTg5MDk2YzQ4NmI5MWQw
MGJkOTguLjEzNWVmMGI2Y2Q4Y2U1NTE1Y2U0NzFlYWMyMDIzZmZhOGU0ODc1N2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCkBAIC0xMDgsNyArMTA4LDYgQEAgY2xhc3MgRE9NV2luZG93OwogY2xhc3Mg
RE9NV3JhcHBlcldvcmxkOwogY2xhc3MgRGF0YWJhc2U7CiBjbGFzcyBEYXRhYmFzZVRocmVhZDsK
LWNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBE
b2N1bWVudExvYWRlcjsKIGNsYXNzIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjsKQEAgLTE0NjUs
MTAgKzE0NjQsNiBAQCBwdWJsaWM6CiAKICAgICBMb2dnZXImIGxvZ2dlcigpOwogCi0gICAgdm9p
ZCBoYXNTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcGFzc2VkUHJvbWlzZSk7
Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBh
c3NlZFByb21pc2UpOwotICAgIHZvaWQgc2V0VXNlckdyYW50c1N0b3JhZ2VBY2Nlc3NPdmVycmlk
ZShib29sIHZhbHVlKSB7IG1fZ3JhbnRTdG9yYWdlQWNjZXNzT3ZlcnJpZGUgPSB2YWx1ZTsgfQot
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb25zb2xlTWVzc2FnZUxpc3RlbmVyKFJlZlB0
cjxTdHJpbmdDYWxsYmFjaz4mJik7IC8vIEZvciB0ZXN0aW5nLgogCiAgICAgV0VCQ09SRV9FWFBP
UlQgRG9jdW1lbnRUaW1lbGluZSYgdGltZWxpbmUoKTsKQEAgLTE1MDIsOCArMTQ5Nyw2IEBAIHB1
YmxpYzoKIAogICAgIFN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5z
aWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3Qg
VVJMJik7CiAKLSAgICB2b2lkIGNvbnN1bWVUZW1wb3JhcnlUaW1lVXNlckdlc3R1cmUoKTsKLQog
ICAgIHZvaWQgcmVnaXN0ZXJBcnRpY2xlRWxlbWVudChFbGVtZW50Jik7CiAgICAgdm9pZCB1bnJl
Z2lzdGVyQXJ0aWNsZUVsZW1lbnQoRWxlbWVudCYpOwogICAgIHZvaWQgdXBkYXRlTWFpbkFydGlj
bGVFbGVtZW50QWZ0ZXJMYXlvdXQoKTsKQEAgLTE2NDUsOCArMTYzOCw2IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIHBsYXRmb3JtU3VzcGVuZE9yU3RvcEFjdGl2ZURPTU9iamVjdHMoKTsKIAotICAg
IHZvaWQgZW5hYmxlVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCk7Ci0KICAgICBib29sIGlzQm9k
eVBvdGVudGlhbGx5U2Nyb2xsYWJsZShIVE1MQm9keUVsZW1lbnQmKTsKIAogICAgIGNvbnN0IFJl
ZjxTZXR0aW5ncz4gbV9zZXR0aW5nczsKQEAgLTE4NTEsMTEgKzE4NDIsNiBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBkaWRMb2dNZXNzYWdlKGNvbnN0IFdURkxvZ0NoYW5uZWwmLCBXVEZMb2dMZXZl
bCwgVmVjdG9yPEpTT05Mb2dWYWx1ZT4mJikgZmluYWw7CiAKLSNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQotICAgIGJvb2wgaGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3Mo
KSBjb25zdDsKLSAgICB2b2lkIHNldEhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKGJvb2wp
OwotI2VuZGlmCi0KICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgc3RkOjp1bmlxdWVfcHRyPERldmljZU1vdGlvbkNsaWVudD4gbV9k
ZXZpY2VNb3Rpb25DbGllbnQ7CkBAIC0yMDMzLDggKzIwMTksNiBAQCBwcml2YXRlOgogCiAgICAg
c3RhdGljIGJvb2wgaGFzRXZlckNyZWF0ZWRBbkFYT2JqZWN0Q2FjaGU7CiAKLSAgICBib29sIG1f
Z3JhbnRTdG9yYWdlQWNjZXNzT3ZlcnJpZGUgeyBmYWxzZSB9OwotCiAgICAgUmVmUHRyPERvY3Vt
ZW50VGltZWxpbmU+IG1fdGltZWxpbmU7CiAgICAgRG9jdW1lbnRJZGVudGlmaWVyIG1faWRlbnRp
ZmllcjsKIApAQCAtMjA0OCw4ICsyMDMyLDYgQEAgcHJpdmF0ZToKICAgICBSZWdpc3RyYWJsZURv
bWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluUmVxdWVzdGVkUGFnZVNwZWNpZmljU3RvcmFnZUFjY2Vz
c1dpdGhVc2VySW50ZXJhY3Rpb24geyB9OwogI2VuZGlmCiAgICAgCi0gICAgc3RkOjp1bmlxdWVf
cHRyPFVzZXJHZXN0dXJlSW5kaWNhdG9yPiBtX3RlbXBvcmFyeVVzZXJHZXN0dXJlOwotCiAgICAg
Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0IG1fQ1NTUmVnaXN0ZXJlZFByb3BlcnR5U2V0
OwogCiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbApp
bmRleCA0M2I5MTEwMjgyOTRhZDNmYmYxNzgwZDc5YTAzMmI4ZTA5NTMzNGNlLi41NjQ5YjZjM2M3
MDg1MGE5Y2U0NjgwZWMxOGRlNWJmZGIyMzI3MWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwK
QEAgLTE3MywxMCArMTczLDYgQEAgdHlwZWRlZiAoCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90
IHN0YW5kYXJkIGFuZCBoYXMgYmVlbiBkcm9wcGVkIGZyb20gQmxpbmsgYWxyZWFkeS4KICAgICBS
ZW5kZXJpbmdDb250ZXh0PyBnZXRDU1NDYW52YXNDb250ZXh0KERPTVN0cmluZyBjb250ZXh0SWQs
IERPTVN0cmluZyBuYW1lLCBsb25nIHdpZHRoLCBsb25nIGhlaWdodCk7CiAKLSAgICAvLyBOb24g
c3RhbmRhcmQsIHRvIGJyaW5nIHVwIHdpdGggc3RhbmRhcmRzIHdvcmtpbmcgZ3JvdXAuCi0gICAg
W0VuYWJsZWRCeVNldHRpbmc9U3RvcmFnZUFjY2Vzc0FQSV0gUHJvbWlzZTxib29sPiBoYXNTdG9y
YWdlQWNjZXNzKCk7Ci0gICAgW0VuYWJsZWRCeVNldHRpbmc9U3RvcmFnZUFjY2Vzc0FQSV0gUHJv
bWlzZTx2b2lkPiByZXF1ZXN0U3RvcmFnZUFjY2VzcygpOwotCiAgICAgLy8gT2Jzb2xldGUgZmVh
dHVyZXMgZnJvbSBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9vYnNvbGV0
ZS5odG1sCiAKICAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlT
dHJpbmddIERPTVN0cmluZyBmZ0NvbG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRT
dG9yYWdlQWNjZXNzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTMzYWE5MGY5ZDJmZTQ3NzgyYmViZDhiZTM1
Nzg0YmMwNmU2ZDg1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50U3RvcmFnZUFjY2Vzcy5jcHAKQEAgLTAsMCArMSwyMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmgiCisKKyNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorCisjaW5jbHVkZSAiQ2hyb21lLmgi
CisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNs
dWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiRnJhbWVM
b2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1
ZGUgIk1pY3JvdGFza3MuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUmVnaXN0cmFi
bGVEb21haW4uaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNldHRp
bmdzLmgiCisjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitEb2N1bWVudFN0b3JhZ2VBY2Nlc3MqIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6
ZnJvbShEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgYXV0byogc3VwcGxlbWVudCA9IHN0YXRp
Y19jYXN0PERvY3VtZW50U3RvcmFnZUFjY2Vzcyo+KFN1cHBsZW1lbnQ8RG9jdW1lbnQ+Ojpmcm9t
KCZkb2N1bWVudCwgc3VwcGxlbWVudE5hbWUoKSkpOworICAgIGlmICghc3VwcGxlbWVudCkgewor
ICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERvY3VtZW50U3Rv
cmFnZUFjY2Vzcz4oZG9jdW1lbnQpOworICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVu
dC5nZXQoKTsKKyAgICAgICAgcHJvdmlkZVRvKCZkb2N1bWVudCwgc3VwcGxlbWVudE5hbWUoKSwg
V1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CisgICAgfQorICAgIHJldHVybiBzdXBwbGVtZW50Owor
fQorCitjb25zdCBjaGFyKiBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnN1cHBsZW1lbnROYW1lKCkK
K3sKKyAgICByZXR1cm4gIkRvY3VtZW50U3RvcmFnZUFjY2VzcyI7Cit9CisKK3ZvaWQgRG9jdW1l
bnRTdG9yYWdlQWNjZXNzOjpoYXNTdG9yYWdlQWNjZXNzKERvY3VtZW50JiBkb2N1bWVudCwgUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQoreworICAgIERvY3VtZW50U3RvcmFnZUFjY2Vz
czo6ZnJvbShkb2N1bWVudCktPmhhc1N0b3JhZ2VBY2Nlc3MoV1RGTW92ZShwcm9taXNlKSk7Cit9
CisKK3ZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhEb2N1
bWVudCYgZG9jdW1lbnQsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3sKKyAgICBE
b2N1bWVudFN0b3JhZ2VBY2Nlc3M6OmZyb20oZG9jdW1lbnQpLT5yZXF1ZXN0U3RvcmFnZUFjY2Vz
cyhXVEZNb3ZlKHByb21pc2UpKTsKK30KKwordm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6Omhh
c1N0b3JhZ2VBY2Nlc3MoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQoreworICAgIEFT
U0VSVChtX2RvY3VtZW50LnNldHRpbmdzKCkuc3RvcmFnZUFjY2Vzc0FQSUVuYWJsZWQoKSk7CisK
KyAgICBpZiAobV9kb2N1bWVudC5mcmFtZSgpICYmIGhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNj
ZXNzKCkpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPih0cnVlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoIW1fZG9jdW1lbnQuZnJhbWUoKSB8
fCBtX2RvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuaXNVbmlxdWUoKSkgeworICAgICAgICBwcm9t
aXNlLT5yZXNvbHZlPElETEJvb2xlYW4+KGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAKKyAgICBpZiAobV9kb2N1bWVudC5mcmFtZSgpLT5pc01haW5GcmFtZSgpKSB7CisgICAg
ICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4odHJ1ZSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgYXV0byYgc2VjdXJpdHlPcmlnaW4gPSBtX2RvY3VtZW50LnNlY3Vy
aXR5T3JpZ2luKCk7CisgICAgYXV0byYgdG9wU2VjdXJpdHlPcmlnaW4gPSBtX2RvY3VtZW50LnRv
cERvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKTsKKyAgICBpZiAoc2VjdXJpdHlPcmlnaW4uZXF1
YWwoJnRvcFNlY3VyaXR5T3JpZ2luKSkgeworICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEJv
b2xlYW4+KHRydWUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGF1dG8gZnJh
bWVJRCA9IG1fZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwor
ICAgIGF1dG8gcGFnZUlEID0gbV9kb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5w
YWdlSUQoKTsKKyAgICBpZiAoIWZyYW1lSUQgfHwgIXBhZ2VJRCkgeworICAgICAgICBwcm9taXNl
LT5yZWplY3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoUGFnZSog
cGFnZSA9IG1fZG9jdW1lbnQucGFnZSgpKSB7CisgICAgICAgIGF1dG8gc3ViRnJhbWVEb21haW4g
PSBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qoc2VjdXJpdHlPcmln
aW4uaG9zdCgpKTsKKyAgICAgICAgYXV0byB0b3BGcmFtZURvbWFpbiA9IFJlZ2lzdHJhYmxlRG9t
YWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdCh0b3BTZWN1cml0eU9yaWdpbi5ob3N0KCkpOwor
ICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5oYXNTdG9yYWdlQWNjZXNzKFdURk1vdmUo
c3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRC52YWx1ZSgp
LCBwYWdlSUQudmFsdWUoKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKV0gKGJvb2wgaGFzQWNjZXNzKSB7CisgICAgICAgICAgICBEb2N1
bWVudFN0b3JhZ2VBY2Nlc3MqIGRvY3VtZW50ID0gd2Vha1RoaXMuZ2V0KCk7CisgICAgICAgICAg
ICBpZiAoIWRvY3VtZW50KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPihoYXNBY2Nlc3MpOworICAg
ICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBwcm9taXNlLT5yZWpl
Y3QoKTsKK30KKwordm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNj
ZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3sKKyAgICBBU1NFUlQobV9kb2N1
bWVudC5zZXR0aW5ncygpLnN0b3JhZ2VBY2Nlc3NBUElFbmFibGVkKCkpOworICAgIAorICAgIGlm
IChtX2RvY3VtZW50LmZyYW1lKCkgJiYgaGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MoKSkg
eworICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgCisgICAgaWYgKCFtX2RvY3VtZW50LmZyYW1lKCkgfHwgbV9kb2N1bWVudC5zZWN1cml0eU9y
aWdpbigpLmlzVW5pcXVlKCkpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKG1fZG9jdW1lbnQuZnJhbWUoKS0+aXNNYWlu
RnJhbWUoKSkgeworICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgYXV0byYgdG9wRG9jdW1lbnQgPSBtX2RvY3VtZW50LnRvcERvY3Vt
ZW50KCk7CisgICAgYXV0byYgdG9wU2VjdXJpdHlPcmlnaW4gPSB0b3BEb2N1bWVudC5zZWN1cml0
eU9yaWdpbigpOworICAgIGF1dG8mIHNlY3VyaXR5T3JpZ2luID0gbV9kb2N1bWVudC5zZWN1cml0
eU9yaWdpbigpOworICAgIGlmIChzZWN1cml0eU9yaWdpbi5lcXVhbCgmdG9wU2VjdXJpdHlPcmln
aW4pKSB7CisgICAgICAgIHByb21pc2UtPnJlc29sdmUoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICAKKyAgICAvLyBJZiB0aGVyZSBpcyBhIHNhbmRib3gsIGl0IGhhcyB0byBhbGxvdyB0
aGUgc3RvcmFnZSBhY2Nlc3MgQVBJIHRvIGJlIGNhbGxlZC4KKyAgICBpZiAobV9kb2N1bWVudC5z
YW5kYm94RmxhZ3MoKSAhPSBTYW5kYm94Tm9uZSAmJiBtX2RvY3VtZW50LmlzU2FuZGJveGVkKFNh
bmRib3hTdG9yYWdlQWNjZXNzQnlVc2VyQWN0aXZhdGlvbikpIHsKKyAgICAgICAgcHJvbWlzZS0+
cmVqZWN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgLy8gVGhlIGlmcmFt
ZSBoYXMgdG8gYmUgYSBkaXJlY3QgY2hpbGQgb2YgdGhlIHRvcCBkb2N1bWVudC4KKyAgICBpZiAo
JnRvcERvY3VtZW50ICE9IG1fZG9jdW1lbnQucGFyZW50RG9jdW1lbnQoKSkgeworICAgICAgICBw
cm9taXNlLT5yZWplY3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAo
IVVzZXJHZXN0dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkgeworICAgICAg
ICBwcm9taXNlLT5yZWplY3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFBhZ2Uq
IHBhZ2UgPSBtX2RvY3VtZW50LnBhZ2UoKTsKKyAgICBhdXRvIGZyYW1lSUQgPSBtX2RvY3VtZW50
LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKTsKKyAgICBhdXRvIHBhZ2VJRCA9
IG1fZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CisgICAgaWYg
KCFwYWdlIHx8ICFmcmFtZUlEIHx8ICFwYWdlSUQpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgYXV0byBzdWJGcmFtZURvbWFp
biA9IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChzZWN1cml0eU9y
aWdpbi5ob3N0KCkpOworICAgIGF1dG8gdG9wRnJhbWVEb21haW4gPSBSZWdpc3RyYWJsZURvbWFp
bjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QodG9wU2VjdXJpdHlPcmlnaW4uaG9zdCgpKTsKKyAg
ICAKKyAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhXVEZN
b3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQudmFs
dWUoKSwgcGFnZUlELnZhbHVlKCksIFtkb2N1bWVudFJlZmVyZW5jZSA9IG1ha2VXZWFrUHRyKCp0
aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChTdG9yYWdlQWNjZXNzV2FzR3JhbnRl
ZCB3YXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24p
IG11dGFibGUgeworICAgICAgICBEb2N1bWVudFN0b3JhZ2VBY2Nlc3MqIGRvY3VtZW50ID0gZG9j
dW1lbnRSZWZlcmVuY2UuZ2V0KCk7CisgICAgICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgLy8gQ29uc3VtZSB0aGUgdXNlciBnZXN0dXJlIG9ubHkgaWYg
dGhlIHVzZXIgZXhwbGljaXRseSBkZW5pZWQgYWNjZXNzLgorICAgICAgICBib29sIHNob3VsZFBy
ZXNlcnZlVXNlckdlc3R1cmUgPSB3YXNHcmFudGVkID09IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
OjpZZXMgfHwgcHJvbXB0V2FzU2hvd24gPT0gU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpO
bzsKKworICAgICAgICBpZiAoc2hvdWxkUHJlc2VydmVVc2VyR2VzdHVyZSkgeworICAgICAgICAg
ICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPFZvaWRNaWNyb3Rhc2s+KFtkb2N1bWVudFJlZmVyZW5jZSA9IG1ha2VXZWFrUHRyKCpkb2N1
bWVudCldICgpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBkb2N1bWVu
dFJlZmVyZW5jZS5nZXQoKSkKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQtPmVuYWJsZVRl
bXBvcmFyeVRpbWVVc2VyR2VzdHVyZSgpOworICAgICAgICAgICAgfSkpOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKHdhc0dyYW50ZWQgPT0gU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Olllcykg
eworICAgICAgICAgICAgZG9jdW1lbnQtPnNldEhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNz
KHRydWUpOworICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOworICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIHByb21pc2UtPnJlamVjdCgpOworCisgICAgICAgIGlmIChzaG91bGRQcmVz
ZXJ2ZVVzZXJHZXN0dXJlKSB7CisgICAgICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVh
ZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Vm9pZE1pY3JvdGFzaz4oW2RvY3VtZW50
UmVmZXJlbmNlID0gV1RGTW92ZShkb2N1bWVudFJlZmVyZW5jZSldICgpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBkb2N1bWVudFJlZmVyZW5jZS5nZXQoKSkKKyAgICAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQtPmNvbnN1bWVUZW1wb3JhcnlUaW1lVXNlckdlc3R1cmUo
KTsKKyAgICAgICAgICAgIH0pKTsKKyAgICAgICAgfQorICAgIH0pOworfQorCit2b2lkIERvY3Vt
ZW50U3RvcmFnZUFjY2Vzczo6ZW5hYmxlVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCkKK3sKKyAg
ICBtX3RlbXBvcmFyeVVzZXJHZXN0dXJlID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyR2VzdHVyZUlu
ZGljYXRvcj4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCAmbV9kb2N1bWVudCk7Cit9CisKK3ZvaWQg
RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpjb25zdW1lVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCkK
K3sKKyAgICBtX3RlbXBvcmFyeVVzZXJHZXN0dXJlID0gbnVsbHB0cjsKK30KKworYm9vbCBEb2N1
bWVudFN0b3JhZ2VBY2Nlc3M6Omhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKCkgY29uc3QK
K3sKKyAgICBhdXRvKiBmcmFtZSA9IG1fZG9jdW1lbnQuZnJhbWUoKTsKKyAgICByZXR1cm4gZnJh
bWUgJiYgZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNj
ZXNzKCk7Cit9CisKK3ZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpzZXRIYXNGcmFtZVNwZWNp
ZmljU3RvcmFnZUFjY2Vzcyhib29sIHZhbHVlKQoreworICAgIGlmIChhdXRvKiBmcmFtZSA9IG1f
ZG9jdW1lbnQuZnJhbWUoKSkKKyAgICAgICAgZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnNldEhh
c0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKHZhbHVlKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTZm
OGMxOWQzOGFhYzMzMGNlZjVhZDRkMzM4NzVhZTUzMTVhNDVjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5oCkBAIC0wLDAgKzEsNzcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCisKKyNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgorI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGVmZXJyZWRQcm9t
aXNlOworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBVc2VyR2VzdHVyZUluZGljYXRvcjsKKworZW51
bSBjbGFzcyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA6IGJvb2wgeworICAgIE5vLAorICAgIFll
cworfTsKKworZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gOiBib29sIHsK
KyAgICBObywKKyAgICBZZXMKK307CisKK2NsYXNzIERvY3VtZW50U3RvcmFnZUFjY2VzcyBmaW5h
bCA6IHB1YmxpYyBTdXBwbGVtZW50PERvY3VtZW50PiwgcHVibGljIENhbk1ha2VXZWFrUHRyPERv
Y3VtZW50U3RvcmFnZUFjY2Vzcz4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIGV4cGxpY2l0IERvY3VtZW50U3RvcmFnZUFjY2VzcyhEb2N1bWVudCYgZG9jdW1l
bnQpCisgICAgICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKKyAgICB7CisgICAgfQorCisgICAg
c3RhdGljIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhEb2N1bWVudCYsIFJlZjxEZWZlcnJlZFByb21p
c2U+JiYpOworICAgIHN0YXRpYyB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKERvY3VtZW50Jiwg
UmVmPERlZmVycmVkUHJvbWlzZT4mJik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBoYXNTdG9yYWdl
QWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VB
Y2Nlc3MoUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CisgICAgc3RhdGljIERvY3VtZW50U3RvcmFn
ZUFjY2VzcyogZnJvbShEb2N1bWVudCYpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVt
ZW50TmFtZSgpOworICAgIGJvb2wgaGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MoKSBjb25z
dDsKKyAgICB2b2lkIHNldEhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKGJvb2wpOworICAg
IHZvaWQgZW5hYmxlVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCk7CisgICAgdm9pZCBjb25zdW1l
VGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VXNlckdl
c3R1cmVJbmRpY2F0b3I+IG1fdGVtcG9yYXJ5VXNlckdlc3R1cmU7CisgICAgCisgICAgRG9jdW1l
bnQmIG1fZG9jdW1lbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRTdG9yYWdlQWNjZXNzLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZGUzYzVmMjBjNzQ1NGRlNGYw
ZjRhMzM5NzJmN2IwYzAxZTc3NGUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5pZGwKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKK1sKKyAgICBDb25kaXRpb25hbD1SRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MsCitdIHBhcnRp
YWwgaW50ZXJmYWNlIERvY3VtZW50IHsKKyAgICBQcm9taXNlPGJvb2w+IGhhc1N0b3JhZ2VBY2Nl
c3MoKTsKKyAgICBQcm9taXNlPHZvaWQ+IHJlcXVlc3RTdG9yYWdlQWNjZXNzKCk7Cit9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggY2RkZjEzY2FlODg5MzBlMjM2ZTk0MDlmOTJl
ZmMyZmZkNDBiZjVkOS4uODcxZTQxNTIzZTBiYWUyODc3NGI3OWI2ZWE2YTM1ODQ5ZWMyMWUzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVk
ZSAiRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZS5oIgogI2luY2x1ZGUg
IkRpc2FibGVkQWRhcHRhdGlvbnMuaCIKICNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3Iu
aCIKKyNpbmNsdWRlICJEb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaCIKICNpbmNsdWRlICJGb2N1c0Rp
cmVjdGlvbi5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCkBAIC00MCw2ICs0MSw3IEBACiAjaW5jbHVkZSAiTWVkaWFQcm9kdWNlci5oIgog
I2luY2x1ZGUgIlBvcHVwTWVudS5oIgogI2luY2x1ZGUgIlBvcHVwTWVudUNsaWVudC5oIgorI2lu
Y2x1ZGUgIlJlZ2lzdHJhYmxlRG9tYWluLmgiCiAjaW5jbHVkZSAiUmVuZGVyRW1iZWRkZWRPYmpl
Y3QuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3Jk
aW5hdG9yLmgiCkBAIC00ODMsOCArNDg1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
cmVwb3J0UHJvY2Vzc0NQVVRpbWUoU2Vjb25kcywgQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5n
KSB7IH0KICAgICB2aXJ0dWFsIFJlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9yRmlsZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIC8qIGZpbGVuYW1lcyAqLykgPSAwOwogCi0gICAgdmlydHVhbCB2b2lk
IGhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgLypzdWJGcmFtZUhvc3QqLywgU3RyaW5nJiYgLyp0
b3BGcmFtZUhvc3QqLywgdWludDY0X3QgLypmcmFtZUlEKi8sIHVpbnQ2NF90IC8qcGFnZUlEKi8s
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2spIHsgY2FsbGJh
Y2soZmFsc2UpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmlu
ZyYmIC8qc3ViRnJhbWVIb3N0Ki8sIFN0cmluZyYmIC8qdG9wRnJhbWVIb3N0Ki8sIHVpbnQ2NF90
IC8qZnJhbWVJRCovLCB1aW50NjRfdCAvKnBhZ2VJRCovLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKGZhbHNlKTsgfQorI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgdmlydHVhbCB2b2lkIGhhc1N0b3JhZ2VB
Y2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiAvKnN1YkZyYW1lRG9tYWluKi8sIFJlZ2lzdHJhYmxl
RG9tYWluJiYgLyp0b3BGcmFtZURvbWFpbiovLCB1aW50NjRfdCAvKmZyYW1lSUQqLywgdWludDY0
X3QgLypwYWdlSUQqLywgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsgfQorICAgIHZpcnR1YWwg
dm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIC8qc3ViRnJhbWVE
b21haW4qLywgUmVnaXN0cmFibGVEb21haW4mJiAvKnRvcEZyYW1lRG9tYWluKi8sIHVpbnQ2NF90
IC8qZnJhbWVJRCovLCB1aW50NjRfdCAvKnBhZ2VJRCovLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93
bik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoU3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQ6Ok5vLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vKTsgfQorI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQogICAgIHZpcnR1YWwgdm9pZCBz
aG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzKEZyYW1lJiwgYm9vbCAv
KiBtYXlQcm9tcHQgKi8sIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChEZXZpY2VPcmllbnRh
dGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRlKT4mJiBjYWxsYmFjaykgeyBjYWxsYmFjayhEZXZp
Y2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRlOjpEZW5pZWQpOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZDRjZDQwYjdlYjhkNjRjYThhMzc5MjI0MGQx
YmMyMDI5ZmU3MDljOC4uM2I3NjE0YmQxMDhlMmIwMGM4NmMyNTJmZjNmZjBlYTRjM2M4OGE2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNDM3NywxNSArNDM3Nyw2IEBA
IHZvaWQgSW50ZXJuYWxzOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sIGVu
YWJsZSkKICAgICBEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKGVuYWJsZSk7CiB9CiAKLXZvaWQgSW50ZXJuYWxzOjpzZXRVc2VyR3JhbnRz
U3RvcmFnZUFjY2Vzcyhib29sIHZhbHVlKQotewotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNv
bnRleHREb2N1bWVudCgpOwotICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGRvY3VtZW50LT5zZXRVc2VyR3JhbnRzU3RvcmFnZUFjY2Vzc092ZXJyaWRlKHZhbHVlKTsK
LX0KLQogU3RyaW5nIEludGVybmFsczo6Y29tcG9zZWRUcmVlQXNUZXh0KE5vZGUmIG5vZGUpCiB7
CiAgICAgaWYgKCFpczxDb250YWluZXJOb2RlPihub2RlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCmluZGV4IDQ5MTE5N2E4NmQxNzc2ODBlYmU3ZDU4OWM4NDBjYTkxM2Q3NjBiOTAuLjdk
YzUyNzY2MWYxMTQxODQ1ZDJhNDNlZmFlODg1ODkzMmYxNTJkNzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaApAQCAtNjM5LDcgKzYzOSw2IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVVJMKGNvbnN0IERPTVVSTCYpOwogICAgIHZvaWQgc2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCk7Ci0gICAgdm9pZCBzZXRVc2VyR3Jh
bnRzU3RvcmFnZUFjY2Vzcyhib29sKTsKIAogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKICAgICBi
b29sIGlzUmVhZGFibGVTdHJlYW1EaXN0dXJiZWQoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFs
dWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDc4ZDRiODhhNjUxODIx
NThhMzVjNzhiNWJjZDJkZGVjNDU1MWUzOWQuLjVjN2IyMzYyNjYwOGFiYjUzNjY5NGYwOTQ2OGVm
M2I4NDQ3YmRjNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTYyNSw3
ICs2MjUsNiBAQCBlbnVtIENvbXBvc2l0aW5nUG9saWN5IHsKIAogICAgIERPTVN0cmluZyByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRm9yVVJMKERPTVVSTCB1cmwpOwogICAgIHZvaWQgc2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbGVhbiBlbmFibGUpOwotICAgIFtFbmFibGVkQnlT
ZXR0aW5nPVN0b3JhZ2VBY2Nlc3NBUEldIHZvaWQgc2V0VXNlckdyYW50c1N0b3JhZ2VBY2Nlc3Mo
Ym9vbGVhbiB2YWx1ZSk7CiAKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0Q2FuU2hv
d01vZGFsRGlhbG9nT3ZlcnJpZGUoYm9vbGVhbiBhbGxvdyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IDVjMjc2YWJh
OGJiZjIwYzlmZmZhZWIxMGZhMTgxY2ZkYTM3M2YyNWQuLmM2Yjg0NWY0NGEyMGJjMjdhZmYwMzg1
YzcyNWI1ZGY5NWNmMjJlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIldl
YlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxl
bWV0cnkuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0tleWVkQ29kaW5n
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaD4KQEAgLTQ1Myw3ICs0NTQsNyBAQCB1
bnNpZ25lZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluSUQoY29u
c3QgUmVnaXN0cmFibGVEb21haW4mCiAgICAgcmV0dXJuIGRvbWFpbklEOwogfQogCi12b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnREb21haW5SZWxhdGlvbnNo
aXBzKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmIGxvYWRTdGF0aXN0aWNz
KQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0RG9tYWlu
UmVsYXRpb25zaGlwcyhjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBsb2FkU3RhdGlzdGlj
cykKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtNzY4LDcgKzc2OSw3
IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9y
YWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYKICAgICB9OwogCiAgICAgYXV0byB1c2VyV2FzUHJv
bXB0ZWRFYXJsaWVyID0gaGFzVXNlckdyYW50ZWRTdG9yYWdlQWNjZXNzVGhyb3VnaFByb21wdChz
dWJGcmFtZVN0YXR1cy5zZWNvbmQsIHRvcEZyYW1lRG9tYWluKTsKLSAgICBpZiAoIXVzZXJXYXNQ
cm9tcHRlZEVhcmxpZXIpIHsKKyAgICBpZiAodXNlcldhc1Byb21wdGVkRWFybGllciA9PSBTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vKSB7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CiAgICAgICAgIFJFTEVBU0VfTE9HX0lORk9fSUYoZGVidWdMb2dnaW5nRW5hYmxlZCgpLCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGVidWcsICJBYm91dCB0byBhc2sgdGhlIHVzZXIgd2hldGhlciB0
aGV5IHdhbnQgdG8gZ3JhbnQgc3RvcmFnZSBhY2Nlc3MgdG8gJXtwdWJsaWN9cyB1bmRlciAle3B1
YmxpY31zIG9yIG5vdC4iLCBzdWJGcmFtZURvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0
b3BGcmFtZURvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgpAQCAtNzc3LDcg
Kzc3OCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVl
c3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYKICAgICB9CiAKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKLSAgICBpZiAodXNlcldhc1Byb21wdGVkRWFybGllcikKKyAgICBpZiAodXNl
cldhc1Byb21wdGVkRWFybGllciA9PSBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246OlllcykK
ICAgICAgICAgUkVMRUFTRV9MT0dfSU5GT19JRihkZWJ1Z0xvZ2dpbmdFbmFibGVkKCksIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEZWJ1ZywgIlN0b3JhZ2UgYWNjZXNzIHdhcyBncmFudGVkIHRvICV7
cHVibGljfXMgdW5kZXIgJXtwdWJsaWN9cy4iLCBzdWJGcmFtZURvbWFpbi5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCB0b3BGcmFtZURvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICNlbmRp
ZgogCkBAIC03ODgsOCArNzg5LDggQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgCi0gICAgZ3JhbnRTdG9yYWdlQWNjZXNz
SW50ZXJuYWwoV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4p
LCBmcmFtZUlELCBwYWdlSUQsIHVzZXJXYXNQcm9tcHRlZEVhcmxpZXIsIFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCB3YXNHcmFudGVkQWNjZXNz
KSBtdXRhYmxlIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod2FzR3JhbnRlZEFjY2VzcyA/
IFN0b3JhZ2VBY2Nlc3NTdGF0dXM6Okhhc0FjY2VzcyA6IFN0b3JhZ2VBY2Nlc3NTdGF0dXM6OkNh
bm5vdFJlcXVlc3RBY2Nlc3MpOworICAgIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdURk1v
dmUoc3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgcGFn
ZUlELCB1c2VyV2FzUHJvbXB0ZWRFYXJsaWVyLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0gKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQp
IG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3YXNHcmFudGVkID09IFN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMgPyBTdG9yYWdlQWNjZXNzU3RhdHVzOjpIYXNBY2Nlc3Mg
OiBTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5ub3RSZXF1ZXN0QWNjZXNzKTsKICAgICB9KTsKIH0K
IApAQCAtODA5LDQ2ICs4MTAsNDYgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW4KICNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKICAgICBSRUxFQVNFX0xPR19JTkZPX0lGKGRlYnVnTG9nZ2luZ0Vu
YWJsZWQoKSwgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnLCAiW1RlbXBvcmFyeSBjb21iYXRp
YmlsaXR5IGZpeF0gU3RvcmFnZSBhY2Nlc3Mgd2FzIGdyYW50ZWQgZm9yICV7cHVibGljfXMgdW5k
ZXIgb3BlbmVyIHBhZ2UgZnJvbSAle3B1YmxpY31zLCB3aXRoIHVzZXIgaW50ZXJhY3Rpb24gaW4g
dGhlIG9wZW5lZCB3aW5kb3cuIiwgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCksIG9wZW5lckRvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICNl
bmRpZgotICAgIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoZG9tYWluSW5OZWVk
T2ZTdG9yYWdlQWNjZXNzKSwgV1RGTW92ZShvcGVuZXJEb21haW4pLCBXVEY6Om51bGxvcHQsIG9w
ZW5lclBhZ2VJRCwgZmFsc2UsIFtdKGJvb2wpIHsgfSk7CisgICAgZ3JhbnRTdG9yYWdlQWNjZXNz
SW50ZXJuYWwoV1RGTW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpLCBXVEZNb3ZlKG9w
ZW5lckRvbWFpbiksIFdURjo6bnVsbG9wdCwgb3BlbmVyUGFnZUlELCBTdG9yYWdlQWNjZXNzUHJv
bXB0V2FzU2hvd246Ok5vLCBbXShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCkgeyB9KTsKIH0KIAot
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNj
ZXNzKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9w
RnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCB1c2Vy
V2FzUHJvbXB0ZWROb3csIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFu
dFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVE
b21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlE
LCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgaWYgKHVzZXJXYXNQ
cm9tcHRlZE5vdykgeworICAgIGlmIChwcm9tcHRXYXNTaG93biA9PSBTdG9yYWdlQWNjZXNzUHJv
bXB0V2FzU2hvd246OlllcykgewogICAgICAgICBhdXRvIHN1YkZyYW1lU3RhdHVzID0gZW5zdXJl
UmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oc3ViRnJhbWVEb21haW4pOwog
ICAgICAgICBBU1NFUlQoc3ViRnJhbWVTdGF0dXMuZmlyc3QgPT0gQWRkZWRSZWNvcmQ6Ok5vKTsK
ICAgICAgICAgQVNTRVJUKGhhc0hhZFVzZXJJbnRlcmFjdGlvbihzdWJGcmFtZURvbWFpbiwgT3Bl
cmF0aW5nRGF0ZXNXaW5kb3c6OkxvbmcpKTsKICAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25z
aGlwKG1fc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zU3RhdGVtZW50LCBzdWJGcmFt
ZVN0YXR1cy5zZWNvbmQsIHRvcEZyYW1lRG9tYWluKTsKICAgICB9CiAKLSAgICBncmFudFN0b3Jh
Z2VBY2Nlc3NJbnRlcm5hbChXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFt
ZURvbWFpbiksIGZyYW1lSUQsIHBhZ2VJRCwgdXNlcldhc1Byb21wdGVkTm93LCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CisgICAgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92
ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBwYWdl
SUQsIHByb21wdFdhc1Nob3duLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vz
c0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWlu
JiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJRCBwYWdl
SUQsIGJvb2wgdXNlcldhc1Byb21wdGVkTm93T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiBzdWJG
cmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJh
bWVJRD4gZnJhbWVJRCwgUGFnZUlEIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3du
IHByb21wdFdhc1Nob3duTm93T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGlmIChzdWJGcmFtZURvbWFpbiA9PSB0b3BGcmFt
ZURvbWFpbikgewotICAgICAgICBjYWxsYmFjayh0cnVlKTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Olllcyk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBpZiAodXNlcldhc1Byb21wdGVkTm93T3JFYXJsaWVyKSB7CisgICAgaWYgKHBy
b21wdFdhc1Nob3duTm93T3JFYXJsaWVyID09IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6
WWVzKSB7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBhdXRvIHN1YkZyYW1lU3RhdHVzID0gZW5z
dXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oc3ViRnJhbWVEb21haW4p
OwogICAgICAgICBBU1NFUlQoc3ViRnJhbWVTdGF0dXMuZmlyc3QgPT0gQWRkZWRSZWNvcmQ6Ok5v
KTsKICAgICAgICAgQVNTRVJUKGhhc0hhZFVzZXJJbnRlcmFjdGlvbihzdWJGcmFtZURvbWFpbiwg
T3BlcmF0aW5nRGF0ZXNXaW5kb3c6OkxvbmcpKTsKLSAgICAgICAgQVNTRVJUKGhhc1VzZXJHcmFu
dGVkU3RvcmFnZUFjY2Vzc1Rocm91Z2hQcm9tcHQoc3ViRnJhbWVTdGF0dXMuc2Vjb25kLCB0b3BG
cmFtZURvbWFpbikpOworICAgICAgICBBU1NFUlQoaGFzVXNlckdyYW50ZWRTdG9yYWdlQWNjZXNz
VGhyb3VnaFByb21wdChzdWJGcmFtZVN0YXR1cy5zZWNvbmQsIHRvcEZyYW1lRG9tYWluKSA9PSBT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Olllcyk7CiAjZW5kaWYKICAgICAgICAgc2V0VXNl
ckludGVyYWN0aW9uKHN1YkZyYW1lRG9tYWluLCB0cnVlLCBXYWxsVGltZTo6bm93KCkpOwogICAg
IH0KIAotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3ViRnJhbWVEb21haW4gPSBzdWJG
cmFtZURvbWFpbi5pc29sYXRlZENvcHkoKSwgdG9wRnJhbWVEb21haW4gPSB0b3BGcmFtZURvbWFp
bi5pc29sYXRlZENvcHkoKSwgZnJhbWVJRCwgcGFnZUlELCBzdG9yZSA9IG1ha2VSZWYoc3RvcmUo
KSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7Ci0gICAgICAgIHN0
b3JlLT5jYWxsR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihzdWJGcmFtZURvbWFpbiwgdG9wRnJh
bWVEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IHN0b3JlID0gc3RvcmUuY29weVJlZigpXShib29sIHZhbHVlKSBtdXRhYmxlIHsKLSAgICAgICAg
ICAgIHN0b3JlLT5zdGF0aXN0aWNzUXVldWUoKS5kaXNwYXRjaChbY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKSwgdmFsdWVdICgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGNhbGxiYWNr
KHZhbHVlKTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N1YkZyYW1lRG9tYWluID0g
c3ViRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gdG9wRnJhbWVE
b21haW4uaXNvbGF0ZWRDb3B5KCksIGZyYW1lSUQsIHBhZ2VJRCwgc3RvcmUgPSBtYWtlUmVmKHN0
b3JlKCkpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgeworICAgICAgICBzdG9yZS0+Y2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIo
c3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIFtjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzdG9yZSA9IHN0b3JlLmNv
cHlSZWYoKV0oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRlZCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICBzdG9yZS0+c3RhdGlzdGljc1F1ZXVlKCkuZGlzcGF0Y2goW3dhc0dyYW50ZWQs
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFi
bGUgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdhc0dyYW50ZWQpOwogICAg
ICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0pOwpAQCAtMTM0OSw3ICsxMzUwLDcgQEAg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OkNvb2tpZVRyZWF0bWVudFJlc3Vs
dCBSZXNvdXJjZUxvYWRTdGF0aXN0aWMKICAgICByZXR1cm4gaGFkVXNlckludGVyYWN0aW9uID8g
Q29va2llVHJlYXRtZW50UmVzdWx0OjpCbG9ja0FuZEtlZXAgOiBDb29raWVUcmVhdG1lbnRSZXN1
bHQ6OkJsb2NrQW5kUHVyZ2U7CiB9CiAgICAgCi1ib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpoYXNVc2VyR3JhbnRlZFN0b3JhZ2VBY2Nlc3NUaHJvdWdoUHJvbXB0KHVu
c2lnbmVkIHJlcXVlc3RpbmdEb21haW5JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0
UGFydHlEb21haW4pIGNvbnN0CitTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1VzZXJHcmFudGVkU3RvcmFnZUFjY2Vzc1Ro
cm91Z2hQcm9tcHQodW5zaWduZWQgcmVxdWVzdGluZ0RvbWFpbklELCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbikgY29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKIApAQCAtMTM1OCw5ICsxMzU5LDkgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzVXNlckdyYW50ZWRTdG9yYWdlQWNjZXNzVGhyb3VnaFBy
b20KICAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsIG1ha2VTdHJpbmco
IlNFTEVDVCBDT1VOVCgqKSBGUk9NIFN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyBX
SEVSRSBkb21haW5JRCA9ICIsIFN0cmluZzo6bnVtYmVyKHJlcXVlc3RpbmdEb21haW5JRCksICIg
QU5EIHRvcExldmVsRG9tYWluSUQgPSAiLCBTdHJpbmc6Om51bWJlcihmaXJzdFBhcnR5UHJpbWFy
eURvbWFpbklEKSkpOwogICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwog
ICAgICAgICB8fCBzdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ST1cpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm87
CiAKLSAgICByZXR1cm4gIXN0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCk7CisgICAgcmV0dXJuICFz
dGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApID8gU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpZ
ZXMgOiBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vOwogfQogCiBWZWN0b3I8UmVnaXN0
cmFibGVEb21haW4+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5z
VG9CbG9jaygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZS5oCmluZGV4IDEyOTQ2YTZiMDU3MzdiNTJiZTgwMzE1ZjQyYmU0ZDg2ZjYx
NzYyNGUuLmJhYjJiN2FlYWI3NjBkMmEzZTFlY2JkZThiNzU4NTM3NTVlM2FlOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCkBAIC0z
OSw2ICszOSw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTUUxpdGVEYXRhYmFzZTsK
IGNsYXNzIFNRTGl0ZVN0YXRlbWVudDsKK2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duIDogYm9vbDsKK2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgOiBib29s
Owogc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3M7CiB9CiAKQEAgLTkxLDcgKzkzLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWlu
JiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlcXVlc3RT
dG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQs
IFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwg
VG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgUGFnZUlELCBib29sIHVzZXJXYXNQcm9tcHRlZE5v
dywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBn
cmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJh
bWVJRCwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgbG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IE5hdmlnYXRlZFRv
RG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWlu
JiwgYm9vbCBpc1JlZGlyZWN0LCBib29sIGlzTWFpbkZyYW1lKSBvdmVycmlkZTsKICAgICB2b2lk
IGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBUb3BGcmFtZURvbWFpbiYpIG92ZXJyaWRlOwpAQCAt
MTI4LDcgKzEzMCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHVuc2lnbmVkPiBmaW5kRXhwaXJl
ZFVzZXJJbnRlcmFjdGlvbnMoKSBjb25zdDsKICAgICB2b2lkIGNsZWFyRXhwaXJlZFVzZXJJbnRl
cmFjdGlvbnMoKTsKICAgICB2b2lkIGNsZWFyR3JhbmRmYXRoZXJpbmcoVmVjdG9yPHVuc2lnbmVk
PiYmKTsKLSAgICBib29sIGhhc1VzZXJHcmFudGVkU3RvcmFnZUFjY2Vzc1Rocm91Z2hQcm9tcHQo
dW5zaWduZWQgZG9tYWluSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CisgICAg
V2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIGhhc1VzZXJHcmFudGVkU3RvcmFn
ZUFjY2Vzc1Rocm91Z2hQcm9tcHQodW5zaWduZWQgZG9tYWluSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJikgY29uc3Q7CiAgICAgdm9pZCBpbmNyZW1lbnRSZWNvcmRzRGVsZXRlZENvdW50Rm9y
RG9tYWlucyhIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgcmVjbGFzc2lmeVJlc291cmNlcygpOwpAQCAtMTUwLDcgKzE1Miw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFJl
c291cmNlTG9hZFByZXZhbGVuY2UpOwogICAgIHVuc2lnbmVkIHJlY3Vyc2l2ZWx5RmluZE5vblBy
ZXZhbGVudERvbWFpbnNUaGF0UmVkaXJlY3RlZFRvVGhpc0RvbWFpbih1bnNpZ25lZCBwcmltYXJ5
RG9tYWluSUQsIFN0ZFNldDx1bnNpZ25lZD4mIG5vblByZXZhbGVudFJlZGlyZWN0aW9uU291cmNl
cywgdW5zaWduZWQgbnVtYmVyT2ZSZWN1cnNpdmVDYWxscyk7CiAgICAgdm9pZCBzZXREb21haW5z
QXNQcmV2YWxlbnQoU3RkU2V0PHVuc2lnbmVkPiYmKTsKLSAgICB2b2lkIGdyYW50U3RvcmFnZUFj
Y2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlvbmFs
PEZyYW1lSUQ+LCBQYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkTm93T3JFYXJsaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vz
c0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlvbmFsPEZy
YW1lSUQ+LCBQYWdlSUQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYp
OwogICAgIHZvaWQgbWFya0FzUHJldmFsZW50SWZIYXNSZWRpcmVjdGVkVG9QcmV2YWxlbnQoKTsK
ICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGVuc3VyZVByZXZhbGVudFJlc291cmNlc0Zv
ckRlYnVnTW9kZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVtb3ZlRGF0YVJlY29yZHMoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKaW5kZXggNjlmNzkyNDMwZmZlNjViMzY4MzMzMjU3NGNm
MjQzZTBmYzdiMDkxNy4uZjhmNjg4MjQ2NDRjODJlNTNkZmIzOTZiOTA5ZjBiZmExNDc2ODYwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5j
cHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNs
dWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmgiCiAjaW5jbHVkZSAiV2Vi
c2l0ZURhdGFTdG9yZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRTdG9yYWdlQWNjZXNz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9LZXllZENvZGluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLmg+CkBAIC0yNDQsNyArMjQ1LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3UK
ICAgICB9CiAKICAgICBhdXRvIHVzZXJXYXNQcm9tcHRlZEVhcmxpZXIgPSBoYXNVc2VyR3JhbnRl
ZFN0b3JhZ2VBY2Nlc3NUaHJvdWdoUHJvbXB0KHN1YkZyYW1lU3RhdGlzdGljLCB0b3BGcmFtZURv
bWFpbik7Ci0gICAgaWYgKCF1c2VyV2FzUHJvbXB0ZWRFYXJsaWVyKSB7CisgICAgaWYgKHVzZXJX
YXNQcm9tcHRlZEVhcmxpZXIgPT0gU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObykgewog
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICBSRUxFQVNFX0xPR19JTkZPX0lGKGRl
YnVnTG9nZ2luZ0VuYWJsZWQoKSwgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnLCAiQWJvdXQg
dG8gYXNrIHRoZSB1c2VyIHdoZXRoZXIgdGhleSB3YW50IHRvIGdyYW50IHN0b3JhZ2UgYWNjZXNz
IHRvICV7cHVibGljfXMgdW5kZXIgJXtwdWJsaWN9cyBvciBub3QuIiwgc3ViRnJhbWVEb21haW4u
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdG9wRnJhbWVEb21haW4uc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAjZW5kaWYKQEAgLTI1MywxNCArMjU0LDE0IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYm
IHN1CiAgICAgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgaWYgKHVzZXJXYXNQ
cm9tcHRlZEVhcmxpZXIpCisgICAgaWYgKHVzZXJXYXNQcm9tcHRlZEVhcmxpZXIgPT0gU3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpZZXMpCiAgICAgICAgIFJFTEVBU0VfTE9HX0lORk9fSUYo
ZGVidWdMb2dnaW5nRW5hYmxlZCgpLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWcsICJTdG9y
YWdlIGFjY2VzcyB3YXMgZ3JhbnRlZCB0byAle3B1YmxpY31zIHVuZGVyICV7cHVibGljfXMuIiwg
c3ViRnJhbWVEb21haW4uc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdG9wRnJhbWVEb21haW4uc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKIAogICAgIHN1YkZyYW1lU3RhdGlzdGljLnRp
bWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkrKzsKIAotICAgIGdy
YW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBXVEZNb3Zl
KHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgcGFnZUlELCB1c2VyV2FzUHJvbXB0ZWRFYXJsaWVy
LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGJvb2wg
d2FzR3JhbnRlZEFjY2VzcykgbXV0YWJsZSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdh
c0dyYW50ZWRBY2Nlc3MgPyBTdG9yYWdlQWNjZXNzU3RhdHVzOjpIYXNBY2Nlc3MgOiBTdG9yYWdl
QWNjZXNzU3RhdHVzOjpDYW5ub3RSZXF1ZXN0QWNjZXNzKTsKKyAgICBncmFudFN0b3JhZ2VBY2Nl
c3NJbnRlcm5hbChXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFp
biksIGZyYW1lSUQsIHBhZ2VJRCwgdXNlcldhc1Byb21wdGVkRWFybGllciwgW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZCB3YXNHcmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod2Fz
R3JhbnRlZCA9PSBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVzID8gU3RvcmFnZUFjY2Vzc1N0
YXR1czo6SGFzQWNjZXNzIDogU3RvcmFnZUFjY2Vzc1N0YXR1czo6Q2Fubm90UmVxdWVzdEFjY2Vz
cyk7CiAgICAgfSk7CiB9CiAKQEAgLTI4Miw0MSArMjgzLDQxIEBAIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERv
bWFpbkluCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgUkVMRUFTRV9MT0dfSU5GT19J
RihkZWJ1Z0xvZ2dpbmdFbmFibGVkKCksIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1ZywgIltU
ZW1wb3JhcnkgY29tYmF0aWJpbGl0eSBmaXhdIFN0b3JhZ2UgYWNjZXNzIHdhcyBncmFudGVkIGZv
ciAle3B1YmxpY31zIHVuZGVyIG9wZW5lciBwYWdlIGZyb20gJXtwdWJsaWN9cywgd2l0aCB1c2Vy
IGludGVyYWN0aW9uIGluIHRoZSBvcGVuZWQgd2luZG93LiIsIGRvbWFpbkluTmVlZE9mU3RvcmFn
ZUFjY2Vzcy5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBvcGVuZXJEb21haW4uc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAjZW5kaWYKLSAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChXVEZN
b3ZlKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyksIFdURk1vdmUob3BlbmVyRG9tYWluKSwg
V1RGOjpudWxsb3B0LCBvcGVuZXJQYWdlSUQsIGZhbHNlLCBbXShib29sKSB7IH0pOworICAgIGdy
YW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNj
ZXNzKSwgV1RGTW92ZShvcGVuZXJEb21haW4pLCBXVEY6Om51bGxvcHQsIG9wZW5lclBhZ2VJRCwg
U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObywgW10oU3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQpIHsgfSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpn
cmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJh
bWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlELCBib29sIHVzZXJXYXNQcm9tcHRlZE5vdywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFp
biwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAg
aWYgKHVzZXJXYXNQcm9tcHRlZE5vdykgeworICAgIGlmIChwcm9tcHRXYXNTaG93biA9PSBTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd246OlllcykgewogICAgICAgICBhdXRvJiBzdWJGcmFtZVN0
YXRpc3RpYyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHN1
YkZyYW1lRG9tYWluKTsKICAgICAgICAgQVNTRVJUKHN1YkZyYW1lU3RhdGlzdGljLmhhZFVzZXJJ
bnRlcmFjdGlvbik7CiAgICAgICAgIHN1YkZyYW1lU3RhdGlzdGljLnN0b3JhZ2VBY2Nlc3NVbmRl
clRvcEZyYW1lRG9tYWlucy5hZGQodG9wRnJhbWVEb21haW4pOwogICAgIH0KLSAgICBncmFudFN0
b3JhZ2VBY2Nlc3NJbnRlcm5hbChXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BG
cmFtZURvbWFpbiksIGZyYW1lSUQsIHBhZ2VJRCwgdXNlcldhc1Byb21wdGVkTm93LCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RG
TW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBw
YWdlSUQsIHByb21wdFdhc1Nob3duLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAK
LXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nl
c3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFp
biYmIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSUQgcGFn
ZUlELCBib29sIHVzZXJXYXNQcm9tcHRlZE5vd09yRWFybGllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmIHN1YkZy
YW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDxGcmFt
ZUlEPiBmcmFtZUlELCBQYWdlSUQgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24g
cHJvbXB0V2FzU2hvd25Ob3dPckVhcmxpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFn
ZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgaWYgKHN1YkZyYW1lRG9tYWluID09IHRvcEZyYW1l
RG9tYWluKSB7Ci0gICAgICAgIGNhbGxiYWNrKHRydWUpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVzKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmICh1c2VyV2FzUHJvbXB0ZWROb3dPckVhcmxpZXIpIHsKKyAgICBpZiAocHJv
bXB0V2FzU2hvd25Ob3dPckVhcmxpZXIgPT0gU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpZ
ZXMpIHsKICAgICAgICAgYXV0byYgc3ViRnJhbWVTdGF0aXN0aWMgPSBlbnN1cmVSZXNvdXJjZVN0
YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihzdWJGcmFtZURvbWFpbik7CiAgICAgICAgIEFT
U0VSVChzdWJGcmFtZVN0YXRpc3RpYy5oYWRVc2VySW50ZXJhY3Rpb24pOwogICAgICAgICBBU1NF
UlQoc3ViRnJhbWVTdGF0aXN0aWMuc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zLmNv
bnRhaW5zKHRvcEZyYW1lRG9tYWluKSk7CiAgICAgICAgIHN1YkZyYW1lU3RhdGlzdGljLm1vc3RS
ZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lID0gV2FsbFRpbWU6Om5vdygpOwogICAgIH0KIAotICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3ViRnJhbWVEb21haW4gPSBzdWJGcmFtZURvbWFp
bi5pc29sYXRlZENvcHkoKSwgdG9wRnJhbWVEb21haW4gPSB0b3BGcmFtZURvbWFpbi5pc29sYXRl
ZENvcHkoKSwgZnJhbWVJRCwgcGFnZUlELCBzdG9yZSA9IG1ha2VSZWYoc3RvcmUoKSksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7Ci0gICAgICAgIHN0b3JlLT5jYWxs
R3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4s
IGZyYW1lSUQsIHBhZ2VJRCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHN0b3JlID0g
c3RvcmUuY29weVJlZigpXShib29sIHZhbHVlKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHN0b3Jl
LT5zdGF0aXN0aWNzUXVldWUoKS5kaXNwYXRjaChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgdmFsdWVdICgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGNhbGxiYWNrKHZhbHVlKTsK
KyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N1YkZyYW1lRG9tYWluID0gc3ViRnJhbWVE
b21haW4uaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gdG9wRnJhbWVEb21haW4uaXNv
bGF0ZWRDb3B5KCksIGZyYW1lSUQsIHBhZ2VJRCwgc3RvcmUgPSBtYWtlUmVmKHN0b3JlKCkpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
eworICAgICAgICBzdG9yZS0+Y2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoc3ViRnJhbWVE
b21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzdG9yZSA9IHN0b3JlLmNvcHlSZWYoKV0o
U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAg
ICBzdG9yZS0+c3RhdGlzdGljc1F1ZXVlKCkuZGlzcGF0Y2goW3dhc0dyYW50ZWQsIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdhc0dyYW50ZWQpOwogICAgICAgICAgICAg
fSk7CiAgICAgICAgIH0pOwogICAgIH0pOwpAQCAtNzQxLDkgKzc0Miw5IEBAIGJvb2wgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpzaG91bGRCbG9ja0FuZFB1cmdlQ29va2llcyhj
b25zdCBSZXNvdXJjCiAgICAgcmV0dXJuIHN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNlICYm
ICFzdGF0aXN0aWMuaGFkVXNlckludGVyYWN0aW9uOwogfQogCi1ib29sIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzVXNlckdyYW50ZWRTdG9yYWdlQWNjZXNzVGhyb3VnaFBy
b21wdChjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBzdGF0aXN0aWMsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluKQorU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzVXNlckdyYW50ZWRTdG9y
YWdlQWNjZXNzVGhyb3VnaFByb21wdChjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBzdGF0
aXN0aWMsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluKQogewotICAg
IHJldHVybiBzdGF0aXN0aWMuc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zLmNvbnRh
aW5zKGZpcnN0UGFydHlEb21haW4pOworICAgIHJldHVybiBzdGF0aXN0aWMuc3RvcmFnZUFjY2Vz
c1VuZGVyVG9wRnJhbWVEb21haW5zLmNvbnRhaW5zKGZpcnN0UGFydHlEb21haW4pID8gU3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpZZXMgOiBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246
Ok5vOwogfQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6dXBkYXRl
Q29va2llQmxvY2tpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5o
CmluZGV4IGYxZGQyZDgzNjVjYzE1YmJkOGI4ZWMxOGIxZTZhOGUyZDQ2YWQ5ZjIuLjQ0ZWZiZjRk
ZWMxNGYyMDI3MDJhY2FkMDc3NjhmNWFjODIwYjgwNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKQEAgLTM3LDYgKzM3LDggQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEtleWVkRGVjb2RlcjsKIGNsYXNzIEtleWVkRW5jb2RlcjsK
K2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIDogYm9vbDsKK2VudW0gY2xh
c3MgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgOiBib29sOwogc3RydWN0IFJlc291cmNlTG9hZFN0
YXRpc3RpY3M7CiB9CiAKQEAgLTk3LDcgKzk5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBoYXNT
dG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4m
LCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9t
YWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBncmFu
dFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJ
RCwgUGFnZUlELCBib29sIHVzZXJXYXNQcm9tcHRlZE5vdywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJh
bWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgUGFnZUlELCBXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29y
ZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgbG9n
RnJhbWVOYXZpZ2F0aW9uKGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgY29uc3QgVG9wRnJhbWVE
b21haW4mLCBjb25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiwgYm9vbCBpc1JlZGlyZWN0LCBib29s
IGlzTWFpbkZyYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25z
dCBUb3BGcmFtZURvbWFpbiYpIG92ZXJyaWRlOwpAQCAtMTEzLDcgKzExNSw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkQmxvY2tBbmRLZWVwQ29va2llcyhjb25z
dCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkQmxvY2tB
bmRQdXJnZUNvb2tpZXMoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwotICAgIHN0YXRp
YyBib29sIGhhc1VzZXJHcmFudGVkU3RvcmFnZUFjY2Vzc1Rocm91Z2hQcm9tcHQoY29uc3QgUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CisgICAgc3Rh
dGljIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBoYXNVc2VyR3JhbnRlZFN0
b3JhZ2VBY2Nlc3NUaHJvdWdoUHJvbXB0KGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmLCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOwogICAgIGJvb2wgaGFzSGFkVW5leHBpcmVkUmVjZW50
VXNlckludGVyYWN0aW9uKFJlc291cmNlTG9hZFN0YXRpc3RpY3MmLCBPcGVyYXRpbmdEYXRlc1dp
bmRvdykgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRSZW1vdmVBbGxXZWJzaXRlRGF0YUZvcihSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzJiwgYm9vbCBzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5nKSBj
b25zdDsKICAgICBib29sIHNob3VsZFJlbW92ZUFsbEJ1dENvb2tpZXNGb3IoUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyYsIGJvb2wgc2hvdWxkQ2hlY2tGb3JHcmFuZGZhdGhlcmluZykgY29uc3Q7CkBA
IC0xMjEsNyArMTIzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluY3JlbWVudFJlY29yZHNEZWxl
dGVkQ291bnRGb3JEb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpIG92ZXJyaWRl
OwogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYs
IFJlc291cmNlTG9hZFByZXZhbGVuY2UpOwogICAgIHVuc2lnbmVkIHJlY3Vyc2l2ZWx5R2V0QWxs
RG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvVGhpc0RvbWFpbihjb25zdCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzJiwgSGFzaFNldDxSZWRpcmVjdGVkVG9Eb21haW4+JiwgdW5zaWduZWQgbnVtYmVy
T2ZSZWN1cnNpdmVDYWxscykgY29uc3Q7Ci0gICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3NJbnRl
cm5hbChTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBPcHRpb25hbDxGcmFtZUlE
PiwgUGFnZUlELCBib29sIHVzZXJXYXNQcm9tcHRlZE5vd09yRWFybGllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5h
bChTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBPcHRpb25hbDxGcmFtZUlEPiwg
UGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsKICAgICB2
b2lkIG1hcmtBc1ByZXZhbGVudElmSGFzUmVkaXJlY3RlZFRvUHJldmFsZW50KFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MmKTsKICAgICBib29sIGlzUHJldmFsZW50RHVlVG9EZWJ1Z01vZGUoUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyYpOwogICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZW5zdXJl
UHJldmFsZW50UmVzb3VyY2VzRm9yRGVidWdNb2RlKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggZDMwYWE5ZjVkZGFlYTlkY2Y3MGMyYjA4
NmMzNDIyYzYzMzJmMzFiZS4uMjIwYjNjNmJmNjU1ZDJmMDZiOTc2YzE0MWMzN2Q3Y2NlOTI2MGE1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtNDEsNiAr
NDEsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgS2V5ZWREZWNvZGVyOwogY2xhc3Mg
S2V5ZWRFbmNvZGVyOworZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gOiBi
b29sOworZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA6IGJvb2w7CiBzdHJ1Y3Qg
UmVzb3VyY2VMb2FkU3RhdGlzdGljczsKIH0KIApAQCAtMTYxLDcgKzE2Myw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWlu
JiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVl
c3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1l
SUQsIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4m
JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21h
aW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgUGFnZUlELCBib29sIHVzZXJXYXNQcm9t
cHRlZE5vdywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21h
aW4mJiwgRnJhbWVJRCwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hv
d24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQpPiYmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgbG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0
IE5hdmlnYXRlZFRvRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBOYXZpZ2F0
ZWRGcm9tRG9tYWluJiwgYm9vbCBpc1JlZGlyZWN0LCBib29sIGlzTWFpbkZyYW1lKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBUb3BGcmFtZURvbWFpbiYp
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAK
aW5kZXggYjc5OGZkMGM0N2MzZjc2YWYwZWQwM2E5YzBjYWNiMDgwYjZmN2ZmZi4uMjUyZmUxY2Ew
MzE2MzEwZjNhNGRmMWZlOGI5MmQ2ODQxYzVjOTY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0Nvb2tpZUphci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaD4KQEAgLTMxNCw1MiArMzE1LDQ3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihjb25zdCBSCiAgICAg
Y2FsbGJhY2soZmFsc2UpOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NHcmFudGVkKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBz
dWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1
YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBpZiAoc3ViRnJhbWVEb21haW4gPT0gdG9wRnJhbWVE
b21haW4pIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQ6OlllcywgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObyk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCiAgICAgYXV0byBzdGF0dXNIYW5kbGVyID0gW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3ViRnJhbWVEb21haW4gPSBzdWJGcmFtZURvbWFpbi5p
c29sYXRlZENvcHkoKSwgdG9wRnJhbWVEb21haW4gPSB0b3BGcmFtZURvbWFpbi5pc29sYXRlZENv
cHkoKSwgZnJhbWVJRCwgcGFnZUlELCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXShTdG9yYWdlQWNjZXNzU3RhdHVzIHN0YXR1cykgbXV0YWJsZSB7CiAgICAg
ICAgIHN3aXRjaCAoc3RhdHVzKSB7CiAgICAgICAgIGNhc2UgU3RvcmFnZUFjY2Vzc1N0YXR1czo6
Q2Fubm90UmVxdWVzdEFjY2VzczoKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNl
KTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
OjpObywgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObyk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIGNhc2UgU3RvcmFnZUFjY2Vzc1N0YXR1czo6UmVxdWlyZXNVc2VyUHJvbXB0
OgogICAgICAgICAgICAgewogICAgICAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4gcmVxdWVzdENvbmZpcm1hdGlvbkNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKSwgc3ViRnJhbWVEb21haW4sIHRvcEZyYW1l
RG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildIChib29sIHVzZXJEaWRHcmFudEFjY2VzcykgbXV0YWJsZSB7CiAgICAg
ICAgICAgICAgICAgaWYgKHVzZXJEaWRHcmFudEFjY2VzcykKLSAgICAgICAgICAgICAgICAgICAg
Z3JhbnRTdG9yYWdlQWNjZXNzKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJ
RCwgcGFnZUlELCB1c2VyRGlkR3JhbnRBY2Nlc3MsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICAgICAgICAgICAgICAgICAgZ3JhbnRTdG9yYWdlQWNjZXNzKHN1YkZyYW1lRG9tYWlu
LCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2Fz
U2hvd246OlllcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAg
ICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNzV2FzR3JhbnRl
ZDo6Tm8sIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6WWVzKTsKICAgICAgICAgICAgIH07
CiAgICAgICAgICAgICBtX25ldHdvcmtTZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3NQcm94eTo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKHBhZ2VJRCwgZnJhbWVJRCwg
c3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluKSwgV1RGTW92ZShyZXF1ZXN0Q29uZmlybWF0
aW9uQ29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgY2FzZSBTdG9yYWdlQWNjZXNzU3RhdHVzOjpIYXNBY2Nlc3M6Ci0gICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNT
aG93bjo6Tm8pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfTsKIAotICAg
IHJlcXVlc3RTdG9yYWdlQWNjZXNzKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJh
bWVJRCwgcGFnZUlELCBXVEZNb3ZlKHN0YXR1c0hhbmRsZXIpKTsKLX0KLQotdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRv
cEZyYW1lRG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQotewotICAgIGlmIChzdWJGcmFtZURvbWFpbiA9PSB0b3BGcmFtZURvbWFpbikg
ewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNzU3RhdHVzOjpIYXNBY2Nl
c3MpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcG9zdFRhc2soW3RoaXMsIHN1YkZy
YW1lRG9tYWluID0gc3ViRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWlu
ID0gdG9wRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIGZyYW1lSUQsIHBhZ2VJRCwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAg
ICBwb3N0VGFzayhbdGhpcywgc3ViRnJhbWVEb21haW4gPSBzdWJGcmFtZURvbWFpbi5pc29sYXRl
ZENvcHkoKSwgdG9wRnJhbWVEb21haW4gPSB0b3BGcmFtZURvbWFpbi5pc29sYXRlZENvcHkoKSwg
ZnJhbWVJRCwgcGFnZUlELCBzdGF0dXNIYW5kbGVyID0gV1RGTW92ZShzdGF0dXNIYW5kbGVyKV0o
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFtX3N0YXRpc3RpY3NTdG9yZSkgewotICAgICAgICAg
ICAgcG9zdFRhc2tSZXBseShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihT
dG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5ub3RSZXF1ZXN0QWNjZXNzKTsKKyAgICAgICAgICAgIHBv
c3RUYXNrUmVwbHkoW3N0YXR1c0hhbmRsZXIgPSBXVEZNb3ZlKHN0YXR1c0hhbmRsZXIpXSgpIG11
dGFibGUgeworICAgICAgICAgICAgICAgIHN0YXR1c0hhbmRsZXIoU3RvcmFnZUFjY2Vzc1N0YXR1
czo6Q2Fubm90UmVxdWVzdEFjY2Vzcyk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX3N0YXRpc3RpY3NTdG9yZSkgewotICAg
ICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnJlcXVlc3RTdG9yYWdlQWNjZXNzKFdURk1vdmUo
c3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRC52YWx1ZSgp
LCBwYWdlSUQsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShTdG9yYWdlQWNjZXNzU3RhdHVzIHN0YXR1cykgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAg
cG9zdFRhc2tSZXBseShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgc3RhdHVzXSgpIG11dGFibGUgewotICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihzdGF0dXMpOworICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnJlcXVlc3RT
dG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9t
YWluKSwgZnJhbWVJRCwgcGFnZUlELCBbc3RhdHVzSGFuZGxlciA9IFdURk1vdmUoc3RhdHVzSGFu
ZGxlcildKFN0b3JhZ2VBY2Nlc3NTdGF0dXMgc3RhdHVzKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
ICAgICBwb3N0VGFza1JlcGx5KFtzdGF0dXNIYW5kbGVyID0gV1RGTW92ZShzdGF0dXNIYW5kbGVy
KSwgc3RhdHVzXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgICAgICBzdGF0dXNIYW5kbGVy
KHN0YXR1cyk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAg
fQpAQCAtMzc5LDI4ICszNzUsMjggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUmVnaXN0cmFibGUKICAgICB9KTsK
IH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFj
Y2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
cGFnZUlELCBib29sIHVzZXJXYXNQcm9tcHRlZE5vdywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZy
YW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3du
IHByb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNH
cmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgcG9zdFRhc2soW3RoaXMs
IHN1YkZyYW1lRG9tYWluID0gc3ViRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1l
RG9tYWluID0gdG9wRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIGZyYW1lSUQsIHBhZ2VJRCwg
dXNlcldhc1Byb21wdGVkTm93LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlzLCBzdWJGcmFtZURvbWFp
biA9IHN1YkZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9IHRvcEZy
YW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCBmcmFtZUlELCBwYWdlSUQsIHByb21wdFdhc1Nob3du
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFi
bGUgewogICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlKSB7Ci0gICAgICAgICAgICBwb3N0
VGFza1JlcGx5KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsK
KyAgICAgICAgICAgIHBvc3RUYXNrUmVwbHkoW3Byb21wdFdhc1Nob3duLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpObywgcHJv
bXB0V2FzU2hvd24pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAobV9zdGF0aXN0aWNzU3RvcmUpIHsKLSAgICAgICAgICAgIG1f
c3RhdGlzdGljc1N0b3JlLT5ncmFudFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZURvbWFp
biksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBwYWdlSUQsIHVzZXJXYXNQcm9t
cHRlZE5vdywgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KGJvb2wgd2FzR3JhbnRlZEFjY2VzcykgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgcG9zdFRh
c2tSZXBseShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
d2FzR3JhbnRlZEFjY2Vzc10oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIod2FzR3JhbnRlZEFjY2Vzcyk7CisgICAgICAgICAgICBtX3N0YXRpc3RpY3NT
dG9yZS0+Z3JhbnRTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBXVEZNb3Zl
KHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgcGFnZUlELCBwcm9tcHRXYXNTaG93biwgW3Byb21w
dFdhc1Nob3duLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkQWNjZXNzKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgICAgICBwb3N0VGFza1JlcGx5KFt3YXNHcmFudGVkQWNjZXNzLCBwcm9tcHRXYXNT
aG93biwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod2FzR3JhbnRl
ZEFjY2VzcywgcHJvbXB0V2FzU2hvd24pOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgfSk7CiAgICAgICAgIH0KICAgICB9KTsKIH0KIAotYm9vbCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
cmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWlu
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKQorU3RvcmFnZUFj
Y2Vzc1dhc0dyYW50ZWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0b3Jh
Z2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkKIHsKICAgICBib29sIGlzU3RvcmFnZUdyYW50ZWQgPSBm
YWxzZTsKIApAQCAtNDEwLDE0ICs0MDYsMTQgQEAgYm9vbCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYKICAg
ICAgICAgaXNTdG9yYWdlR3JhbnRlZCA9IHRydWU7CiAgICAgfQogCi0gICAgcmV0dXJuIGlzU3Rv
cmFnZUdyYW50ZWQ7CisgICAgcmV0dXJuIGlzU3RvcmFnZUdyYW50ZWQgPyBTdG9yYWdlQWNjZXNz
V2FzR3JhbnRlZDo6WWVzIDogU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Ok5vOwogfQogCi12b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hh
bmRsZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJh
Y2spCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEdyYW50U3RvcmFn
ZUFjY2Vzc0hhbmRsZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFn
ZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBjYWxsYmFjayhncmFudFN0b3JhZ2VBY2Nlc3Moc3Vi
RnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELCBwYWdlSUQpKTsKKyAgICBjb21w
bGV0aW9uSGFuZGxlcihncmFudFN0b3JhZ2VBY2Nlc3Moc3ViRnJhbWVEb21haW4sIHRvcEZyYW1l
RG9tYWluLCBmcmFtZUlELCBwYWdlSUQpKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmRpZENyZWF0ZU5ldHdvcmtQcm9jZXNzKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCBhMGZlOGVjZThkOGY4ZTVlYTEzZTA4
NmMzZWZkNWViYmQyZmM4YWEyLi5mNTY5ZGMzNjQzMWE0ZGRkYzRiN2ZmYjQ0MWIzNDBlMDU5ZWRk
ZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBA
IC00OCw2ICs0OCw4IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIHN0cnVjdCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzOwogZW51bSBjbGFzcyBTaG91bGRTYW1wbGUgOiBib29sOwogZW51bSBjbGFz
cyBJbmNsdWRlSHR0cE9ubHlDb29raWVzIDogYm9vbDsKK2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vz
c1Byb21wdFdhc1Nob3duIDogYm9vbDsKK2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQgOiBib29sOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTgzLDYgKzg1LDggQEAgcHVi
bGljOgogICAgIHVzaW5nIE9wZW5lclBhZ2VJRCA9IHVpbnQ2NF90OwogICAgIHVzaW5nIFBhZ2VJ
RCA9IHVpbnQ2NF90OwogICAgIHVzaW5nIEZyYW1lSUQgPSB1aW50NjRfdDsKKyAgICB1c2luZyBT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA9IFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
OworICAgIHVzaW5nIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biA9IFdlYkNvcmU6OlN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93bjsKIAogICAgIHN0YXRpYyBSZWY8V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCBj
b25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFNob3VsZEluY2x1
ZGVMb2NhbGhvc3Qgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCkKICAgICB7CkBAIC0xMDAsNyArMTA0
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVE
YXRhUmVjb3Jkc1JlbW92YWwoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIHNldFNob3VsZFN1Ym1pdFRlbGVtZXRyeShib29sKTsKIAotICAgIHZvaWQgZ3JhbnRT
dG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4m
LCBGcmFtZUlELCBQYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkTm93LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBT
dWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgUGFnZUlELCBT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFn
ZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOwogCiAg
ICAgdm9pZCBhcHBsaWNhdGlvbldpbGxUZXJtaW5hdGUoKTsKIApAQCAtMTE0LDEyICsxMTgsMTEg
QEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVE
b21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vi
c2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4s
IEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhVG9SZW1vdmU+JiYsIGJvb2wg
c2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJl
Z2lzdHJhYmxlRG9tYWluPiYpPiYmKTsKICAgICB2b2lkIHJlZ2lzdHJhYmxlRG9tYWluc1dpdGhX
ZWJzaXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQ
YWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYp
PiYmKTsKLSAgICBib29sIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCk7CisgICAg
U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgZ3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1l
RG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlE
KTsKICAgICB2b2lkIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgaGFzU3RvcmFn
ZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0
aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
YWxsYmFjayk7CisgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWlu
JiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NG
b3JGcmFtZShjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJh
bWVJRCwgUGFnZUlEKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZy
YW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFn
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKTsKLSAg
ICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzR3JhbnRlZChjb25zdCBTdWJGcmFtZURvbWFpbiYs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFN1
YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBQYWdlSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nl
c3NQcm9tcHRXYXNTaG93bik+JiYpOwogICAgIHZvaWQgc2V0TGFzdFNlZW4oY29uc3QgUmVnaXN0
cmFibGVEb21haW4mLCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0VmVyeVByZXZhbGVudFJlc291
cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKQEAgLTE2Miw3ICsxNjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNv
dXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIGxvZ1Rlc3RpbmdFdmVudChjb25zdCBTdHJpbmcm
KTsKLSAgICB2b2lkIGNhbGxHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKGNvbnN0IFN1YkZyYW1l
RG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGNhbGxHcmFudFN0
b3JhZ2VBY2Nlc3NIYW5kbGVyKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVE
b21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CiAgICAgdm9pZCByZW1vdmVBbGxTdG9yYWdl
QWNjZXNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjYWxsVXBkYXRl
UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9ySGFuZGxlcihjb25zdCBWZWN0b3I8UmVn
aXN0cmFibGVEb21haW4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lk
IGNhbGxSZW1vdmVEb21haW5zSGFuZGxlcihjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGRjNzRhNjEzYjlkOWM0YzQ4OWQ2
NzFlMzBhYThhNjczNDYwNDU1ZmIuLmU5Yzk4ZjJlMjIyN2ZlMWM1MjUxNzcwZDA2MGQyZWQyZTNj
Y2RlNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC01Nyw2ICs1Nyw3IEBACiAj
aW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRTdG9yYWdl
QWNjZXNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlUmVxdWVzdC5oPgpAQCAtNjgwLDEyICs2ODEsMTggQEAgdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVj
dG9yPFdlYkNvcmUKIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzU3Rv
cmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9t
YWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbmV0d29ya1Byb2Nlc3Mo
KS5oYXNTdG9yYWdlQWNjZXNzKHNlc3Npb25JRCwgc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9t
YWluLCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBp
ZiAoYXV0byBuZXR3b3JrU2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9
IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgICAgICAgICBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5oYXNTdG9yYWdlQWNjZXNzKHN1YkZyYW1lRG9tYWluLCB0
b3BGcmFtZURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisgICAgfQogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXF1
ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZy
YW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQgd2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duIHByb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBuZXR3b3Jr
UHJvY2VzcygpLnJlcXVlc3RTdG9yYWdlQWNjZXNzR3JhbnRlZChzZXNzaW9uSUQsIHN1YkZyYW1l
RG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgaWYgKGF1dG8gbmV0d29ya1Nlc3Npb24gPSBuZXR3b3JrUHJvY2Vz
cygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGlj
cygpKQorICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3Moc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbklu
TmVlZE9mU3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRl
eCBjNjllMzI1ZTYxOGU5Y2U4NmJhOGFmMmMzMTAzNmVhZWFlYzEyYTBmLi4wOTAzYTE2NDU4OWRh
MTk1NGNlNjNmYzMxYmVkMjBiZWIyMWFlZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBA
IC00OCw2ICs0OCw4IEBAIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKIGNsYXNzIEJsb2JS
ZWdpc3RyeUltcGw7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OworZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gOiBib29sOworZW51bSBj
bGFzcyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA6IGJvb2w7CiBzdHJ1Y3QgU2FtZVNpdGVJbmZv
OwogCiBlbnVtIGNsYXNzIEluY2x1ZGVTZWN1cmVDb29raWVzIDogYm9vbDsKQEAgLTIyMSw3ICsy
MjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbG9nU3VicmVzb3VyY2VSZWRpcmVjdChQQUw6OlNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHNvdXJjZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbik7CiAgICAgdm9pZCByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik7
CiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BG
cmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2
b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFt
ZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNj
ZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKTsKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAxNmVkMzRhZDk4Nzg5
MDQxODM3MWEzOWNhZGU2NDg2ZjM3MWQ2Y2UzLi5mZDg0OGUzYWQwNDZjODBjM2FlM2Y0NmQzOTAx
NWEwMmYwMDNjOTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4KQEAgLTY0LDcgKzY0LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIExvZ1N1YnJlc291cmNlUmVkaXJlY3QoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzb3VyY2VEb21h
aW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRhcmdldERvbWFpbikKICAgICBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljcz4gc3RhdGlzdGljcykKICAgICBIYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQpIC0+IChib29sIGhhc1N0b3JhZ2VBY2Nlc3MpIEFzeW5jCi0gICAgUmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
dG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkgLT4gKGJv
b2wgYWNjZXNzR3JhbnRlZCkgQXN5bmMKKyAgICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9t
YWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKSAtPiAoZW51bTpib29sIFdlYkNvcmU6OlN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQsIGVudW06Ym9vbCBXZWJDb3JlOjpTdG9yYWdlQWNj
ZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pIEFzeW5jCiAgICAgUmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3Bl
bmVyUGFnZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBvcGVuZXJEb21haW4pCiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAppbmRleCBhNjBiMmM1NWJmMWUzNDgzYjlkMzNhNTMyZjg4MWM2M2E4M2VhYmFmLi4wZTcxODBk
YjJiY2Y0MTA5MDJkNDQ5YzdjMjYzODhhZDVmNDZlODc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtOTUwLDE3ICs5NTAsNiBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRMYXN0U2VlbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYQogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6
aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBi
b29sIGhhc1N0b3JhZ2VBY2Nlc3MgPSBmYWxzZTsKLSAgICBpZiAoYXV0byogbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgaGFzU3RvcmFn
ZUFjY2VzcyA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+aGFzU3RvcmFnZUFjY2VzcyhzdWJGcmFt
ZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCk7Ci0gICAgZWxzZQotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLQotICAgIGNvbXBsZXRpb25IYW5kbGVyKGhhc1N0
b3JhZ2VBY2Nlc3MpOwotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRBbGxTdG9yYWdlQWNj
ZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFN0cmluZz4gZG9tYWlucyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
aWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25J
RCkpCkBAIC05NzEsNjQgKzk2MCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldEFsbFN0b3Jh
Z2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxlCiAgICAgfQog
fQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhp
cy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KCkpCi0gICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5oYXNTdG9yYWdlQWNjZXNz
KHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGZhbHNlKTsKLSAgICB9IGVsc2UgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAgIH0KLX0KLQotdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNz
U3RhdHVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nl
c3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChh
dXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJlcXVl
c3RTdG9yYWdlQWNjZXNzKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRC52
YWx1ZSgpLCBwYWdlSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3RvcmFnZUFjY2Vzc1N0YXR1czo6Q2Fu
bm90UmVxdWVzdEFjY2Vzcyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NTdGF0dXM6OkNh
bm5vdFJlcXVlc3RBY2Nlc3MpOwotICAgIH0KLX0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVx
dWVzdFN0b3JhZ2VBY2Nlc3NHcmFudGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBp
ZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
KSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nl
c3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgICAgIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3MtPnJlcXVlc3RTdG9yYWdlQWNjZXNzR3JhbnRlZChzdWJGcmFtZURvbWFpbiwg
dG9wRnJhbWVEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAgICB9Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3M6
OmdyYW50U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRv
cEZyYW1lRG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlE
LCBib29sIHVzZXJXYXNQcm9tcHRlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBhY2NlcHQg
YW4gb3B0aW9uYWwgZnJhbWUgSUQgc2luY2Ugd2UgY2FsbCBmcmFtZUlELnZhbHVlKCkgdW5jb25k
aXRpb25hbGx5LgotICAgIGlmICghZnJhbWVJRCkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXV0byogbmV0d29y
a1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmdy
YW50U3RvcmFnZUFjY2VzcyhzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIGZyYW1lSUQu
dmFsdWUoKSwgcGFnZUlELCB1c2VyV2FzUHJvbXB0ZWQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2Up
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgfQotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNz
Ojpsb2dGcmFtZU5hdmlnYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgdGFyZ2V0RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9w
RnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzb3VyY2VEb21haW4sIGJvb2wg
aXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSkKIHsKICAgICBpZiAoYXV0byogbmV0d29ya1Nl
c3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CkBAIC0xMDc3LDE1ICsx
MDA4LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJVc2VySW50ZXJhY3Rpb24oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3QKICAgICB9CiB9CiAKLXZvaWQgTmV0d29y
a1Byb2Nlc3M6OnJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAg
aWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25J
RCkpCi0gICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+cmVtb3ZlQWxsU3RvcmFnZUFjY2Vz
cygpOwotICAgIGVsc2UKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlUHJldmFsZW50
RG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJs
ZURvbWFpbj4mIGRvbWFpbnMpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lv
biA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggZDAxYmM3NzUxYmM4YWFlNjMwMzAyMjNhNGI0
N2VhODkwODlkOThkZi4uMmQ2ZWZmY2Y3NTA0ZGUyYWFmYmQ5NjdlOTdiZDE4NzBjM2JjZjRlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAt
NzksNiArNzksOCBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgU1dTZXJ2ZXI7CiBlbnVt
IGNsYXNzIEluY2x1ZGVIdHRwT25seUNvb2tpZXMgOiBib29sOwogZW51bSBjbGFzcyBTdG9yZWRD
cmVkZW50aWFsc1BvbGljeSA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93biA6IGJvb2w7CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIDog
Ym9vbDsKIHN0cnVjdCBDbGllbnRPcmlnaW47CiBzdHJ1Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9y
dHM7CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwpAQCAtMjI1LDE2ICsyMjcsMTAgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0VmVyeVByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBzZXRQcnVuZUVudHJpZXNEb3duVG8oUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBy
dW5lVGFyZ2V0Q291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBo
YWRVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBoYXNTdG9yYWdl
QWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29u
c3QgVG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOwogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpT
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4gZG9tYWlucyk+
JiYpOwotICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBT
dWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4s
IFBhZ2VJRCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOwotICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3Qg
U3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+
LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgbG9n
RnJhbWVOYXZpZ2F0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGJvb2wg
aXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSk7CiAgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rp
b24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZW1vdmVQcmV2
YWxlbnREb21haW5zKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21h
aW4+Jik7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29u
c3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1l
SUQ+LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+
JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NHcmFudGVkKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwg
UGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHJlc2V0
Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldFBhcmFtZXRlcnNUb0RlZmF1
bHRWYWx1ZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklE
LCBPcHRpb25hbDxXYWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0
aXN0aWNzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXgg
NmY3NjM3OWE3N2U5MTNmNWU1OGI2NmRhZGFmZWE4MDJiZjlkZDMwMC4uNzNmZGIzMzVhNDZhYjY0
ZDJmNjk1MzIzODlhMzA3ZjFhNDVlOGI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC05OCwxOCArOTgs
MTMgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNl
dFByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4pIC0+ICgpIEFzeW5jCiAgICAgU2V0UHJldmFs
ZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZURvbWFpbikgLT4gKCkgQXN5bmMKICAgICBIYWRV
c2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiByZXNvdXJjZURvbWFpbikgLT4gKGJvb2wgaGFkVXNlckludGVyYWN0aW9uKSBB
c3luYwotICAgIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgcGFnZUlEKSAtPiAoYm9vbCBoYXNTdG9yYWdlQWNjZXNzKSBBc3luYwotICAgIEhhc1N0b3Jh
Z2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiByZXNvdXJjZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVE
b21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIC0+IChi
b29sIGhhc1N0b3JhZ2VBY2Nlc3MpIEFzeW5jCiAgICAgR2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJp
ZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoVmVjdG9yPFN0cmluZz4gZG9tYWlucykg
QXN5bmMKLSAgICBHcmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkKSAtPiAoYm9vbCBhY2Nlc3NHcmFu
dGVkKSBBc3luYwogICAgIElzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZGlyZWN0ZWRGcm9tRG9t
YWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWRpcmVjdGVkVG9Eb21haW4pIC0+IChi
b29sIGlzUmVkaXJlY3RpbmdUbykgQXN5bmMKICAgICBJc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5k
ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBz
dWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4p
IC0+IChib29sIGlzU3ViZnJhbWVVbmRlcikgQXN5bmMKICAgICBJc1JlZ2lzdGVyZWRBc1N1YnJl
c291cmNlVW5kZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiBzdWJyZXNvdXJjZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9w
RnJhbWVEb21haW4pIC0+IChib29sIGlzU3VicmVzb3VyY2VVbmRlcikgQXN5bmMKICAgICBMb2dG
cmFtZU5hdmlnYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiB0YXJnZXREb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZy
YW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzb3VyY2VEb21haW4sIGJvb2wg
aXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSkKICAgICBMb2dVc2VySW50ZXJhY3Rpb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFt
ZURvbWFpbikgLT4gKCkgQXN5bmMKLSAgICBSZW1vdmVBbGxTdG9yYWdlQWNjZXNzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICAgICBSZW1vdmVQcmV2YWxlbnREb21haW5z
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluPiBkb21haW5zV2l0aEludGVyYWN0aW9uKQotICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3Vy
Y2VEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBPcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKSAtPiAoZW51bTp1aW50OF90
IFdlYktpdDo6U3RvcmFnZUFjY2Vzc1N0YXR1cyBzdG9yYWdlQWNjZXNzU3RhdHVzKSBBc3luYwog
ICAgIFJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpIC0+ICgpIEFzeW5jCiAgICAgU2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNl
LCBlbnVtOmJvb2wgV2ViS2l0OjpTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mgc2hvdWxkR3Jh
bmRmYXRoZXIpIC0+ICgpIEFzeW5jCiAgICAgU2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA4ZTUyYWMwM2MyODA1MjE4YjlhYWNhZWM4YjM2NjA5
Mzc5ZTE2NWRmLi5hMzc3M2IxNDEyZmUzNjVhNGExMjdlODZhY2E5Y2E2NmNlNmYyMDdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTQ1Niw2ICs0NTYsOCBA
QCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6OlNoaXBwaW5n
TWV0aG9kVXBkYXRlJzogWyc8V2ViQ29yZS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5o
PiddLAogICAgICAgICAnV2ViQ29yZTo6U2hvdWxkTm90aWZ5V2hlblJlc29sdmVkJzogWyc8V2Vi
Q29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlNob3VsZFNh
bXBsZSc6IFsnPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaD4nXSwKKyAgICAgICAg
J1dlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bic6IFsnPFdlYkNvcmUvRG9jdW1l
bnRTdG9yYWdlQWNjZXNzLmg+J10sCisgICAgICAgICdXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZCc6IFsnPFdlYkNvcmUvRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmg+J10sCiAgICAgICAg
ICdXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyJzogWyc8V2ViQ29yZS9QbHVnaW5E
YXRhLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YSc6IFsn
PFdlYkNvcmUvVGV4dENoZWNraW5nLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdSZXN1bHQnOiBbJzxXZWJDb3JlL1RleHRDaGVja2VyQ2xpZW50Lmg+J10sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAppbmRleCBjMzQ0ZDE2MzgyNzM1YjBiNjgzYzY5NmY5YjY2MjY3MTA3MWQ4NDY0Li5hZjg1OWFl
YzAzNjJlOTFmOTMwYjI4NmI4ZjQyZmMyMGZhODgzMDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTcy
NiwzNiArNzI2LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRHcmFuZGZhdGhlcmVk
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXMKICAgICBzZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRHcmFuZGZhdGhlcmVkKHNlc3Npb25J
RCwgcmVzb3VyY2VEb21haW4sIGlzR3JhbmRmYXRoZXJlZCksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpoYXNTdG9yYWdlQWNjZXNz
Rm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFp
biwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmICghY2FuU2VuZE1lc3Nh
Z2UoKSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoc2Vzc2lvbklELCByZXNvdXJjZURvbWFpbiwg
dG9wRnJhbWVEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKLX0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpoYXNTdG9yYWdlQWNjZXNzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNl
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKCFjYW5TZW5kTWVzc2Fn
ZSgpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICAKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpIYXNTdG9yYWdlQWNjZXNzKHNlc3Npb25JRCwgcmVzb3VyY2VEb21haW4sIHRvcEZy
YW1lRG9tYWluLCBmcmFtZUlELCBwYWdlSUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VE
b21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBpZiAo
IWNhblNlbmRNZXNzYWdlKCkpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3RvcmFnZUFj
Y2Vzc1N0YXR1czo6Q2Fubm90UmVxdWVzdEFjY2Vzcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXF1
ZXN0U3RvcmFnZUFjY2VzcyhzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCB0b3BGcmFtZURvbWFp
biwgZnJhbWVJRCwgcGFnZUlEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotfQotCiB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybSh1aW50
NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBz
dWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IFdlYlBhZ2VQcm94eSogcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOwpA
QCAtNzY3LDMyICs3MzcsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9y
YWdlQWNjZXNzQ29uZmlybSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90CiAgICAgcGFnZS0+cmVx
dWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwg
ZnJhbWVJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmdyYW50U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlELCBib29sIHVzZXJXYXNQcm9tcHRlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBpZiAoIWNhblNlbmRNZXNzYWdl
KCkpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgYWNjZXB0IGFuIG9wdGlvbmFs
IGZyYW1lIElEIHNpbmNlIHdlIGNhbGwgZnJhbWVJRC52YWx1ZSgpIHVuY29uZGl0aW9uYWxseS4K
LSAgICBpZiAoIWZyYW1lSUQpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6R3JhbnRTdG9yYWdlQWNjZXNzKHNlc3Npb25JRCwgcmVzb3VyY2VE
b21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELnZhbHVlKCksIHBhZ2VJRCwgdXNlcldhc1By
b21wdGVkKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotfQotCi12b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OnJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0g
ICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZW1vdmVBbGxTdG9yYWdlQWNjZXNzKHNlc3Npb25JRCksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4gZG9tYWlucyk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4
IGZjYjJiNzhiNDVkYzU3MmMzNzg4M2U4ZTZhODBmYmJmOGRiMWE2YzMuLmFjM2RkODMyNTk1NWE4
YjZmYTE0ODA4MDhiMzBmZTNiZmM2MTNjZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC00OSw2ICs0OSw4IEBA
IGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwog
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogZW51bSBjbGFzcyBTaG91bGRTYW1wbGUgOiBib29sOwor
ZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gOiBib29sOworZW51bSBjbGFz
cyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA6IGJvb2w7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsK
IHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiB9CkBAIC0xMjUsMTQgKzEyNyw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShQQUw6OlNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgc2V0VmVyeVByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBoYXNT
dG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBQYWdlSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJp
ZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4g
ZG9tYWlucyk+JiYpOwotICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9u
YWw8RnJhbWVJRD4sIFBhZ2VJRCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9w
dGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN1
YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwg
UGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKTsK
ICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybShQYWdlSUQsIEZyYW1lSUQsIGNv
bnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZh
bHVlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2
b2lkIHJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0
ZW50KFBBTDo6U2Vzc2lvbklELCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQ
ZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBPcHRpb25hbDxXYWxsVGltZT4gbW9kaWZpZWRTaW5j
ZSwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShQQUw6OlNlc3Npb25J
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMDA2
NDFhMTM5ZjUzYmI0NjI0OTM5Njg0MzU2OGQwNGEzM2MyMTY5YS4uNTZlMThhYWE0NWFiYWM3YzQ5
MDNiNmM4OTQ3YzdlOGYwN2U5YmIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE2ODMsNTYgKzE2
ODMsNiBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVz
KHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbgogICAgIG5ldHdvcmtQcm9jZXNzLmdldEFs
bFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKG1fc2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25z
dCBTdHJpbmcmIHN1YkZyYW1lSG9zdCwgY29uc3QgU3RyaW5nJiB0b3BGcmFtZUhvc3QsIHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBpZiAoIXJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkKCkpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6
d2ViUGFnZShwYWdlSUQpOwotICAgIGlmICghd2ViUGFnZSkgewotICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXV0byBu
ZXR3b3JrUHJvY2VzcyA9IHdlYlBhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLm5ldHdvcmtQ
cm9jZXNzKCkpCi0gICAgICAgIG5ldHdvcmtQcm9jZXNzLT5oYXNTdG9yYWdlQWNjZXNzKG1fc2Vz
c2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhv
c3Qoc3ViRnJhbWVIb3N0KSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENy
ZWF0ZUZyb21Ib3N0KHRvcEZyYW1lSG9zdCksIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwotfQotCi12b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlcXVlc3RTdG9y
YWdlQWNjZXNzKGNvbnN0IFN0cmluZyYgc3ViRnJhbWVIb3N0LCBjb25zdCBTdHJpbmcmIHRvcEZy
YW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewot
ICAgIGlmICghcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSkgewotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5ub3RSZXF1ZXN0QWNjZXNzKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBhdXRvKiB3ZWJQYWdlID0gV2ViUHJv
Y2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7Ci0gICAgaWYgKCF3ZWJQYWdlKSB7Ci0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NTdGF0dXM6OkNhbm5vdFJlcXVlc3RBY2Nl
c3MpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF1dG8gbmV0d29ya1Byb2Nl
c3MgPSB3ZWJQYWdlLT5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5uZXR3b3JrUHJvY2VzcygpKQot
ICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+cmVxdWVzdFN0b3JhZ2VBY2Nlc3MobV9zZXNzaW9uSUQs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChzdWJG
cmFtZUhvc3QpLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJv
bUhvc3QodG9wRnJhbWVIb3N0KSwgZnJhbWVJRCwgcGFnZUlELCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7Ci19Ci0KLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNz
KFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmICghcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgYXV0byogd2ViUGFn
ZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOwotICAgIGlmICghd2ViUGFnZSkg
ewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoYXV0byBuZXR3b3JrUHJvY2VzcyA9IHdlYlBhZ2UtPnByb2Nlc3MoKS5w
cm9jZXNzUG9vbCgpLm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgIG5ldHdvcmtQcm9jZXNzLT5n
cmFudFN0b3JhZ2VBY2Nlc3MobV9zZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
Ojp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChzdWJGcmFtZUhvc3QpLCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QodG9wRnJhbWVIb3N0KSwgZnJhbWVJ
RCwgcGFnZUlELCB1c2VyV2FzUHJvbXB0ZWQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
LX0KIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9u
KFNlY29uZHMgc2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IGMyOGI3MzFiNTg1M2FlNzBkNDUyZTAzNjU1MGFj
NjVjMjkzMDQ1NmIuLjc3ZjA0OGE0NTRmMzRlNWUwOTE2ZmExOTBhZDExMjkzMDY5YWZjNmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmgKQEAgLTE2OSw5ICsxNjksNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG91
bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChib29sLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Rlc3RpbmdDYWxs
YmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY2FsbGJhY2spIHsgbV9z
dGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7IH0KICAgICB2b2lk
IHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwotICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdHJpbmcmIHN1YkZy
YW1lSG9zdCwgY29uc3QgU3RyaW5nJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9p
ZCByZXF1ZXN0U3RvcmFnZUFjY2Vzcyhjb25zdCBTdHJpbmcmIHN1YkZyYW1lSG9zdCwgY29uc3Qg
U3RyaW5nJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJik7Ci0gICAgdm9p
ZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BG
cmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCB1c2VyV2Fz
UHJvbXB0ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgc2V0
U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluKGNvbnN0IFVSTCYgc3ViZnJhbWUsIGNvbnN0IFVS
TCYgdG9wRnJhbWUpOwogICAgIHZvaWQgc2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlv
bkZvclRlc3RpbmcoY29uc3QgVVJMJiBmcm9tVVJMLCBjb25zdCBVUkwmIHRvVVJMLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhM
aW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAKaW5kZXggOWJhYTg0ZDM4YWUwODAxMTE4YTEyYjgxZTIwNGVhMmU4
ZjBlOWVmNC4uNmJjYTI3NTM1ZjQzNjhiOGVkOGIwZTgzNWE5N2ZiZjFmZWIzOGQyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAKQEAgLTYyLDYgKzYyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Rh
dGFMaXN0U3VnZ2VzdGlvblBpY2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFj
a2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudExvYWRlci5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlQ2hv
b3Nlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZUljb25Mb2FkZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ZyYW1lLmg+CkBAIC03Niw2ICs3Nyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JY29u
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3Vy
aXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KQEAg
LTEzMTEsMTQgKzEzMTMsMTQgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmRpZEludmFsaWRhdGVE
b2N1bWVudE1hcmtlclJlY3RzKCkKIH0KIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi12b2lkIFdlYkNocm9tZUNsaWVudDo6aGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBz
dWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit2b2lkIFdl
YkNocm9tZUNsaWVudDo6aGFzU3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZy
YW1lRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBtX3BhZ2UuaGFzU3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZy
YW1lSG9zdCksIFdURk1vdmUodG9wRnJhbWVIb3N0KSwgZnJhbWVJRCwgV1RGTW92ZShjYWxsYmFj
aykpOworICAgIG1fcGFnZS5oYXNTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVEb21haW4p
LCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogfQogCi12b2lkIFdlYkNocm9tZUNsaWVudDo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
U3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNr
KQordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxl
RG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21h
aW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewotICAgIG1fcGFnZS5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhXVEZN
b3ZlKHN1YkZyYW1lSG9zdCksIFdURk1vdmUodG9wRnJhbWVIb3N0KSwgZnJhbWVJRCwgV1RGTW92
ZShjYWxsYmFjaykpOworICAgIG1fcGFnZS5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1
YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXgg
NzA1YjI1ZTlmYzkxMmE2M2I1YjQ1NzdlZjJiOGQ1ZTA3MTdhMzU0MC4uNzkyNTMzMWVjOGU2NzBl
MTA1ZmY0ZDJlNmU0Nzg5MGJlOTcxZDZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMjgsNiAr
MjgsMTIgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvQ2hyb21lQ2xpZW50Lmg+CiAKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOworZW51bSBjbGFzcyBTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd24gOiBib29sOworZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZCA6IGJvb2w7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJGcmFt
ZTsKQEAgLTM2Myw4ICszNjksOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkSW52YWxpZGF0ZURv
Y3VtZW50TWFya2VyUmVjdHMoKSBmaW5hbDsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCi0gICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9z
dCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdl
SUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYpIGZpbmFsOwotICAgIHZv
aWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0
b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21w
bGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJikgZmluYWw7CisgICAgdm9pZCBoYXNTdG9yYWdl
QWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBm
aW5hbDsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgdG9w
RnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJD
b3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKSBmaW5hbDsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNDM3MDIyMmFlOGQzODc3Njc5OTMwN2Y4OTAzOTE2
NzM1Y2Y4MGE4MC4uNThhYzM4YmQ5MzdiNjI3M2NmMzFlOGUzY2NmOWEyNTViMDg1ODdjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE0Nyw2
ICsxNDcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRGcmFnbWVudC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRG9jdW1lbnRMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50
TWFya2VyQ29udHJvbGxlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRTdG9yYWdlQWNj
ZXNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRHJhZ0RhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRpbmcuaD4KQEAgLTY0NDAs
MTQgKzY0NDEsMTQgQEAgdm9pZCBXZWJQYWdlOjpmcmFtZUJlY2FtZVJlbW90ZSh1aW50NjRfdCBm
cmFtZUlELCBHbG9iYWxGcmFtZUlkZW50aWZpZXImJiByZW1vdGUKIH0KIAogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi12b2lkIFdlYlBhZ2U6Omhhc1N0b3JhZ2VBY2Nlc3Mo
U3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZy
YW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFdlYlBhZ2U6Omhhc1N0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJG
cmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3Qg
ZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6SGFzU3RvcmFnZUFjY2VzcyhzZXNzaW9uSUQoKSwg
UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHN1YkZyYW1lSG9zdCks
IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdCh0b3BGcmFtZUhvc3Qp
LCBmcmFtZUlELCBtX3BhZ2VJRCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6SGFzU3RvcmFnZUFjY2VzcyhzZXNzaW9uSUQoKSwgV1RGTW92ZShzdWJG
cmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBtX3BhZ2VJRCks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KLSAgICAKLXZvaWQgV2ViUGFnZTo6cmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFt
ZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisKK3ZvaWQgV2ViUGFnZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
UmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0
b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1By
b21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3Moc2Vzc2lvbklEKCksIFJlZ2lzdHJhYmxlRG9tYWluOjp1
bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChzdWJGcmFtZUhvc3QpLCBSZWdpc3RyYWJsZURvbWFpbjo6
dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QodG9wRnJhbWVIb3N0KSwgZnJhbWVJRCwgbV9wYWdlSUQp
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlcXVl
c3RTdG9yYWdlQWNjZXNzKHNlc3Npb25JRCgpLCBXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RG
TW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIG1fcGFnZUlEKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAppbmRleCBkOWQ4MDRjYmQ2Mzc5OTEwNTJjOGM2ZDJjMWNlMjI5ZTY3ZDM2
YTk4Li5jOTM5MDNmN2JiMzFmNGM5MzkwNDQ1Yzg2ODA2ZWVkOWNlYjkzY2FkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNzcsNiArMTc3LDggQEAg
ZW51bSBTeW50aGV0aWNDbGlja1R5cGUgOiBpbnQ4X3Q7CiBlbnVtIGNsYXNzIERPTVBhc3RlQWNj
ZXNzUmVzcG9uc2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBEcmFnSGFuZGxpbmdNZXRob2QgOiB1
aW50OF90OwogZW51bSBjbGFzcyBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgOiBib29sOwor
ZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gOiBib29sOworZW51bSBjbGFz
cyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA6IGJvb2w7CiBlbnVtIGNsYXNzIFRleHRJbmRpY2F0
b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uIDogdWludDhfdDsKIGVudW0gY2xhc3MgV3JpdGluZ0Rp
cmVjdGlvbiA6IHVpbnQ4X3Q7CiAKQEAgLTExMTgsOCArMTEyMCw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIGZsdXNoUGVuZGluZ0VkaXRvclN0YXRlVXBkYXRlKCk7CiAKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBz
dWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjayk7Ci0gICAgdm9pZCByZXF1ZXN0
U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9z
dCwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxs
YmFjayk7CisgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiYgc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJh
bWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiB0b3BG
cmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duKT4mJik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04p
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggMTY0OGM2YjAyNTlhZjdjNGQyYTFiNzZjZjc1MDhkYTgwNDQ3ODEzNy4uMDIxZTVl
NGVkNmFmNDI5MjdkMTk1NWI0OThkM2Q0Yjc1YTUyNDA2YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBA
CisyMDE5LTA1LTA3ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAg
ICAgIFN0b3JhZ2UgQWNjZXNzIEFQSTogTWFrZSB0d28gY2hhbmdlcyByZXF1ZXN0ZWQgYnkgZGV2
ZWxvcGVycyBhbmQgY29tcGxldGUgcmVmYWN0b3JpbmcgYW5kIGNsZWFudXAKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzY0OAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTA1Mjc0OTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXou
CisKKyAgICAgICAgVGhlIGNoYW5nZWQgdGVzdCBjYXNlcyBoYXZlIGhhZCBjYWxscyB0byBXZWJD
b3JlOjpJbnRlcm5hbHM6OnNldFVzZXJHcmFudHNTdG9yYWdlQWNjZXNzKCkgcmVtb3ZlZAorICAg
ICAgICBzaW5jZSBpdCB3YXMgZGVhZCBjb2RlLgorCisgICAgICAgIE9uZSBvZiB0aGUgbmV3IHRl
c3RzLCBkZW55LXdpdGgtcHJvbXB0LWRvZXMtbm90LXByZXNlcnZlLWdlc3R1cmUuaHRtbCwgaXMg
bWFya2VkIFsgU2tpcCBdIGZvciBub3cgc2luY2UKKyAgICAgICAgd2UgbGFjayB0aGUgYWJpbGl0
eSB0byBjbGljayAiRG9uJ3QgYWxsb3ciIGluIHRoZSBwcm9tcHQuIEkgd2FudGVkIHRvIGluY2x1
ZGUgdGhlIHRlc3QgYW55d2F5IHNvIHRoYXQKKyAgICAgICAgd2UgaGF2ZSBpdC4gSSBoYXZlIGRv
bmUgYSBtYW51YWwgdGVzdCB0byBtYWtlIHN1cmUgdGhlIGNvZGUgZG9lcyB0aGUgcmlnaHQgdGhp
bmcgZm9yIHRoaXMgY2FzZS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9k
ZW55LXdpdGgtcHJvbXB0LWRvZXMtbm90LXByZXNlcnZlLWdlc3R1cmUtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZGVueS13aXRoLXByb21w
dC1kb2VzLW5vdC1wcmVzZXJ2ZS1nZXN0dXJlLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1hY2Nlc3MtY3Jvc3Mt
b3JpZ2luLW5vbi1zYW5kYm94ZWQtaWZyYW1lLXBvcC13aW5kb3cuaHRtbC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZGVueS13aXRob3V0LXByb21wdC1wcmVzZXJ2ZXMtZ2Vz
dHVyZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFj
Y2Vzcy9kZW55LXdpdGhvdXQtcHJvbXB0LXByZXNlcnZlcy1nZXN0dXJlLmh0bWw6IENvcGllZCBm
cm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFu
dC1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLW5vbi1zYW5kYm94ZWQtaWZyYW1lLXBvcC13aW5kb3cuaHRt
bC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZ3JhbnQtd2l0aC1wcm9tcHQt
cHJlc2VydmVzLWdlc3R1cmUtZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LWFjY2Vzcy1jcm9zcy1v
cmlnaW4tbm9uLXNhbmRib3hlZC1pZnJhbWUtcG9wLXdpbmRvdy1leHBlY3RlZC50eHQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2dyYW50LXdpdGgtcHJvbXB0LXByZXNlcnZl
cy1nZXN0dXJlLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3Jh
Z2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtYWNjZXNzLWNyb3NzLW9yaWdpbi1ub24tc2FuZGJv
eGVkLWlmcmFtZS1wb3Atd2luZG93Lmh0bWwuCisgICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdl
QWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy10cnVlLWlmLWZlYXR1cmUtb2ZmLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdl
LWFjY2Vzcy10cnVlLWlmLWZlYXR1cmUtb2ZmLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1hbmQt
aW1tZWRpYXRlbHktcG9zdG1lc3NhZ2UtaWZyYW1lLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0
cy9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLWlmcmFtZS1h
bmQtcG9wLXdpbmRvdy5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9y
ZXNvdXJjZXMvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUuaHRtbDoKKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mt
d2l0aG91dC11c2VyLWdlc3R1cmUtaWZyYW1lLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9z
dG9yYWdlQWNjZXNzL3Jlc291cmNlcy9zZWxmLW5hdmlnYXRpbmctZnJhbWUtYWZ0ZXItZ3JhbnRl
ZC1hY2Nlc3MuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlv
bnM6CisgICAgICAgICAgICBBZGRlZCBleHBlY3RhdGlvbnMgZm9yIHRoZSBuZXcgdGVzdHMuCisK
IDIwMTktMDUtMDYgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAg
ICAgICAgIEhpdHBvaW50IGZvciBsaW5rIHdoaWNoIHNwYW5zIHR3byBsaW5lcyBpbiB3ZWIgY29u
dGVudCBpcyBpbmNvcnJlY3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3Rv
cmFnZUFjY2Vzcy9kZW55LXdpdGgtcHJvbXB0LWRvZXMtbm90LXByZXNlcnZlLWdlc3R1cmUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnktd2l0
aC1wcm9tcHQtZG9lcy1ub3QtcHJlc2VydmUtZ2VzdHVyZS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2FkMjEwOGNiYjMzZjUwZThkZmU0YjI5ODUzMTk2MTc1NTM3ZWZkYQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9kZW55LXdpdGgtcHJv
bXB0LWRvZXMtbm90LXByZXNlcnZlLWdlc3R1cmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAg
QEAKK1Rlc3RzIHRoYXQgYSBjcm9zcy1vcmlnaW4gaWZyYW1lIGNhbiBub3Qgb3BlbiBhIHdpbmRv
dyBpZiBzdG9yYWdlIGFjY2VzcyBpcyBleHBsaWNpdGx5IGRlbmllZC4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1MgV2luZG93IHdhcyBzdWNjZXNzZnVsbHkgb3BlbmVkIHdp
dGggdXNlciBpbnRlcmFjdGlvbiBzaW5jZSB0aGUgdXNlciB3YXMgbmV2ZXIgY29uc3VsdGVkL3By
b21wdGVkLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9kZW55
LXdpdGgtcHJvbXB0LWRvZXMtbm90LXByZXNlcnZlLWdlc3R1cmUuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9kZW55LXdpdGgtcHJvbXB0LWRvZXMtbm90LXByZXNl
cnZlLWdlc3R1cmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTdhMjBkOWY4MjQxZmM4NjM0YWIxZjgwZTNh
M2IzZmEwYTAxMjZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
dG9yYWdlQWNjZXNzL2Rlbnktd2l0aC1wcm9tcHQtZG9lcy1ub3QtcHJlc2VydmUtZ2VzdHVyZS5o
dG1sCkBAIC0wLDAgKzEsNzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAg
ICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL3V0
aWwuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0
cyB0aGF0IGEgY3Jvc3Mtb3JpZ2luIGlmcmFtZSBjYW4gbm90IG9wZW4gYSB3aW5kb3cgaWYgc3Rv
cmFnZSBhY2Nlc3MgaXMgZXhwbGljaXRseSBkZW5pZWQuIik7CisgICAgICAgIGpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgICAgIGNvbnN0IGhvc3RVbmRlclRlc3QgPSAibG9jYWxob3N0Ojgw
MDAiOworICAgICAgICBjb25zdCBzdGF0aXN0aWNzVXJsID0gImh0dHA6Ly8iICsgaG9zdFVuZGVy
VGVzdCArICIvdGVtcCI7CisKKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3Nh
Z2UiLCByZWNlaXZlTWVzc2FnZSwgZmFsc2UpOworCisgICAgICAgIGZ1bmN0aW9uIHJlY2VpdmVN
ZXNzYWdlKGV2ZW50KSB7CisgICAgICAgICAgICBpZiAoZXZlbnQub3JpZ2luID09PSAiaHR0cDov
L2xvY2FsaG9zdDo4MDAwIikgeworICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLmluZGV4
T2YoIlBBU1MgIikgIT09IC0xKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKGV2ZW50
LmRhdGEucmVwbGFjZSgiUEFTUyAiLCAiIikpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZChldmVudC5kYXRhLnJlcGxhY2UoIkZBSUwgIiwgIiIp
KTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlJlY2Vp
dmVkIGEgbWVzc2FnZSBmcm9tIGFuIHVuZXhwZWN0ZWQgb3JpZ2luOiAiICsgZXZlbnQub3JpZ2lu
KTsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElkKSB7
CisgICAgICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1l
bnRJZCk7CisgICAgICAgICAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVs
ZW1lbnQub2Zmc2V0V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIGNlbnRlclkgPSBlbGVtZW50
Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIFVJSGVs
cGVyLmFjdGl2YXRlQXQoY2VudGVyWCwgY2VudGVyWSkudGhlbigKKyAgICAgICAgICAgICAgICBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIp
CisgICAgICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJlc2NhcGUiKTsK
KyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJObyBldmVudFNlbmRlci4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldEVu
YWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiUHJvbWlzZSByZWplY3RlZC4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gcnVuVGVzdCgpIHsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRDYW5PcGVuV2luZG93cyhmYWxz
ZSk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRQb3B1cEJsb2NraW5nRW5hYmxlZCh0
cnVlKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRS
ZXNvdXJjZShzdGF0aXN0aWNzVXJsLCB0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRp
c3RpY3NVcmwpKQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQg
bm90IGdldCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOworICAgICAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oc3RhdGlzdGlj
c1VybCwgdHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRl
c3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKHN0YXRpc3RpY3NVcmwp
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBn
ZXQgbG9nZ2VkIGZvciB1c2VyIGludGVyYWN0aW9uLiIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmcoZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlmcmFtZUVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZnJhbWVFbGVtZW50Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhY3RpdmF0ZUVsZW1lbnQoIlRoZUlmcmFtZVRoYXRSZXF1ZXN0c1N0b3JhZ2VB
Y2Nlc3MiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQuaWQgPSAiVGhlSWZyYW1lVGhhdFJlcXVlc3RzU3Rv
cmFnZUFjY2VzcyI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5z
cmMgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVl
c3Qtc3RvcmFnZS1hY2Nlc3MtaWZyYW1lLWFuZC1wb3Atd2luZG93Lmh0bWwjdXNlclNob3VsZE5v
dEdyYW50QWNjZXNzLHVzZXJTaG91bGRCZUNvbnN1bHRlZCxwb2xpY3lTaG91bGROb3RHcmFudEFj
Y2Vzcyxpc05vdFNhbWVPcmlnaW5JZnJhbWUiOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lRWxlbWVudCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFn
ZUFjY2Vzcy9kZW55LXdpdGhvdXQtcHJvbXB0LXByZXNlcnZlcy1nZXN0dXJlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9kZW55LXdpdGhvdXQtcHJv
bXB0LXByZXNlcnZlcy1nZXN0dXJlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGFmZGUzNGQ3
NDI2M2NjNTJlYmZjZDY0MzcxMTYxNjAxZjYzMjEwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnktd2l0aG91dC1wcm9tcHQtcHJlc2Vy
dmVzLWdlc3R1cmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIHRoYXQgYSBj
cm9zcy1vcmlnaW4gaWZyYW1lIGNhbiBvcGVuIGEgd2luZG93IGlmIHN0b3JhZ2UgYWNjZXNzIGlz
IGRlbmllZCB3aXRob3V0IHByb21wdC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgV2luZG93IHdhcyBzdWNjZXNzZnVsbHkgb3BlbmVkIHdpdGggdXNlciBpbnRlcmFjdGlv
biBzaW5jZSB0aGUgdXNlciB3YXMgbmV2ZXIgY29uc3VsdGVkL3Byb21wdGVkLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9kZW55LXdpdGhvdXQtcHJvbXB0LXBy
ZXNlcnZlcy1nZXN0dXJlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nl
c3MvZGVueS13aXRob3V0LXByb21wdC1wcmVzZXJ2ZXMtZ2VzdHVyZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmIxZmM0ZDhiZGViNjI2MGFhZTlhZWMwYTI0NmJlYTVmMjE2YTAxNmMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZGVueS13aXRob3V0LXBy
b21wdC1wcmVzZXJ2ZXMtZ2VzdHVyZS5odG1sCkBAIC0wLDAgKzEsNzQgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJj
ZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+Cisg
ICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGEgY3Jvc3Mtb3JpZ2luIGlmcmFtZSBjYW4g
b3BlbiBhIHdpbmRvdyBpZiBzdG9yYWdlIGFjY2VzcyBpcyBkZW5pZWQgd2l0aG91dCBwcm9tcHQu
Iik7CisgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIGNvbnN0IGhvc3RV
bmRlclRlc3QgPSAibG9jYWxob3N0OjgwMDAiOworICAgICAgICBjb25zdCBzdGF0aXN0aWNzVXJs
ID0gImh0dHA6Ly8iICsgaG9zdFVuZGVyVGVzdCArICIvdGVtcCI7CisKKyAgICAgICAgd2luZG93
LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWNlaXZlTWVzc2FnZSwgZmFsc2UpOworCisg
ICAgICAgIGZ1bmN0aW9uIHJlY2VpdmVNZXNzYWdlKGV2ZW50KSB7CisgICAgICAgICAgICBpZiAo
ZXZlbnQub3JpZ2luID09PSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIikgeworICAgICAgICAgICAg
ICAgIGlmIChldmVudC5kYXRhLmluZGV4T2YoIlBBU1MgIikgIT09IC0xKQorICAgICAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKGV2ZW50LmRhdGEucmVwbGFjZSgiUEFTUyAiLCAiIikpOworICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChldmVudC5k
YXRhLnJlcGxhY2UoIkZBSUwgIiwgIiIpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoIlJlY2VpdmVkIGEgbWVzc2FnZSBmcm9tIGFuIHVuZXhwZWN0ZWQg
b3JpZ2luOiAiICsgZXZlbnQub3JpZ2luKTsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUo
ZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBhY3Rp
dmF0ZUVsZW1lbnQoZWxlbWVudElkKSB7CisgICAgICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7CisgICAgICAgICAgICB2YXIgY2VudGVyWCA9
IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOworICAgICAgICAg
ICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0
IC8gMjsKKyAgICAgICAgICAgIFVJSGVscGVyLmFjdGl2YXRlQXQoY2VudGVyWCwgY2VudGVyWSku
dGhlbigKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5rZXlEb3duKCJlc2NhcGUiKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJObyBldmVudFNlbmRlci4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiUHJvbWlz
ZSByZWplY3RlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxz
ZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICApOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgICAgIHNldEVu
YWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRDYW5PcGVuV2luZG93cyhmYWxzZSk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRQb3B1cEJsb2NraW5nRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
LnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsLCB0cnVlLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQgbm90IGdldCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNl
LiIpOworICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NIYXNIYWRV
c2VySW50ZXJhY3Rpb24oc3RhdGlzdGljc1VybCwgZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzSGFkVXNlcklu
dGVyYWN0aW9uKHN0YXRpc3RpY3NVcmwpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoIkhvc3QgZGlkIGdldCBsb2dnZWQgZm9yIHVzZXIgaW50ZXJhY3Rpb24uIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NVcGRhdGVDb29raWVC
bG9ja2luZyhmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWZy
YW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQub25sb2FkID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2YXRlRWxlbWVudCgiVGhlSWZyYW1l
VGhhdFJlcXVlc3RzU3RvcmFnZUFjY2VzcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5pZCA9ICJUaGVJ
ZnJhbWVUaGF0UmVxdWVzdHNTdG9yYWdlQWNjZXNzIjsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZnJhbWVFbGVtZW50LnNyYyA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvc3RvcmFnZUFj
Y2Vzcy9yZXNvdXJjZXMvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUtYW5kLXBvcC13aW5k
b3cuaHRtbCN1c2VyU2hvdWxkTm90R3JhbnRBY2Nlc3MsdXNlclNob3VsZE5vdEJlQ29uc3VsdGVk
LHBvbGljeVNob3VsZE5vdEdyYW50QWNjZXNzLGlzTm90U2FtZU9yaWdpbklmcmFtZSI7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWVF
bGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9Cisg
ICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2JvZHk+
Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2dyYW50LXdpdGgtcHJvbXB0LXByZXNlcnZl
cy1nZXN0dXJlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFj
Y2Vzcy9ncmFudC13aXRoLXByb21wdC1wcmVzZXJ2ZXMtZ2VzdHVyZS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDdlYzRjZjdmNzg0MWQ1N2M2OGRkYjVmYTY2Y2I1NjM0YjMxZGEzYgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC13
aXRoLXByb21wdC1wcmVzZXJ2ZXMtZ2VzdHVyZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBA
QAorVGVzdHMgdGhhdCBjcm9zcy1vcmlnaW4gaWZyYW1lIGNhbiBkaXNwbGF5IGEgd2luZG93IGlm
IHN0b3JhZ2UgYWNjZXNzIGlzIGdyYW50ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIFdpbmRvdyB3YXMgc3VjY2Vzc2Z1bGx5IG9wZW5lZCB3aXRoIHVzZXIgaW50ZXJh
Y3Rpb24uCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2dyYW50
LXdpdGgtcHJvbXB0LXByZXNlcnZlcy1nZXN0dXJlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3N0b3JhZ2VBY2Nlc3MvZ3JhbnQtd2l0aC1wcm9tcHQtcHJlc2VydmVzLWdlc3R1cmUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44MzQxMjgzODE2ZTA3OWRkNjNjNGM5YjY2Mzk3NTJiNmYyYTNiY2M3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2dy
YW50LXdpdGgtcHJvbXB0LXByZXNlcnZlcy1nZXN0dXJlLmh0bWwKQEAgLTAsMCArMSw3NCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVz
dC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10
ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdD4KKyAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgY3Jvc3Mtb3JpZ2luIGlm
cmFtZSBjYW4gZGlzcGxheSBhIHdpbmRvdyBpZiBzdG9yYWdlIGFjY2VzcyBpcyBncmFudGVkLiIp
OworICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICBjb25zdCBob3N0VW5k
ZXJUZXN0ID0gImxvY2FsaG9zdDo4MDAwIjsKKyAgICAgICAgY29uc3Qgc3RhdGlzdGljc1VybCA9
ICJodHRwOi8vIiArIGhvc3RVbmRlclRlc3QgKyAiL3RlbXAiOworCisgICAgICAgIHdpbmRvdy5h
ZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjZWl2ZU1lc3NhZ2UsIGZhbHNlKTsKKworICAg
ICAgICBmdW5jdGlvbiByZWNlaXZlTWVzc2FnZShldmVudCkgeworICAgICAgICAgICAgaWYgKGV2
ZW50Lm9yaWdpbiA9PT0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoZXZlbnQuZGF0YS5pbmRleE9mKCJQQVNTICIpICE9PSAtMSkKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZChldmVudC5kYXRhLnJlcGxhY2UoIlBBU1MgIiwgIiIpKTsKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoZXZlbnQuZGF0
YS5yZXBsYWNlKCJGQUlMICIsICIiKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJSZWNlaXZlZCBhIG1lc3NhZ2UgZnJvbSBhbiB1bmV4cGVjdGVkIG9y
aWdpbjogIiArIGV2ZW50Lm9yaWdpbik7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZh
bHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gYWN0aXZh
dGVFbGVtZW50KGVsZW1lbnRJZCkgeworICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpOworICAgICAgICAgICAgdmFyIGNlbnRlclggPSBl
bGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAgICAgICAgICAg
IHZhciBjZW50ZXJZID0gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAv
IDI7CisgICAgICAgICAgICBVSUhlbHBlci5hY3RpdmF0ZUF0KGNlbnRlclgsIGNlbnRlclkpLnRo
ZW4oCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBp
ZiAod2luZG93LmV2ZW50U2VuZGVyKQorICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIua2V5RG93bigiZXNjYXBlIik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTm8gZXZlbnRTZW5kZXIuIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlByb21pc2Ug
cmVqZWN0ZWQuIik7CisgICAgICAgICAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2Us
IGZpbmlzaEpTVGVzdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgICAgICBzZXRFbmFi
bGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
c2V0Q2FuT3BlbldpbmRvd3MoZmFsc2UpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
UG9wdXBCbG9ja2luZ0VuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCwgdHJ1ZSwgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQ
cmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4i
KTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzSGFzSGFkVXNl
ckludGVyYWN0aW9uKHN0YXRpc3RpY3NVcmwsIHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRl
cmFjdGlvbihzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IGxvZ2dlZCBmb3IgdXNlciBpbnRlcmFjdGlvbi4iKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNvb2tp
ZUJsb2NraW5nKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBp
ZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5vbmxvYWQgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZhdGVFbGVtZW50KCJUaGVJZnJh
bWVUaGF0UmVxdWVzdHNTdG9yYWdlQWNjZXNzIik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50LmlkID0gIlRo
ZUlmcmFtZVRoYXRSZXF1ZXN0c1N0b3JhZ2VBY2Nlc3MiOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmcmFtZUVsZW1lbnQuc3JjID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zdG9yYWdl
QWNjZXNzL3Jlc291cmNlcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLWlmcmFtZS1hbmQtcG9wLXdp
bmRvdy5odG1sI3VzZXJTaG91bGRHcmFudEFjY2Vzcyx1c2VyU2hvdWxkQmVDb25zdWx0ZWQscG9s
aWN5U2hvdWxkR3JhbnRBY2Nlc3MsaXNOb3RTYW1lT3JpZ2luSWZyYW1lIjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZUVsZW1lbnQp
OworICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICA8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzwvYm9keT4KKzwvaHRt
bD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvaGFzLXN0b3JhZ2UtYWNjZXNzLXRydWUtaWYtZmVhdHVy
ZS1vZmYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNz
L2hhcy1zdG9yYWdlLWFjY2Vzcy10cnVlLWlmLWZlYXR1cmUtb2ZmLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yNDk2MzFiMTRjOGM2NDQwYTAzNjgzMjU2MjUwNWUxMjA5ODZjNDhlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9y
YWdlLWFjY2Vzcy10cnVlLWlmLWZlYXR1cmUtb2ZmLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEw
IEBACitUZXN0cyB0aGF0IGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3MoKSByZXR1cm5zIHRydWUg
Zm9yIGEgM3JkLXBhcnR5IGlmcmFtZSBpZiB0aGVyZSBpcyBubyB3YXkgdG8gcmVxdWVzdCBhY2Nl
c3MgKGZlYXR1cmUgb2ZmKS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
SGFzIHN0b3JhZ2UgYWNjZXNzLiBkb2N1bWVudC5jb29raWUgPT0gLCBjb29raWVzIHNlZW4gc2Vy
dmVyLXNpZGUgPT0gIk5vIGNvb2tpZXMiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
dG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy10cnVlLWlmLWZlYXR1cmUtb2ZmLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvaGFzLXN0b3JhZ2UtYWNjZXNz
LXRydWUtaWYtZmVhdHVyZS1vZmYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kM2ZjYjUyZDEwNDRjNzkyZjI3
NjE2N2QwNjE3ZWZlYmJhOTViMjgxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy10cnVlLWlmLWZlYXR1cmUt
b2ZmLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJj
ZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZGVzY3JpcHRpb24o
IlRlc3RzIHRoYXQgZG9jdW1lbnQuaGFzU3RvcmFnZUFjY2VzcygpIHJldHVybnMgdHJ1ZSBmb3Ig
YSAzcmQtcGFydHkgaWZyYW1lIGlmIHRoZXJlIGlzIG5vIHdheSB0byByZXF1ZXN0IGFjY2VzcyAo
ZmVhdHVyZSBvZmYpLiIpOworICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAg
ICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY2VpdmVNZXNzYWdlLCBmYWxz
ZSk7CisKKyAgICAgICAgZnVuY3Rpb24gcmVjZWl2ZU1lc3NhZ2UoZXZlbnQpIHsKKyAgICAgICAg
ICAgIGlmIChldmVudC5vcmlnaW4gPT09ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuaW5kZXhPZigiUEFTUyIpICE9PSAtMSkKKyAgICAg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZChldmVudC5kYXRhLnJlcGxhY2UoIlBBU1MgIiwgIiIp
KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ZXZlbnQuZGF0YS5yZXBsYWNlKCJGQUlMICIsICIiKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJSZWNlaXZlZCBhIG1lc3NhZ2UgZnJvbSBhbiB1bmV4
cGVjdGVkIG9yaWdpbjogIiArIGV2ZW50Lm9yaWdpbik7CisgICAgICAgICAgICBzZXRFbmFibGVG
ZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICB9CisKKyAgICAgICAgY29uc3Qg
aG9zdFVuZGVyVGVzdCA9ICJsb2NhbGhvc3Q6ODAwMCI7CisgICAgICAgIGNvbnN0IHN0YXRpc3Rp
Y3NVcmwgPSAiaHR0cDovLyIgKyBob3N0VW5kZXJUZXN0ICsgIi90ZW1wIjsKKyAgICAgICAgZnVu
Y3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGxldCBpZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5p
ZCA9ICJUaGVJZnJhbWVUaGF0UmVxdWVzdHNTdG9yYWdlQWNjZXNzIjsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVFbGVtZW50LnNyYyA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvc3RvcmFnZUFjY2Vz
cy9yZXNvdXJjZXMvaGFzLXN0b3JhZ2UtYWNjZXNzLWlmcmFtZS5odG1sI3BvbGljeVNob3VsZEdy
YW50QWNjZXNzIjsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlm
cmFtZUVsZW1lbnQpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzwvYm9keT4KKzwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtYWNjZXNzLWNyb3NzLW9yaWdpbi1u
b24tc2FuZGJveGVkLWlmcmFtZS1wb3Atd2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1hY2Nlc3MtY3Jvc3Mt
b3JpZ2luLW5vbi1zYW5kYm94ZWQtaWZyYW1lLXBvcC13aW5kb3ctZXhwZWN0ZWQudHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkN2VjNGNmN2Y3ODQxZDU3YzY4ZGRiNWZhNjZjYjU2
MzRiMzFkYTNiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1h
Y2Nlc3MtY3Jvc3Mtb3JpZ2luLW5vbi1zYW5kYm94ZWQtaWZyYW1lLXBvcC13aW5kb3ctZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotVGVzdHMgdGhhdCBjcm9zcy1v
cmlnaW4gaWZyYW1lIGNhbiBkaXNwbGF5IGEgd2luZG93IGlmIHN0b3JhZ2UgYWNjZXNzIGlzIGdy
YW50ZWQuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIFdpbmRvdyB3YXMg
c3VjY2Vzc2Z1bGx5IG9wZW5lZCB3aXRoIHVzZXIgaW50ZXJhY3Rpb24uCi1QQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LWFjY2Vzcy1j
cm9zcy1vcmlnaW4tbm9uLXNhbmRib3hlZC1pZnJhbWUtcG9wLXdpbmRvdy5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LWFjY2Vzcy1j
cm9zcy1vcmlnaW4tbm9uLXNhbmRib3hlZC1pZnJhbWUtcG9wLXdpbmRvdy5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTFmOWZiYjQxN2FmNzZkZTY2YjVmOTQ4NzEzZGQwODYx
Yzk2YzM2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1hY2Nl
c3MtY3Jvc3Mtb3JpZ2luLW5vbi1zYW5kYm94ZWQtaWZyYW1lLXBvcC13aW5kb3cuaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVh
ZD4KLSAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgotICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48
L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3Vy
Y2VzL3V0aWwuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQ+Ci0gICAgICAgIGRlc2NyaXB0aW9u
KCJUZXN0cyB0aGF0IGNyb3NzLW9yaWdpbiBpZnJhbWUgY2FuIGRpc3BsYXkgYSB3aW5kb3cgaWYg
c3RvcmFnZSBhY2Nlc3MgaXMgZ3JhbnRlZC4iKTsKLSAgICAgICAganNUZXN0SXNBc3luYyA9IHRy
dWU7Ci0KLSAgICAgICAgY29uc3QgaG9zdFVuZGVyVGVzdCA9ICJsb2NhbGhvc3Q6ODAwMCI7Ci0g
ICAgICAgIGNvbnN0IHN0YXRpc3RpY3NVcmwgPSAiaHR0cDovLyIgKyBob3N0VW5kZXJUZXN0ICsg
Ii90ZW1wIjsKLQotICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJl
Y2VpdmVNZXNzYWdlLCBmYWxzZSk7Ci0KLSAgICAgICAgZnVuY3Rpb24gcmVjZWl2ZU1lc3NhZ2Uo
ZXZlbnQpIHsKLSAgICAgICAgICAgIGlmIChldmVudC5vcmlnaW4gPT09ICJodHRwOi8vbG9jYWxo
b3N0OjgwMDAiKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuaW5kZXhPZigiUEFT
UyAiKSAhPT0gLTEpCi0gICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoZXZlbnQuZGF0YS5y
ZXBsYWNlKCJQQVNTICIsICIiKSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKGV2ZW50LmRhdGEpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiUmVjZWl2ZWQgYSBtZXNzYWdlIGZyb20gYW4gdW5leHBl
Y3RlZCBvcmlnaW46ICIgKyBldmVudC5vcmlnaW4pOwotICAgICAgICAgICAgc2V0RW5hYmxlRmVh
dHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9u
IGFjdGl2YXRlRWxlbWVudChlbGVtZW50SWQpIHsKLSAgICAgICAgICAgIHZhciBlbGVtZW50ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKLSAgICAgICAgICAgIHZhciBjZW50
ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7Ci0gICAg
ICAgICAgICB2YXIgY2VudGVyWSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRI
ZWlnaHQgLyAyOwotICAgICAgICAgICAgVUlIZWxwZXIuYWN0aXZhdGVBdChjZW50ZXJYLCBjZW50
ZXJZKS50aGVuKAotICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikKLSAgICAgICAgICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmtleURvd24oImVzY2FwZSIpOwotICAgICAgICAgICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk5vIGV2ZW50U2VuZGVyLiIpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNU
ZXN0KTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICAgICAgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJQ
cm9taXNlIHJlamVjdGVkLiIpOwotICAgICAgICAgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJl
KGZhbHNlLCBmaW5pc2hKU1Rlc3QpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICk7
Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgewotICAgICAgICAgICAg
c2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLnNldENhbk9wZW5XaW5kb3dzKGZhbHNlKTsKLSAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKHRydWUpOwotICAgICAgICAgICAgICAgIHRlc3RS
dW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwsIHRydWUs
IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0
aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCkpCi0gICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBhcyBwcmV2YWxlbnQgcmVz
b3VyY2UuIik7Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0hh
c0hhZFVzZXJJbnRlcmFjdGlvbihzdGF0aXN0aWNzVXJsLCB0cnVlLCBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNIYWRV
c2VySW50ZXJhY3Rpb24oc3RhdGlzdGljc1VybCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQgbm90IGdldCBsb2dnZWQgZm9yIHVzZXIgaW50ZXJhY3Rp
b24uIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NVcGRh
dGVDb29raWVCbG9ja2luZyhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsZXQgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQub25sb2FkID0gZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2YXRlRWxlbWVudCgi
VGhlSWZyYW1lVGhhdFJlcXVlc3RzU3RvcmFnZUFjY2VzcyIpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5p
ZCA9ICJUaGVJZnJhbWVUaGF0UmVxdWVzdHNTdG9yYWdlQWNjZXNzIjsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50LnNyYyA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAv
c3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUtYW5k
LXBvcC13aW5kb3cuaHRtbCN1c2VyU2hvdWxkR3JhbnRBY2Nlc3MsdXNlclNob3VsZEJlQ29uc3Vs
dGVkLHBvbGljeVNob3VsZEdyYW50QWNjZXNzLGlzTm90U2FtZU9yaWdpbklmcmFtZSI7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWVF
bGVtZW50KTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0K
LSAgICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTwvYm9k
eT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFn
ZS1hY2Nlc3MtYW5kLWltbWVkaWF0ZWx5LXBvc3RtZXNzYWdlLWlmcmFtZS5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9yZXF1ZXN0LXN0b3JhZ2Ut
YWNjZXNzLWFuZC1pbW1lZGlhdGVseS1wb3N0bWVzc2FnZS1pZnJhbWUuaHRtbAppbmRleCAyODQw
ZmMxMzUwOTRmNjBkMTVhYzlhMTI2YmEyN2Q3YWNjNjNiY2U1Li41ZDk0ODAxNWUwNzUyMjgwNzFk
MjRiZDNjN2MzYTAxN2E3MjA3MzE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtYW5kLWltbWVk
aWF0ZWx5LXBvc3RtZXNzYWdlLWlmcmFtZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1hbmQtaW1t
ZWRpYXRlbHktcG9zdG1lc3NhZ2UtaWZyYW1lLmh0bWwKQEAgLTEsOSArMSw2IEBACiA8aHRtbD4K
IDxoZWFkPgogICAgIDxzY3JpcHQ+Ci0gICAgICAgIGlmIChpbnRlcm5hbHMpCi0gICAgICAgICAg
ICBpbnRlcm5hbHMuc2V0VXNlckdyYW50c1N0b3JhZ2VBY2Nlc3ModHJ1ZSk7Ci0KICAgICAgICAg
ZnVuY3Rpb24gbWFrZVJlcXVlc3RXaXRoVXNlckdlc3R1cmUoKSB7CiAgICAgICAgICAgICBkb2N1
bWVudC5yZXF1ZXN0U3RvcmFnZUFjY2VzcygpOwogICAgICAgICAgICAgdG9wLnBvc3RNZXNzYWdl
KCJBUEkgY2FsbGVkLiIsICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvcmVxdWVzdC1zdG9y
YWdlLWFjY2Vzcy1pZnJhbWUtYW5kLXBvcC13aW5kb3cuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1pZnJh
bWUtYW5kLXBvcC13aW5kb3cuaHRtbAppbmRleCA4ZGE1MmJmZmIwOGQ2OWU1ZmY2ZDZmZjk2Nzcz
MTc2OTJkZmQ0OTM0Li40NjcxNGZlZGZiOTA3Zjk4ZGJmZjQwY2E2MGUyMjcyNTE4ZjhhNzRiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2Vz
L3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtaWZyYW1lLWFuZC1wb3Atd2luZG93Lmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9yZXF1ZXN0LXN0
b3JhZ2UtYWNjZXNzLWlmcmFtZS1hbmQtcG9wLXdpbmRvdy5odG1sCkBAIC04LDkgKzgsNiBAQAog
ICAgICAgICBjb25zdCBpc1NhbWVPcmlnaW5JZnJhbWUgPSBoYXNoQXJndW1lbnRzWzNdID09PSAi
aXNTYW1lT3JpZ2luSWZyYW1lIjsKICAgICAgICAgY29uc3Qgb3JpZ2luSXNOdWxsID0gaGFzaEFy
Z3VtZW50c1s0XSA9PT0gIm9yaWdpbklzTnVsbCI7CiAKLSAgICAgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCi0gICAgICAgICAgICBpbnRlcm5hbHMuc2V0VXNlckdyYW50c1N0b3JhZ2VBY2Nlc3Mo
dXNlclNob3VsZEdyYW50QWNjZXNzKTsKLQogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3MoZmFsc2UpOwogICAg
ICAgICAgICAgdGVzdFJ1bm5lci5zZXRQb3B1cEJsb2NraW5nRW5hYmxlZCh0cnVlKTsKQEAgLTI1
LDEwICsyMiwxNCBAQAogCiAgICAgICAgIGZ1bmN0aW9uIHdpbmRvd1dhc09wZW5lZCgpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGlmICh1c2VyU2hvdWxkR3JhbnRBY2Nlc3MpCisgICAgICAgICAg
ICBpZiAodXNlclNob3VsZEJlQ29uc3VsdGVkICYmIHVzZXJTaG91bGRHcmFudEFjY2VzcykKICAg
ICAgICAgICAgICAgICBtZXNzYWdlVG9Ub3AoIlBBU1MgV2luZG93IHdhcyBzdWNjZXNzZnVsbHkg
b3BlbmVkIHdpdGggdXNlciBpbnRlcmFjdGlvbi4iKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHVz
ZXJTaG91bGRCZUNvbnN1bHRlZCAmJiAhdXNlclNob3VsZEdyYW50QWNjZXNzKQorICAgICAgICAg
ICAgICAgIG1lc3NhZ2VUb1RvcCgiRkFJTCBXaW5kb3cgd2FzIG9wZW5lZCBldmVuIHRob3VnaCB0
aGUgdXNlciBleHBsaWNpdGx5IGRlY2xpbmVkIHBlcm1pc3Npb24uIik7CisgICAgICAgICAgICBl
bHNlIGlmICghdXNlclNob3VsZEJlQ29uc3VsdGVkICYmICF1c2VyU2hvdWxkR3JhbnRBY2Nlc3Mp
CisgICAgICAgICAgICAgICAgbWVzc2FnZVRvVG9wKCJQQVNTIFdpbmRvdyB3YXMgc3VjY2Vzc2Z1
bGx5IG9wZW5lZCB3aXRoIHVzZXIgaW50ZXJhY3Rpb24gc2luY2UgdGhlIHVzZXIgd2FzIG5ldmVy
IGNvbnN1bHRlZC9wcm9tcHRlZC4iKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBtZXNzYWdlVG9Ub3AoIldpbmRvdyB3YXMgb3BlbmVkIGV2ZW4gdGhvdWdoIHRoZSB1c2VyIGRl
Y2xpbmVkIHBlcm1pc3Npb24uIik7CisgICAgICAgICAgICAgICAgbWVzc2FnZVRvVG9wKCJGQUlM
IENvbmZsaWN0aW5nIGluc3RydWN0aW9uczogIXVzZXJTaG91bGRCZUNvbnN1bHRlZCAmJiB1c2Vy
U2hvdWxkR3JhbnRBY2Nlc3MgLiIpOwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gbWFr
ZVJlcXVlc3RXaXRoVXNlckdlc3R1cmUoKSB7CkBAIC00OCwxMiArNDksMTQgQEAKICAgICAgICAg
ZnVuY3Rpb24gY29udGludWVBZnRlclJlcXVlc3RXaXRoVXNlckdlc3R1cmUoKSB7CiAgICAgICAg
ICAgICB2YXIgd2luID0gd2luZG93Lm9wZW4oInJlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mtc2Vjb25k
LXdpbmRvdy5odG1sIiwgInRlc3Qgd2luZG93Iik7CiAgICAgICAgICAgICBpZiAoIXdpbikgewot
ICAgICAgICAgICAgICAgIGlmICh1c2VyU2hvdWxkR3JhbnRBY2Nlc3MpCi0gICAgICAgICAgICAg
ICAgICAgIG1lc3NhZ2VUb1RvcCgiV2luZG93IHdhcyBub3Qgb3BlbmVkIGV2ZW4gdGhvdWdoIHRo
ZSB1c2VyIGdyYW50ZWQgcGVybWlzc2lvbi4iKTsKLSAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgaWYgKHVzZXJTaG91bGRCZUNvbnN1bHRlZCAmJiB1c2VyU2hvdWxkR3JhbnRB
Y2Nlc3MpCisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VUb1RvcCgiRkFJTCBXaW5kb3cgd2Fz
IG5vdCBvcGVuZWQgZXZlbiB0aG91Z2ggdGhlIHVzZXIgZXhwbGljaXRseSBncmFudGVkIHBlcm1p
c3Npb24uIik7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAodXNlclNob3VsZEJlQ29uc3VsdGVk
ICYmICF1c2VyU2hvdWxkR3JhbnRBY2Nlc3MpCiAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VU
b1RvcCgiUEFTUyBXaW5kb3cgd2FzIGJsb2NrZWQgZnJvbSBvcGVuaW5nLiIpOwotICAgICAgICAg
ICAgfSBlbHNlIGlmICghdXNlclNob3VsZEdyYW50QWNjZXNzKSB7Ci0gICAgICAgICAgICAgICAg
bWVzc2FnZVRvVG9wKCJXaW5kb3cgd2FzIG9wZW5lZCBldmVuIHRob3VnaCB0aGUgdXNlciBkaWQg
bm90IGdyYW50IHBlcm1pc3Npb24uIik7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoIXVzZXJT
aG91bGRCZUNvbnN1bHRlZCAmJiAhdXNlclNob3VsZEdyYW50QWNjZXNzKQorICAgICAgICAgICAg
ICAgICAgICBtZXNzYWdlVG9Ub3AoIkZBSUwgV2luZG93IHdhcyBibG9ja2VkIGZyb20gb3Blbmlu
ZyBldmVuIHRob3VnaCB0aGUgdXNlciB3YXMgbmV2ZXIgY29uc3VsdGVkL3Byb21wdGVkLiIpOwor
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVRvVG9wKCJG
QUlMIENvbmZsaWN0aW5nIGluc3RydWN0aW9uczogIXVzZXJTaG91bGRCZUNvbnN1bHRlZCAmJiB1
c2VyU2hvdWxkR3JhbnRBY2Nlc3MgLiIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nl
c3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtaWZyYW1lLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1h
Y2Nlc3MtaWZyYW1lLmh0bWwKaW5kZXggNmFmZDZjOGIxYjJmZTE0ZDdmMTQ3YTRmNmUxODc1ZjEw
NzJlZWEwNy4uNTQzMTMyYzQ2NjExNjA4MmFiMTE3YjNlZjIwODI1YjBhNTI0NDRhZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9yZXF1
ZXN0LXN0b3JhZ2UtYWNjZXNzLWlmcmFtZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUu
aHRtbApAQCAtOCw5ICs4LDYgQEAKICAgICAgICAgY29uc3QgaXNTYW1lT3JpZ2luSWZyYW1lID0g
aGFzaEFyZ3VtZW50c1szXSA9PT0gImlzU2FtZU9yaWdpbklmcmFtZSI7CiAgICAgICAgIGNvbnN0
IG9yaWdpbklzTnVsbCA9IGhhc2hBcmd1bWVudHNbNF0gPT09ICJvcmlnaW5Jc051bGwiOwogCi0g
ICAgICAgIGlmIChpbnRlcm5hbHMgJiYgdXNlclNob3VsZEdyYW50QWNjZXNzKQotICAgICAgICAg
ICAgICAgIGludGVybmFscy5zZXRVc2VyR3JhbnRzU3RvcmFnZUFjY2Vzcyh0cnVlKTsKLQogICAg
ICAgICB2YXIgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXNvbHZlZDsKIAogICAgICAgICBmdW5jdGlv
biBtZXNzYWdlVG9Ub3AobWVzc2FnZVByZWZpeCwgZmV0Y2hEYXRhKSB7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3Rv
cmFnZS1hY2Nlc3Mtd2l0aG91dC11c2VyLWdlc3R1cmUtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nl
c3Mtd2l0aG91dC11c2VyLWdlc3R1cmUtaWZyYW1lLmh0bWwKaW5kZXggNjRmZDRhNGZhMDAxNzIw
NzlkZjE4N2Y2NTk5NTZjOGUxMjg0ZTM2MS4uYTdiNDBjODUzNGU2NDI3NWYzZDhmMjQ3NTdiZWNl
ZjNhNGU5MGIxZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNj
ZXNzL3Jlc291cmNlcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXdpdGhvdXQtdXNlci1nZXN0dXJl
LWlmcmFtZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9y
ZXNvdXJjZXMvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy13aXRob3V0LXVzZXItZ2VzdHVyZS1pZnJh
bWUuaHRtbApAQCAtNiw5ICs2LDYgQEAKICAgICAgICAgY29uc3QgdXNlclNob3VsZEJlQ29uc3Vs
dGVkID0gaGFzaEFyZ3VtZW50c1sxXSA9PT0gInVzZXJTaG91bGRCZUNvbnN1bHRlZCI7CiAgICAg
ICAgIGNvbnN0IHBvbGljeVNob3VsZEdyYW50QWNjZXNzID0gaGFzaEFyZ3VtZW50c1syXSA9PT0g
InBvbGljeVNob3VsZEdyYW50QWNjZXNzIjsKIAotICAgICAgICBpZiAoaW50ZXJuYWxzICYmIHVz
ZXJTaG91bGRHcmFudEFjY2VzcykKLSAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0VXNlckdy
YW50c1N0b3JhZ2VBY2Nlc3ModHJ1ZSk7Ci0KICAgICAgICAgdmFyIHJlcXVlc3RTdG9yYWdlQWNj
ZXNzUmVzb2x2ZWQ7CiAKICAgICAgICAgZnVuY3Rpb24gbWFrZVJlcXVlc3RXaXRob3V0VXNlckdl
c3R1cmUoKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nl
c3MvcmVzb3VyY2VzL3NlbGYtbmF2aWdhdGluZy1mcmFtZS1hZnRlci1ncmFudGVkLWFjY2Vzcy5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9zZWxm
LW5hdmlnYXRpbmctZnJhbWUtYWZ0ZXItZ3JhbnRlZC1hY2Nlc3MuaHRtbAppbmRleCBkYmRhN2Vh
MjQzMGI2ODdhY2ZkNTdmZTM1M2JjMDQ0OGI4NWEzN2QzLi41MjU2NWMyYzUxYzYzM2U5YWMyNWZl
YjYxOGI1YjdiZDYzZmQ1ZDllIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0
b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3NlbGYtbmF2aWdhdGluZy1mcmFtZS1hZnRlci1ncmFudGVk
LWFjY2Vzcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9y
ZXNvdXJjZXMvc2VsZi1uYXZpZ2F0aW5nLWZyYW1lLWFmdGVyLWdyYW50ZWQtYWNjZXNzLmh0bWwK
QEAgLTcsOSArNyw2IEBACiAgICAgICAgIGNvbnN0IHBvbGljeVNob3VsZEdyYW50QWNjZXNzID0g
aGFzaEFyZ3VtZW50c1syXSA9PT0gInBvbGljeVNob3VsZEdyYW50QWNjZXNzIjsKICAgICAgICAg
Y29uc3Qgc2FtZVNpdGVOYXZpZ2F0aW9uID0gaGFzaEFyZ3VtZW50c1szXSA9PT0gInNhbWVTaXRl
TmF2aWdhdGlvbiI7CiAKLSAgICAgICAgaWYgKGludGVybmFscyAmJiB1c2VyU2hvdWxkR3JhbnRB
Y2Nlc3MpCi0gICAgICAgICAgICBpbnRlcm5hbHMuc2V0VXNlckdyYW50c1N0b3JhZ2VBY2Nlc3Mo
dHJ1ZSk7Ci0KICAgICAgICAgdmFyIHJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzb2x2ZWQ7CiAKICAg
ICAgICAgZnVuY3Rpb24gbWFrZVJlcXVlc3RXaXRoVXNlckdlc3R1cmUoKSB7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZjRjMTkwZGFmYzc5
ZTUzMjJhMGIxZGNlYTJmODNlNzJlNjAyYmNlMS4uNjFlM2I0ZGI5Yjk4OWIzOGEwNWJmN2I2YjUy
MzllYmRiNzc4OGY3YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9U
ZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtNzI2LDYgKzcyNiw5IEBAIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy91c2VyLWludGVyYWN0aW9uLXJlcG9ydGVkLWFmdGVyLXdlYnNpdGUtZGF0YS1yCiBb
IEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50
LWFjY2Vzcy10aGVuLW5hdmlnYXRlLXNhbWUtc2l0ZS1zaG91bGQtaGF2ZS1hY2Nlc3MuaHRtbCBb
IFBhc3MgXQogWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9kZW55LXN0
b3JhZ2UtYWNjZXNzLXVuZGVyLW9wZW5lci5odG1sIFsgUGFzcyBdCiBbIEhpZ2hTaWVycmErIF0g
aHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnktc3RvcmFnZS1hY2Nlc3MtdW5kZXItb3BlbmVy
LWlmLWF1dG8tZGlzbWlzcy5odG1sIFsgUGFzcyBdCitbIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0
cy9zdG9yYWdlQWNjZXNzL2dyYW50LXdpdGgtcHJvbXB0LXByZXNlcnZlcy1nZXN0dXJlLmh0bWwg
WyBQYXNzIF0KK1sgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZGVueS13
aXRoLXByb21wdC1kb2VzLW5vdC1wcmVzZXJ2ZS1nZXN0dXJlLmh0bWwgWyBTa2lwIF0KK1sgSGln
aFNpZXJyYSsgXSBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZGVueS13aXRob3V0LXByb21wdC1w
cmVzZXJ2ZXMtZ2VzdHVyZS5odG1sIFsgUGFzcyBdCiAKICMgQXMgb2YgaHR0cHM6Ly90cmFjLndl
YmtpdC5vcmcvY2hhbmdlc2V0LzIyNzc2MiB0aGUgdGltZXN0YW1wUmVzb2x1dGlvbiBpcyBqdXN0
IDUgc2Vjb25kcyB3aGljaCBtYWtlcyB0aGlzIHRlc3QgZmxha3kKIGh0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy91c2VyLWludGVyYWN0aW9uLW9ubHktcmVwb3J0ZWQtb25jZS13aXRo
aW4tc2hvcnQtcGVyaW9kLW9mLXRpbWUuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>